From 4734ecf5fb38aeaf2fceaefa64564eecb9cc900e Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 5 Dec 2013 17:38:32 +0100 Subject: [PATCH] dracut-034-62.git20131205 - fixed PATH shortener - also install /etc/system-fips in the initramfs - nbd, do not fail in hostonly mode - add ohci-pci to the list of hardcoded modules - lvm: do not run pvscan for lvmetad - network fixes - skip crypt swaps with password files - fixed i18n --- 0024-dracut.sh-fixed-PATH-shortener.patch | 22 + ....modules.7.asc-removed-empty-section.patch | 21 + ...all-etc-system-fips-in-the-initramfs.patch | 20 + ....sh-Avoid-loading-unnecessary-32-bit.patch | 43 ++ ...csi-nbd-do-not-fail-in-hostonly-mode.patch | 36 ++ ...xit-the-initqueue-if-systemd-asks-a-.patch | 27 ++ ...un-xz-and-lzma-with-multiple-threads.patch | 35 ++ ...dd-ohci-pci-to-the-list-of-forced-mo.patch | 30 ++ ...do-not-run-pvscan-for-lvmetad-update.patch | 36 ++ 0033-fips-fix-RHEV-vmlinuz-check.patch | 39 ++ ....asc-document-server-ip-of-ip-parame.patch | 28 ++ ...s_type-if-block-device-exists-return.patch | 31 ++ ....sh-wait_for_if_up-wait-for-state-UP.patch | 23 ++ ...work-net-lib.sh-iface_has_link-fixup.patch | 73 ++++ ...before-doing-dhcp-check-if-the-link-.patch | 25 ++ ...ib.sh-wait_for_dev-relax-requirement.patch | 39 ++ 0040-resume-autoconf-resume.patch | 37 ++ 0041-resume-no-more-autoresume.patch | 98 +++++ ...skip-crypt-swaps-with-password-files.patch | 22 + ....sh-do-not-force-require-modules.bui.patch | 41 ++ ...n.sh-fixed-vconsole.conf-locale.conf.patch | 56 +++ ...asd-Install-kernel-modules-only-once.patch | 34 ++ ...all-module-if-normalize_dasd_arg-is-.patch | 25 ++ ...dasd_mod-make-dasd_cio_free-optional.patch | 38 ++ 0048-95zfcp-Make-installation-optional.patch | 35 ++ 0049-95znet-Make-installation-optional.patch | 25 ++ 0050-Add-DASD-configuration-for-SuSE.patch | 152 +++++++ 0051-Add-zfcp-scripts-for-SUSE.patch | 118 ++++++ 0052-Make-logfile-configurable.patch | 67 ++++ ...d-SUSE-compability-wrapper-for-dracu.patch | 375 ++++++++++++++++++ ...asc-Add-manpage-for-SUSE-compat-mkin.patch | 136 +++++++ 0055-Fixup-keymap-setting-for-openSUSE.patch | 26 ++ 0056-Fixup-script-permissions.patch | 46 +++ ...-shebang-from-shell-completion-files.patch | 34 ++ ...n-tools-only-when-needed-in-hostonly.patch | 27 ++ ...18n_install_all-to-install-everythin.patch | 127 ++++++ 0060-dracut.spec-add-new-modules.patch | 24 ++ 0061-dracut.spec-remove-suse-man-pages.patch | 35 ++ dracut.spec | 61 ++- 39 files changed, 2163 insertions(+), 4 deletions(-) create mode 100644 0024-dracut.sh-fixed-PATH-shortener.patch create mode 100644 0025-dracut.modules.7.asc-removed-empty-section.patch create mode 100644 0026-fips-also-install-etc-system-fips-in-the-initramfs.patch create mode 100644 0027-dracut-functions.sh-Avoid-loading-unnecessary-32-bit.patch create mode 100644 0028-iscsi-nbd-do-not-fail-in-hostonly-mode.patch create mode 100644 0029-systemd-do-not-exit-the-initqueue-if-systemd-asks-a-.patch create mode 100644 0030-Run-xz-and-lzma-with-multiple-threads.patch create mode 100644 0031-kernel-modules-add-ohci-pci-to-the-list-of-forced-mo.patch create mode 100644 0032-lvm-do-not-run-pvscan-for-lvmetad-update.patch create mode 100644 0033-fips-fix-RHEV-vmlinuz-check.patch create mode 100644 0034-dracut.cmdline.7.asc-document-server-ip-of-ip-parame.patch create mode 100644 0035-dracut.sh-_get_fs_type-if-block-device-exists-return.patch create mode 100644 0036-network-net-lib.sh-wait_for_if_up-wait-for-state-UP.patch create mode 100644 0037-network-net-lib.sh-iface_has_link-fixup.patch create mode 100644 0038-network-ifup.sh-before-doing-dhcp-check-if-the-link-.patch create mode 100644 0039-base-dracut-lib.sh-wait_for_dev-relax-requirement.patch create mode 100644 0040-resume-autoconf-resume.patch create mode 100644 0041-resume-no-more-autoresume.patch create mode 100644 0042-dracut.sh-skip-crypt-swaps-with-password-files.patch create mode 100644 0043-dracut-functions.sh-do-not-force-require-modules.bui.patch create mode 100644 0044-10i18n-parse-i18n.sh-fixed-vconsole.conf-locale.conf.patch create mode 100644 0045-95dasd-Install-kernel-modules-only-once.patch create mode 100644 0046-95dasd-Only-install-module-if-normalize_dasd_arg-is-.patch create mode 100644 0047-95dasd_mod-make-dasd_cio_free-optional.patch create mode 100644 0048-95zfcp-Make-installation-optional.patch create mode 100644 0049-95znet-Make-installation-optional.patch create mode 100644 0050-Add-DASD-configuration-for-SuSE.patch create mode 100644 0051-Add-zfcp-scripts-for-SUSE.patch create mode 100644 0052-Make-logfile-configurable.patch create mode 100644 0053-mkinitrd-suse-Add-SUSE-compability-wrapper-for-dracu.patch create mode 100644 0054-mkinitrd-suse.8.asc-Add-manpage-for-SUSE-compat-mkin.patch create mode 100644 0055-Fixup-keymap-setting-for-openSUSE.patch create mode 100644 0056-Fixup-script-permissions.patch create mode 100644 0057-Remove-shebang-from-shell-completion-files.patch create mode 100644 0058-lvm-install-thin-tools-only-when-needed-in-hostonly.patch create mode 100644 0059-i18n-introduce-i18n_install_all-to-install-everythin.patch create mode 100644 0060-dracut.spec-add-new-modules.patch create mode 100644 0061-dracut.spec-remove-suse-man-pages.patch diff --git a/0024-dracut.sh-fixed-PATH-shortener.patch b/0024-dracut.sh-fixed-PATH-shortener.patch new file mode 100644 index 0000000..b295af4 --- /dev/null +++ b/0024-dracut.sh-fixed-PATH-shortener.patch @@ -0,0 +1,22 @@ +From cf3fd99e72745b894a5c787277f90305f2ea1215 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Sat, 2 Nov 2013 13:14:40 +0100 +Subject: [PATCH] dracut.sh: fixed PATH shortener + +--- + dracut.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dracut.sh b/dracut.sh +index ae792c4..03472ba 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -533,7 +533,7 @@ for i in /usr/sbin /sbin /usr/bin /bin; do + if [ -L "$i" ]; then + rl=$(readlink -f $i) + fi +- if [[ "$NPATH" != "*:$rl*" ]] ; then ++ if [[ "$NPATH" != *:$rl* ]] ; then + NPATH+=":$rl" + fi + done diff --git a/0025-dracut.modules.7.asc-removed-empty-section.patch b/0025-dracut.modules.7.asc-removed-empty-section.patch new file mode 100644 index 0000000..8494e3a --- /dev/null +++ b/0025-dracut.modules.7.asc-removed-empty-section.patch @@ -0,0 +1,21 @@ +From 095fa1559178522029ad854017a0c83d4979e876 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Sat, 2 Nov 2013 13:20:32 +0100 +Subject: [PATCH] dracut.modules.7.asc: removed empty section + +--- + dracut.modules.7.asc | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/dracut.modules.7.asc b/dracut.modules.7.asc +index 4cb2aa1..17acdb4 100644 +--- a/dracut.modules.7.asc ++++ b/dracut.modules.7.asc +@@ -10,7 +10,6 @@ dracut.modules - dracut modules + + DESCRIPTION + ----------- +-== dracut Components + + dracut uses a modular system to build and extend the initramfs image. All + modules are located in _/usr/lib/dracut/modules.d_ or in _/modules.d_. diff --git a/0026-fips-also-install-etc-system-fips-in-the-initramfs.patch b/0026-fips-also-install-etc-system-fips-in-the-initramfs.patch new file mode 100644 index 0000000..4f334c0 --- /dev/null +++ b/0026-fips-also-install-etc-system-fips-in-the-initramfs.patch @@ -0,0 +1,20 @@ +From 185e940e27eb8c1658556d17b30ac60a16894502 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 4 Nov 2013 17:29:15 +0100 +Subject: [PATCH] fips: also install /etc/system-fips in the initramfs + +--- + modules.d/01fips/module-setup.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index fb5a5cd..a4081dc 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -45,5 +45,6 @@ install() { + libssl.so 'hmaccalc/sha512hmac.hmac' libssl.so.10 + + inst_multiple -o prelink ++ inst_simple /etc/system-fips + } + diff --git a/0027-dracut-functions.sh-Avoid-loading-unnecessary-32-bit.patch b/0027-dracut-functions.sh-Avoid-loading-unnecessary-32-bit.patch new file mode 100644 index 0000000..f03ac35 --- /dev/null +++ b/0027-dracut-functions.sh-Avoid-loading-unnecessary-32-bit.patch @@ -0,0 +1,43 @@ +From 1d50dfe6025126c38b1d23815360bd48e9e8c24c Mon Sep 17 00:00:00 2001 +From: Colin Guthrie +Date: Sat, 2 Nov 2013 11:26:30 +0000 +Subject: [PATCH] dracut-functions.sh: Avoid loading unnecessary 32-bit + libraries for 64-bit initrds + +Due to the 'inst_libdir_file "libnss_files*"' in the udev-rules module +this caues the /usr/lib/libnss_files-2.18.so* to be included. This is a +32-bit library and pulls in a 32-bit version of glibc also even on a +64-bit system. + +This is due to the fact that ldconfig -pN will print [/usr]/lib paths +from the cache as well as [/usr]/lib64. As we handle these paths +specifically we should ignore these results from the cache. + +Also there was a missing space when appending the ldconfig paths +onto our list meaning the last builtin and first ldconfig path +were unusable. +--- + dracut-functions.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 38095ba..2872516 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -65,6 +65,7 @@ ldconfig_paths() + printf "%s\n" ${d%/*}; + done + ); do ++ [[ "$i" = "/lib" || "$i" = "/usr/lib" || "$i" = "/lib64" || "$i" = "/usr/lib64" ]] && continue + a["$i"]=1; + done; + printf "%s\n" ${!a[@]} +@@ -81,7 +82,7 @@ if ! [[ $libdirs ]] ; then + [[ -d /usr/lib ]] && libdirs+=" /usr/lib" + fi + +- libdirs+="$(ldconfig_paths)" ++ libdirs+=" $(ldconfig_paths)" + + export libdirs + fi diff --git a/0028-iscsi-nbd-do-not-fail-in-hostonly-mode.patch b/0028-iscsi-nbd-do-not-fail-in-hostonly-mode.patch new file mode 100644 index 0000000..84f1a44 --- /dev/null +++ b/0028-iscsi-nbd-do-not-fail-in-hostonly-mode.patch @@ -0,0 +1,36 @@ +From c2ab99093817d4694c0360b77845b8f2a8a10caf Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 11 Nov 2013 16:57:09 +0100 +Subject: [PATCH] iscsi,nbd: do not fail in hostonly mode + +--- + modules.d/95iscsi/module-setup.sh | 2 +- + modules.d/95nbd/module-setup.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh +index c8051bd..8379f4b 100755 +--- a/modules.d/95iscsi/module-setup.sh ++++ b/modules.d/95iscsi/module-setup.sh +@@ -24,7 +24,7 @@ check() { + + [[ $hostonly ]] || [[ $mount_needs ]] && { + pushd . >/dev/null +- for_each_host_dev_and_slaves is_iscsi || return 1 ++ for_each_host_dev_and_slaves is_iscsi || return 255 + popd >/dev/null + } + return 0 +diff --git a/modules.d/95nbd/module-setup.sh b/modules.d/95nbd/module-setup.sh +index ac30823..37ace21 100755 +--- a/modules.d/95nbd/module-setup.sh ++++ b/modules.d/95nbd/module-setup.sh +@@ -15,7 +15,7 @@ check() { + + _rootdev=$(find_root_block_device) + [[ -b /dev/block/$_rootdev ]] || return 1 +- check_block_and_slaves is_nbd "$_rootdev" || return 1 ++ check_block_and_slaves is_nbd "$_rootdev" || return 255 + } + + return 0 diff --git a/0029-systemd-do-not-exit-the-initqueue-if-systemd-asks-a-.patch b/0029-systemd-do-not-exit-the-initqueue-if-systemd-asks-a-.patch new file mode 100644 index 0000000..ecd10ac --- /dev/null +++ b/0029-systemd-do-not-exit-the-initqueue-if-systemd-asks-a-.patch @@ -0,0 +1,27 @@ +From 7e4f74f5040fc3f4e7646695b54c5c11b0b95c62 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 11 Nov 2013 16:57:32 +0100 +Subject: [PATCH] systemd: do not exit the initqueue, if systemd asks a + password + +this prevents bailing out the initqueue, while passwords are still to be +asked +--- + modules.d/98systemd/dracut-initqueue.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/modules.d/98systemd/dracut-initqueue.sh b/modules.d/98systemd/dracut-initqueue.sh +index d7ebf2b..64e8154 100755 +--- a/modules.d/98systemd/dracut-initqueue.sh ++++ b/modules.d/98systemd/dracut-initqueue.sh +@@ -52,6 +52,10 @@ while :; do + # no more udev jobs and queues empty. + sleep 0.5 + ++ for i in /run/systemd/ask-password/ask.*; do ++ [ -e "$i" ] && continue ++ done ++ + if [ $main_loop -gt $((2*$RDRETRY/3)) ]; then + for job in $hookdir/initqueue/timeout/*.sh; do + [ -e "$job" ] || break diff --git a/0030-Run-xz-and-lzma-with-multiple-threads.patch b/0030-Run-xz-and-lzma-with-multiple-threads.patch new file mode 100644 index 0000000..2cb641f --- /dev/null +++ b/0030-Run-xz-and-lzma-with-multiple-threads.patch @@ -0,0 +1,35 @@ +From a3bfaa191958c4b70d6c674f972c3b911f8b1bfa Mon Sep 17 00:00:00 2001 +From: Vratislav Podzimek +Date: Wed, 13 Nov 2013 13:20:39 +0100 +Subject: [PATCH] Run 'xz' and 'lzma' with multiple threads + +This speeds up compression a lot on multicore systems. + +https://bugzilla.redhat.com/show_bug.cgi?id=1029786 + +[Edited-by: Harald Hoyer: use getconf for cpu_count] +--- + dracut.sh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index 03472ba..bce2662 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -693,12 +693,14 @@ stdloglvl=$((stdloglvl + verbosity_mod_l)) + # eliminate IFS hackery when messing with fw_dir + fw_dir=${fw_dir//:/ } + ++cpu_count=$(getconf _NPROCESSORS_ONLN) ++ + # handle compression options. + [[ $compress ]] || compress="gzip" + case $compress in + bzip2) compress="bzip2 -9";; +- lzma) compress="lzma -9";; +- xz) compress="xz --check=crc32 --lzma2=dict=1MiB";; ++ lzma) compress="lzma -9 ${cpu_count:+-T$cpu_count}";; ++ xz) compress="xz --check=crc32 --lzma2=dict=1MiB ${cpu_count:+-T$cpu_count}";; + gzip) compress="gzip -9"; command -v pigz > /dev/null 2>&1 && compress="pigz -9";; + lzo) compress="lzop -9";; + lz4) compress="lz4 -9";; diff --git a/0031-kernel-modules-add-ohci-pci-to-the-list-of-forced-mo.patch b/0031-kernel-modules-add-ohci-pci-to-the-list-of-forced-mo.patch new file mode 100644 index 0000000..1351e71 --- /dev/null +++ b/0031-kernel-modules-add-ohci-pci-to-the-list-of-forced-mo.patch @@ -0,0 +1,30 @@ +From 28609baf6e9581ea97c4550340e2a6031c1b6fbd Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 14 Nov 2013 10:07:04 +0100 +Subject: [PATCH] kernel-modules: add ohci-pci to the list of forced module + installs + +--- + modules.d/90kernel-modules/module-setup.sh | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index 2100336..d65e92b 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -36,9 +36,12 @@ installkernel() { + return 0 + } + +- hostonly='' instmods sr_mod sd_mod scsi_dh ata_piix \ +- ehci-hcd ehci-pci ehci-platform ohci-hcd uhci-hcd xhci-hcd hid_generic \ +- unix ++ hostonly='' instmods \ ++ sr_mod sd_mod scsi_dh ata_piix hid_generic unix \ ++ ehci-hcd ehci-pci ehci-platform \ ++ ohci-hcd ohci-pci \ ++ uhci-hcd \ ++ xhci-hcd + + instmods yenta_socket scsi_dh_rdac scsi_dh_emc \ + atkbd i8042 usbhid hid-apple hid-sunplus hid-cherry hid-logitech \ diff --git a/0032-lvm-do-not-run-pvscan-for-lvmetad-update.patch b/0032-lvm-do-not-run-pvscan-for-lvmetad-update.patch new file mode 100644 index 0000000..c424b93 --- /dev/null +++ b/0032-lvm-do-not-run-pvscan-for-lvmetad-update.patch @@ -0,0 +1,36 @@ +From 297b8edc050715d563d54cfa34e42bf5909b9a7b Mon Sep 17 00:00:00 2001 +From: Peter Rajnoha +Date: Mon, 25 Nov 2013 14:38:00 +0100 +Subject: [PATCH] lvm: do not run pvscan for lvmetad update + +The lvmetad daemon is not yet running in initramfs so there's no +need to run pvscan (or instantiate any lvm2-pvscan systemd service). +If pvscan was called in this case (either directly or via systemd +instantiated service), it would fail because there's no lvmetad +daemon to update. This could cause confusion, especially in systemd +instantiated service which is run only once! +--- + modules.d/90lvm/module-setup.sh | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh +index 87374da..a220a55 100755 +--- a/modules.d/90lvm/module-setup.sh ++++ b/modules.d/90lvm/module-setup.sh +@@ -76,6 +76,16 @@ install() { + fi + + inst_rules 11-dm-lvm.rules 69-dm-lvm-metad.rules ++ ++ # Do not run lvmetad update via pvscan in udev rule - lvmetad is not running yet in dracut! ++ if grep -q SYSTEMD_WANTS ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules; then ++ sed -i -e 's/^ENV{SYSTEMD_ALIAS}=.*/# No LVM pvscan in dracut - lvmetad is not running yet/' ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules ++ sed -i -e 's/^ENV{ID_MODEL}=.*//' ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules ++ sed -i -e 's/^ENV{SYSTEMD_WANTS}=.*//' ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules ++ else ++ sed -i -e 's/.*lvm pvscan.*/# No LVM pvscan for in dracut - lvmetad is not running yet/' ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules ++ fi ++ + # Gentoo ebuild for LVM2 prior to 2.02.63-r1 doesn't install above rules + # files, but provides the one below: + inst_rules 64-device-mapper.rules diff --git a/0033-fips-fix-RHEV-vmlinuz-check.patch b/0033-fips-fix-RHEV-vmlinuz-check.patch new file mode 100644 index 0000000..6388de3 --- /dev/null +++ b/0033-fips-fix-RHEV-vmlinuz-check.patch @@ -0,0 +1,39 @@ +From 928da5744721842d3e02151323c3a1357baf0032 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 8 Nov 2013 15:06:18 +0100 +Subject: [PATCH] fips: fix RHEV vmlinuz check + +--- + modules.d/01fips/fips.sh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh +index 98dd1c2..7fa48f1 100755 +--- a/modules.d/01fips/fips.sh ++++ b/modules.d/01fips/fips.sh +@@ -60,8 +60,8 @@ do_rhevh_check() + KERNEL=$(uname -r) + kpath=${1} + +- # If we're on RHEV-H, the kernel is in /dev/.initramfs/live/vmlinuz0 +- HMAC_SUM_ORIG=$(cat /boot/.vmlinuz-${KERNEL}.hmac | while read a b; do printf "%s\n" $a; done) ++ # If we're on RHEV-H, the kernel is in /run/initramfs/live/vmlinuz0 ++ HMAC_SUM_ORIG=$(cat $NEWROOT/boot/.vmlinuz-${KERNEL}.hmac | while read a b; do printf "%s\n" $a; done) + HMAC_SUM_CALC=$(sha512hmac $kpath | while read a b; do printf "%s\n" $a; done || return 1) + if [ -z "$HMAC_SUM_ORIG" ] || [ -z "$HMAC_SUM_CALC" ] || [ "${HMAC_SUM_ORIG}" != "${HMAC_SUM_CALC}" ]; then + warn "HMAC sum mismatch" +@@ -111,10 +111,10 @@ do_fips() + rmmod tcrypt + + info "Checking integrity of kernel" +- if [ -e "$NEWROOT/dev/.initramfs/live/vmlinuz0" ]; then +- do_rhevh_check "$NEWROOT/dev/.initramfs/live/vmlinuz0" || return 1 +- elif [ -e "$NEWROOT/dev/.initramfs/live/isolinux/vmlinuz0" ]; then +- do_rhevh_check "$NEWROOT/dev/.initramfs/live/isolinux/vmlinuz0" || return 1 ++ if [ -e "/run/initramfs/live/vmlinuz0" ]; then ++ do_rhevh_check /run/initramfs/live/vmlinuz0 || return 1 ++ elif [ -e "/run/initramfs/live/isolinux/vmlinuz0" ]; then ++ do_rhevh_check /run/initramfs/live/isolinux/vmlinuz0 || return 1 + else + sha512hmac -c "/boot/.vmlinuz-${KERNEL}.hmac" || return 1 + fi diff --git a/0034-dracut.cmdline.7.asc-document-server-ip-of-ip-parame.patch b/0034-dracut.cmdline.7.asc-document-server-ip-of-ip-parame.patch new file mode 100644 index 0000000..ae82d5a --- /dev/null +++ b/0034-dracut.cmdline.7.asc-document-server-ip-of-ip-parame.patch @@ -0,0 +1,28 @@ +From e38e73d5a683ce93146c147305278b9175def3a0 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 2 Dec 2013 10:30:52 +0100 +Subject: [PATCH] dracut.cmdline.7.asc: document "server-ip" of "ip=" parameter + +--- + dracut.cmdline.7.asc | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index 19bfb93..6a5fc8f 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -444,10 +444,12 @@ cannot be used in conjunction with the **ifname** argument for the + same . + ===================== + +-**ip=**____:____:____:____:____:____:__{none|off|dhcp|on|any|dhcp6|auto6|ibft}__:[:[____][:____]]:: ++**ip=**____:[____]:____:____:____:____:__{none|off|dhcp|on|any|dhcp6|auto6|ibft}__:[:[____][:____]]:: + explicit network configuration. If you want do define a IPv6 address, put it + in brackets (e.g. [2001:DB8::1]). This parameter can be specified multiple +- times. ++ times. ____ is optional and is the address of the remote endpoint ++ for pointopoint interfaces and it may be followed by a slash and a decimal number, ++ encoding the network prefix length. + + + ===================== + ::: optionally **set** on the . This diff --git a/0035-dracut.sh-_get_fs_type-if-block-device-exists-return.patch b/0035-dracut.sh-_get_fs_type-if-block-device-exists-return.patch new file mode 100644 index 0000000..02f6431 --- /dev/null +++ b/0035-dracut.sh-_get_fs_type-if-block-device-exists-return.patch @@ -0,0 +1,31 @@ +From e41f3f902512a91a286e14d6ffa52206c70ea5f6 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 2 Dec 2013 10:32:00 +0100 +Subject: [PATCH] dracut.sh:_get_fs_type() if block device exists return early + +even, if no ID_FS_TYPE was found, return if the block device exists +--- + dracut.sh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index bce2662..177b813 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -987,12 +987,12 @@ unset rest + + _get_fs_type() { + [[ $1 ]] || return +- if [[ -b /dev/block/$1 ]] && ID_FS_TYPE=$(get_fs_env "/dev/block/$1"); then +- host_fs_types["$(readlink -f "/dev/block/$1")"]="$ID_FS_TYPE" ++ if [[ -b /dev/block/$1 ]]; then ++ ID_FS_TYPE=$(get_fs_env "/dev/block/$1") && host_fs_types["$(readlink -f "/dev/block/$1")"]="$ID_FS_TYPE" + return 1 + fi +- if [[ -b $1 ]] && ID_FS_TYPE=$(get_fs_env "$1"); then +- host_fs_types["$(readlink -f "$1")"]="$ID_FS_TYPE" ++ if [[ -b $1 ]]; then ++ ID_FS_TYPE=$(get_fs_env "$1") && host_fs_types["$(readlink -f "$1")"]="$ID_FS_TYPE" + return 1 + fi + if fstype=$(find_dev_fstype "$1"); then diff --git a/0036-network-net-lib.sh-wait_for_if_up-wait-for-state-UP.patch b/0036-network-net-lib.sh-wait_for_if_up-wait-for-state-UP.patch new file mode 100644 index 0000000..2a7df52 --- /dev/null +++ b/0036-network-net-lib.sh-wait_for_if_up-wait-for-state-UP.patch @@ -0,0 +1,23 @@ +From 56ee31ccfec50f40bade2127eb1fae041a81f16a Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 2 Dec 2013 10:34:18 +0100 +Subject: [PATCH] network/net-lib.sh:wait_for_if_up() wait for "state UP" + +really wait for "state UP", otherwise it returns earlier than we want +--- + modules.d/40network/net-lib.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index 88e72ec..0aa312a 100644 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -443,7 +443,7 @@ wait_for_if_up() { + local li + while [ $cnt -lt 200 ]; do + li=$(ip -o link show up dev $1) +- [ -n "$li" ] && return 0 ++ [ -n "$li" ] && [ -z "${li##*state UP*}" ] && return 0 + sleep 0.1 + cnt=$(($cnt+1)) + done diff --git a/0037-network-net-lib.sh-iface_has_link-fixup.patch b/0037-network-net-lib.sh-iface_has_link-fixup.patch new file mode 100644 index 0000000..eb69916 --- /dev/null +++ b/0037-network-net-lib.sh-iface_has_link-fixup.patch @@ -0,0 +1,73 @@ +From 7c8da72c11b74a1759e0ebbabe003d69a4459114 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 2 Dec 2013 10:36:42 +0100 +Subject: [PATCH] network/net-lib.sh:iface_has_link() fixup + +Just echo'ing the flags IFF_UP|IFF_RUNNING does _not_ reflect the +carrier state immediately. So wait for it to really show up. +--- + modules.d/40network/net-lib.sh | 47 +++++++++++++++++++++--------------------- + 1 file changed, 23 insertions(+), 24 deletions(-) + +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index 0aa312a..7544401 100644 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -28,30 +28,6 @@ iface_for_mac() { + done + } + +-iface_has_link() { +- local interface="$1" flags="" +- [ -n "$interface" ] || return 2 +- interface="/sys/class/net/$interface" +- [ -d "$interface" ] || return 2 +- flags=$(cat $interface/flags) +- echo $(($flags|0x41)) > $interface/flags # 0x41: IFF_UP|IFF_RUNNING +- [ "$(cat $interface/carrier)" = 1 ] || return 1 +- # XXX Do we need to reset the flags here? anaconda never bothered.. +-} +- +-find_iface_with_link() { +- local iface_path="" iface="" +- for iface_path in /sys/class/net/*; do +- iface=${iface_path##*/} +- str_starts "$iface" "lo" && continue +- if iface_has_link $iface; then +- echo "$iface" +- return 0 +- fi +- done +- return 1 +-} +- + # get the iface name for the given identifier - either a MAC, IP, or iface name + iface_name() { + case $1 in +@@ -483,3 +459,26 @@ type hostname >/dev/null 2>&1 || \ + hostname() { + cat /proc/sys/kernel/hostname + } ++ ++iface_has_link() { ++ local interface="$1" flags="" ++ [ -n "$interface" ] || return 2 ++ interface="/sys/class/net/$interface" ++ [ -d "$interface" ] || return 2 ++ linkup "$1" ++ [ "$(cat $interface/carrier)" = 1 ] || return 1 ++ # XXX Do we need to reset the flags here? anaconda never bothered.. ++} ++ ++find_iface_with_link() { ++ local iface_path="" iface="" ++ for iface_path in /sys/class/net/*; do ++ iface=${iface_path##*/} ++ str_starts "$iface" "lo" && continue ++ if iface_has_link $iface; then ++ echo "$iface" ++ return 0 ++ fi ++ done ++ return 1 ++} diff --git a/0038-network-ifup.sh-before-doing-dhcp-check-if-the-link-.patch b/0038-network-ifup.sh-before-doing-dhcp-check-if-the-link-.patch new file mode 100644 index 0000000..c181e4f --- /dev/null +++ b/0038-network-ifup.sh-before-doing-dhcp-check-if-the-link-.patch @@ -0,0 +1,25 @@ +From 271cd19dbe895c24b1f70fa5c6bbecace3b97f4d Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 2 Dec 2013 10:38:21 +0100 +Subject: [PATCH] network/ifup.sh: before doing dhcp, check, if the link has a + carrier + +--- + modules.d/40network/ifup.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index 9f6f449..2edcfe6 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -87,6 +87,10 @@ do_dhcp() { + # dhclient-script will mark the netif up and generate the online + # event for nfsroot + # XXX add -V vendor class and option parsing per kernel ++ if ! iface_has_link $netif; then ++ echo "No carrier detected" ++ return 1 ++ fi + echo "Starting dhcp for interface $netif" + dhclient "$@" -1 -q -cf /etc/dhclient.conf -pf /tmp/dhclient.$netif.pid -lf /tmp/dhclient.$netif.lease $netif \ + || echo "dhcp failed" diff --git a/0039-base-dracut-lib.sh-wait_for_dev-relax-requirement.patch b/0039-base-dracut-lib.sh-wait_for_dev-relax-requirement.patch new file mode 100644 index 0000000..a9cc2a6 --- /dev/null +++ b/0039-base-dracut-lib.sh-wait_for_dev-relax-requirement.patch @@ -0,0 +1,39 @@ +From b92896ece49d27741f41e915c4673bde2a9bcb1f Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 2 Dec 2013 10:39:36 +0100 +Subject: [PATCH] base/dracut-lib.sh:wait_for_dev() relax requirement + +Do not "require" the devices, but "want" them. This might boot more +systems, where: +- the UUID changed +- swap devices do not show up +--- + modules.d/99base/dracut-lib.sh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh +index 0670cf2..970bcfb 100755 +--- a/modules.d/99base/dracut-lib.sh ++++ b/modules.d/99base/dracut-lib.sh +@@ -863,9 +863,9 @@ wait_for_dev() + + if [ -n "$DRACUT_SYSTEMD" ]; then + _name=$(dev_unit_name "$1") +- if ! [ -L ${PREFIX}/etc/systemd/system/initrd.target.requires/${_name}.device ]; then +- [ -d ${PREFIX}/etc/systemd/system/initrd.target.requires ] || mkdir -p ${PREFIX}/etc/systemd/system/initrd.target.requires +- ln -s ../${_name}.device ${PREFIX}/etc/systemd/system/initrd.target.requires/${_name}.device ++ if ! [ -L ${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device ]; then ++ [ -d ${PREFIX}/etc/systemd/system/initrd.target.wants ] || mkdir -p ${PREFIX}/etc/systemd/system/initrd.target.wants ++ ln -s ../${_name}.device ${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device + fi + + mkdir -p ${PREFIX}/etc/systemd/system/${_name}.device.d +@@ -885,7 +885,7 @@ cancel_wait_for_dev() + rm -f -- "$hookdir/emergency/80-${_name}.sh" + if [ -n "$DRACUT_SYSTEMD" ]; then + _name=$(dev_unit_name "$1") +- rm -f -- ${PREFIX}/etc/systemd/system/initrd.target.requires/${_name}.device ++ rm -f -- ${PREFIX}/etc/systemd/system/initrd.target.wants/${_name}.device + rm -f -- ${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf + /sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload + fi diff --git a/0040-resume-autoconf-resume.patch b/0040-resume-autoconf-resume.patch new file mode 100644 index 0000000..47ab584 --- /dev/null +++ b/0040-resume-autoconf-resume.patch @@ -0,0 +1,37 @@ +From 40da1e5a319a02f30c585e0e963e75e4257d2bf7 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 2 Dec 2013 10:45:17 +0100 +Subject: [PATCH] resume: autoconf resume + +--- + modules.d/95resume/module-setup.sh | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh +index a172c27..ceb7855 100755 +--- a/modules.d/95resume/module-setup.sh ++++ b/modules.d/95resume/module-setup.sh +@@ -16,8 +16,23 @@ check() { + } + + # called by dracut ++cmdline() { ++ local _activated ++ declare -A _activated ++ ++ for dev in "${!host_fs_types[@]}"; do ++ [[ ${host_fs_types[$dev]} =~ ^(swap|swsuspend|swsupend)$ ]] || continue ++ printf "resume=%s " "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")" ++ done ++} ++ ++# called by dracut + install() { + local _bin ++ ++ cmdline >> "${initdir}/etc/cmdline.d/95resume.conf" ++ echo >> "${initdir}/etc/cmdline.d/95resume.conf" ++ + # Optional uswsusp support + for _bin in /usr/sbin/resume /usr/lib/suspend/resume /usr/lib/uswsusp/resume + do diff --git a/0041-resume-no-more-autoresume.patch b/0041-resume-no-more-autoresume.patch new file mode 100644 index 0000000..998df26 --- /dev/null +++ b/0041-resume-no-more-autoresume.patch @@ -0,0 +1,98 @@ +From 8064f68d602b45778afc3f32a703b8376609d019 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 2 Dec 2013 11:02:34 +0100 +Subject: [PATCH] resume: no more autoresume + +--- + modules.d/95resume/parse-resume.sh | 76 +++++++++++++++++++++----------------- + 1 file changed, 43 insertions(+), 33 deletions(-) + +diff --git a/modules.d/95resume/parse-resume.sh b/modules.d/95resume/parse-resume.sh +index bd4bcd3..c84dafb 100755 +--- a/modules.d/95resume/parse-resume.sh ++++ b/modules.d/95resume/parse-resume.sh +@@ -36,41 +36,51 @@ case "$splash" in + ;; + esac + +-if [ -n "$resume" ]; then +- { +- printf "KERNEL==\"%s\", ACTION==\"add|change\", SYMLINK+=\"/dev/resume\"\n" \ +- ${resume#/dev/}; +- printf "SYMLINK==\"%s\", ACTION==\"add|change\", SYMLINK+=\"/dev/resume\"\n" \ +- ${resume#/dev/}; +- } >> /etc/udev/rules.d/99-resume-link.rules + +- { +- if [ -x /usr/sbin/resume ]; then +- printf "KERNEL==\"%s\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\", RUN+=\"/sbin/initqueue --finished --unique --name 00resume /usr/sbin/resume %s \'%s\'\"\n" \ +- ${resume#/dev/} "$a_splash" "$resume"; +- printf "SYMLINK==\"%s\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\", RUN+=\"/sbin/initqueue --finished --unique --name 00resume /usr/sbin/resume %s \'%s\'\"\n" \ +- ${resume#/dev/} "$a_splash" "$resume"; +- fi +- printf "KERNEL==\"%s\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\", RUN+=\"/sbin/initqueue --finished --unique --name 00resume echo %%M:%%m > /sys/power/resume\"\n" \ +- ${resume#/dev/}; +- printf "SYMLINK==\"%s\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\", RUN+=\"/sbin/initqueue --finished --unique --name 00resume echo %%M:%%m > /sys/power/resume\"\n" \ +- ${resume#/dev/}; +- } >> /etc/udev/rules.d/99-resume.rules ++if ! getarg noresume; then ++ if [ -n "$resume" ]; then ++ { ++ printf "KERNEL==\"%s\", ACTION==\"add|change\", SYMLINK+=\"/dev/resume\"\n" \ ++ ${resume#/dev/}; ++ printf "SYMLINK==\"%s\", ACTION==\"add|change\", SYMLINK+=\"/dev/resume\"\n" \ ++ ${resume#/dev/}; ++ } >> /etc/udev/rules.d/99-resume-link.rules + +- printf '[ -e "%s" ] && { ln -s "%s" /dev/resume; rm -f -- "$job" "%s/initqueue/timeout/resume.sh"; }\n' \ +- "$resume" "$resume" "$hookdir" >> $hookdir/initqueue/settled/resume.sh ++ { ++ if [ -x /usr/sbin/resume ]; then ++ printf -- "KERNEL==\"%s\", " "${resume#/dev/}" ++ printf -- "ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\"," ++ printf -- " RUN+=\"/sbin/initqueue --finished --unique --name 00resume /usr/sbin/resume %s \'%s\'\"\n" \ ++ "$a_splash" "$resume"; ++ printf -- "SYMLINK==\"%s\", " "${resume#/dev/}" ++ printf -- "ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\"," ++ printf -- " RUN+=\"/sbin/initqueue --finished --unique --name 00resume /usr/sbin/resume %s \'%s\'\"\n" \ ++ "$a_splash" "$resume"; ++ fi ++ printf -- "KERNEL==\"%s\", " ${resume#/dev/}; ++ printf -- "ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\"," ++ printf -- "%s" " RUN+=\"/sbin/initqueue --finished --unique --name 00resume echo %%M:%%m > /sys/power/resume\"\n" ++ printf -- "SYMLINK==\"%s\", " ${resume#/dev/}; ++ printf -- "%s" "ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\"," ++ printf -- "%s" " RUN+=\"/sbin/initqueue --finished --unique --name 00resume echo %%M:%%m > /sys/power/resume\"\n" ++ } >> /etc/udev/rules.d/99-resume.rules + +- printf 'warn "Cancelling resume operation. Device not found."; cancel_wait_for_dev /dev/resume; rm -f -- "$job" "%s/initqueue/settled/resume.sh";' \ +- "$hookdir" >> $hookdir/initqueue/timeout/resume.sh ++ printf '[ -e "%s" ] && { ln -s "%s" /dev/resume; rm -f -- "$job" "%s/initqueue/timeout/resume.sh"; }\n' \ ++ "$resume" "$resume" "$hookdir" >> $hookdir/initqueue/settled/resume.sh + +- wait_for_dev "/dev/resume" +- mv /lib/dracut/resume.sh /lib/dracut/hooks/pre-mount/10-resume.sh +-elif ! getarg noresume; then +- { +- if [ -x /usr/sbin/resume ]; then +- printf "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\", RUN+=\"/sbin/initqueue --finished --unique --name 00resume /usr/sbin/resume %s \$tempnode\"\n" "$a_splash" +- fi +- echo "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\"," \ +- " RUN+=\"/sbin/initqueue --finished --unique --name 00resume echo %M:%m > /sys/power/resume\""; +- } >> /etc/udev/rules.d/99-resume.rules ++ printf -- "%s" 'warn "Cancelling resume operation. Device not found.";' ++ printf -- ' cancel_wait_for_dev /dev/resume; rm -f -- "$job" "%s/initqueue/settled/resume.sh";' \ ++ "$hookdir" >> $hookdir/initqueue/timeout/resume.sh ++ ++ mv /lib/dracut/resume.sh /lib/dracut/hooks/pre-mount/10-resume.sh ++ else ++ { ++ if [ -x /usr/sbin/resume ]; then ++ printf "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\"," ++ printf -- " RUN+=\"/sbin/initqueue --finished --unique --name 00resume /usr/sbin/resume %s \$tempnode\"\n" "$a_splash" ++ fi ++ printf -- "%s" "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\"," ++ printf -- "%s" " RUN+=\"/sbin/initqueue --finished --unique --name 00resume echo %M:%m > /sys/power/resume\""; ++ } >> /etc/udev/rules.d/99-resume.rules ++ fi + fi diff --git a/0042-dracut.sh-skip-crypt-swaps-with-password-files.patch b/0042-dracut.sh-skip-crypt-swaps-with-password-files.patch new file mode 100644 index 0000000..258578f --- /dev/null +++ b/0042-dracut.sh-skip-crypt-swaps-with-password-files.patch @@ -0,0 +1,22 @@ +From 64ae4e07a4af4db2cdd1009ab484f89b4a6b9cb2 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 2 Dec 2013 11:05:21 +0100 +Subject: [PATCH] dracut.sh: skip crypt swaps with password files + +--- + dracut.sh | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/dracut.sh b/dracut.sh +index 177b813..6975d90 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -947,6 +947,8 @@ if [[ $hostonly ]]; then + [[ $_mapper = \#* ]] && continue + [[ "$_d" -ef /dev/mapper/"$_mapper" ]] || continue + [[ "$_o" ]] || _o="$_p" ++ # skip entries with password files ++ [[ "$_p" == /* ]] && [[ -f $_p ]] && continue 2 + # skip mkswap swap + [[ $_o == *swap* ]] && continue 2 + done < /etc/crypttab diff --git a/0043-dracut-functions.sh-do-not-force-require-modules.bui.patch b/0043-dracut-functions.sh-do-not-force-require-modules.bui.patch new file mode 100644 index 0000000..9ed900e --- /dev/null +++ b/0043-dracut-functions.sh-do-not-force-require-modules.bui.patch @@ -0,0 +1,41 @@ +From b29cb51654db13706c7356aa827e554456b25b0a Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Dec 2013 15:06:06 +0100 +Subject: [PATCH] dracut-functions.sh: do not force require modules.builtin* + +--- + dracut-functions.sh | 7 ------- + dracut.sh | 2 +- + 2 files changed, 1 insertion(+), 8 deletions(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 2872516..04f4fea 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -1456,13 +1456,6 @@ dracut_kernel_post() { + wait $_pid + fi + +- for _f in modules.builtin.bin modules.builtin; do +- [[ $srcmods/$_f ]] && break +- done || { +- dfatal "No modules.builtin.bin and modules.builtin found!" +- return 1 +- } +- + for _f in modules.builtin.bin modules.builtin modules.order; do + [[ $srcmods/$_f ]] && inst_simple "$srcmods/$_f" "/lib/modules/$kernel/$_f" + done +diff --git a/dracut.sh b/dracut.sh +index 6975d90..5709874 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -501,7 +501,7 @@ if [[ $regenerate_all == "yes" ]]; then + + cd /lib/modules + for i in *; do +- [[ -f $i/modules.builtin ]] || continue ++ [[ -f $i/modules.dep ]] || [[ -f $i/modules.dep.bin ]] || continue + dracut --kver="$i" "${dracut_args[@]}" + ((ret+=$?)) + done diff --git a/0044-10i18n-parse-i18n.sh-fixed-vconsole.conf-locale.conf.patch b/0044-10i18n-parse-i18n.sh-fixed-vconsole.conf-locale.conf.patch new file mode 100644 index 0000000..c743ef4 --- /dev/null +++ b/0044-10i18n-parse-i18n.sh-fixed-vconsole.conf-locale.conf.patch @@ -0,0 +1,56 @@ +From 443fb524877f28fd072f63c4dd98b74926d2513a Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Dec 2013 15:06:39 +0100 +Subject: [PATCH] 10i18n/parse-i18n.sh: fixed vconsole.conf/locale.conf + generation + +--- + modules.d/10i18n/parse-i18n.sh | 27 +++++++++++++-------------- + 1 file changed, 13 insertions(+), 14 deletions(-) + +diff --git a/modules.d/10i18n/parse-i18n.sh b/modules.d/10i18n/parse-i18n.sh +index 416a746..135c57b 100755 +--- a/modules.d/10i18n/parse-i18n.sh ++++ b/modules.d/10i18n/parse-i18n.sh +@@ -6,28 +6,27 @@ inst_key_val() { + local _value + local _file + local _default +- _default=$1 +- shift +- _file=$1 +- shift +- _value=$(getarg $@) ++ _file="$1"; shift ++ _key="$1"; shift ++ _default="$1"; shift ++ _value="$(getarg $@)" + [ -z "${_value}" ] && _value=$_default + if [ -n "${_value}" ]; then +- printf '%s="%s"\n' $2 ${_value} >> $_file ++ printf '%s="%s"\n' $key ${_value} >> $_file + fi + unset _file + unset _value + } + +-inst_key_val '' /etc/vconsole.conf rd.vconsole.keymap vconsole.keymap KEYMAP -d KEYTABLE +-inst_key_val '' /etc/vconsole.conf rd.vconsole.font vconsole.font FONT -d SYSFONT +-inst_key_val '' /etc/vconsole.conf rd.vconsole.font.map vconsole.font.map FONT_MAP -d CONTRANS +-inst_key_val '' /etc/vconsole.conf rd.vconsole.font.unimap vconsole.font.unimap FONT_UNIMAP -d UNIMAP +-inst_key_val 1 /etc/vconsole.conf rd.vconsole.font.unicode vconsole.font.unicode UNICODE vconsole.unicode +-inst_key_val '' /etc/vconsole.conf rd.vconsole.keymap.ext vconsole.keymap.ext EXT_KEYMAP ++inst_key_val /etc/vconsole.conf KEYMAP '' rd.vconsole.keymap KEYMAP -d KEYTABLE ++inst_key_val /etc/vconsole.conf FONT '' rd.vconsole.font FONT -d SYSFONT ++inst_key_val /etc/vconsole.conf FONT_MAP '' rd.vconsole.font.map FONT_MAP -d CONTRANS ++inst_key_val /etc/vconsole.conf FONT_UNIMAP '' rd.vconsole.font.unimap FONT_UNIMAP -d UNIMAP ++inst_key_val /etc/vconsole.conf UNICODE 1 rd.vconsole.font.unicode UNICODE vconsole.unicode ++inst_key_val /etc/vconsole.conf EXT_KEYMAP '' rd.vconsole.keymap.ext EXT_KEYMAP + +-inst_key_val '' /etc/locale.conf rd.locale.LANG locale.LANG LANG +-inst_key_val '' /etc/locale.conf rd.locale.LC_ALL locale.LC_ALL LC_ALL ++inst_key_val /etc/locale.conf LANG '' rd.locale.LANG LANG ++inst_key_val /etc/locale.conf LC_ALL '' rd.locale.LC_ALL LC_ALL + + if [ -f /etc/locale.conf ]; then + . /etc/locale.conf diff --git a/0045-95dasd-Install-kernel-modules-only-once.patch b/0045-95dasd-Install-kernel-modules-only-once.patch new file mode 100644 index 0000000..a76af4c --- /dev/null +++ b/0045-95dasd-Install-kernel-modules-only-once.patch @@ -0,0 +1,34 @@ +From 690905cea07bdf1783c86522927efb5fd9b5a299 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 29 Nov 2013 13:13:42 +0100 +Subject: [PATCH] 95dasd: Install kernel modules only once + +Move kernel module selection to 95dasd_mod and make 95dasd depend +on that module. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd/module-setup.sh | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/modules.d/95dasd/module-setup.sh b/modules.d/95dasd/module-setup.sh +index 861df29..16207bc 100755 +--- a/modules.d/95dasd/module-setup.sh ++++ b/modules.d/95dasd/module-setup.sh +@@ -11,15 +11,11 @@ check() { + + # called by dracut + depends() { ++ echo "dasd_mod" + return 0 + } + + # called by dracut +-installkernel() { +- instmods dasd_mod dasd_eckd_mod dasd_fba_mod dasd_diag_mod +-} +- +-# called by dracut + install() { + inst_hook cmdline 30 "$moddir/parse-dasd.sh" + inst_multiple dasdinfo dasdconf.sh normalize_dasd_arg diff --git a/0046-95dasd-Only-install-module-if-normalize_dasd_arg-is-.patch b/0046-95dasd-Only-install-module-if-normalize_dasd_arg-is-.patch new file mode 100644 index 0000000..dc80a3f --- /dev/null +++ b/0046-95dasd-Only-install-module-if-normalize_dasd_arg-is-.patch @@ -0,0 +1,25 @@ +From 07cacb245547066c7b6a335509a0ed77ad227372 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 29 Nov 2013 13:13:43 +0100 +Subject: [PATCH] 95dasd: Only install module if normalize_dasd_arg is present + +normalize_dasd_arg is a RedHat specific script, so no point +installing this module if the script isn't present. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd/module-setup.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/95dasd/module-setup.sh b/modules.d/95dasd/module-setup.sh +index 16207bc..9c93d40 100755 +--- a/modules.d/95dasd/module-setup.sh ++++ b/modules.d/95dasd/module-setup.sh +@@ -5,6 +5,7 @@ + # called by dracut + check() { + local _arch=$(uname -m) ++ [ -x /sbin/normalize_dasd_arg ] || return 1 + [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 + return 0 + } diff --git a/0047-95dasd_mod-make-dasd_cio_free-optional.patch b/0047-95dasd_mod-make-dasd_cio_free-optional.patch new file mode 100644 index 0000000..76c90a5 --- /dev/null +++ b/0047-95dasd_mod-make-dasd_cio_free-optional.patch @@ -0,0 +1,38 @@ +From 8b2b77e460663b3fe45e0eea2f4a5babe4b731bc Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 29 Nov 2013 13:13:44 +0100 +Subject: [PATCH] 95dasd_mod: make dasd_cio_free optional + +dasd_cio_free is a RedHat-specific tool, so make it optional. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_mod/module-setup.sh | 3 ++- + modules.d/95dasd_mod/parse-dasd-mod.sh | 4 +++- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95dasd_mod/module-setup.sh b/modules.d/95dasd_mod/module-setup.sh +index 011010d..8fde525 100755 +--- a/modules.d/95dasd_mod/module-setup.sh ++++ b/modules.d/95dasd_mod/module-setup.sh +@@ -23,6 +23,7 @@ installkernel() { + # called by dracut + install() { + inst_hook cmdline 31 "$moddir/parse-dasd-mod.sh" +- inst_multiple dasd_cio_free grep sed seq ++ inst_multiple grep sed seq ++ inst_multiple -o dasd_cio_free + } + +diff --git a/modules.d/95dasd_mod/parse-dasd-mod.sh b/modules.d/95dasd_mod/parse-dasd-mod.sh +index 87c88ed..0236d12 100755 +--- a/modules.d/95dasd_mod/parse-dasd-mod.sh ++++ b/modules.d/95dasd_mod/parse-dasd-mod.sh +@@ -15,4 +15,6 @@ if [ -n "$mod_args" ]; then + fi + + unset dasd_arg +-dasd_cio_free ++if [ -x /sbin/dasd_cio_free ] ; then ++ dasd_cio_free ++fi diff --git a/0048-95zfcp-Make-installation-optional.patch b/0048-95zfcp-Make-installation-optional.patch new file mode 100644 index 0000000..0db3410 --- /dev/null +++ b/0048-95zfcp-Make-installation-optional.patch @@ -0,0 +1,35 @@ +From 61c0665dad633fdd2358a1a2ce5d25d282673c1a Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 29 Nov 2013 13:13:45 +0100 +Subject: [PATCH] 95zfcp: Make installation optional + +zfcp_cio_free is a RedHat-specific tool, so do not install this +module if the program isn't present. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95zfcp/module-setup.sh | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/modules.d/95zfcp/module-setup.sh b/modules.d/95zfcp/module-setup.sh +index 5d9b506..dfbeed5 100755 +--- a/modules.d/95zfcp/module-setup.sh ++++ b/modules.d/95zfcp/module-setup.sh +@@ -5,6 +5,7 @@ + # called by dracut + check() { + arch=$(uname -m) ++ [ -x /sbin/zfcp_cio_free ] || return 1 + [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1 + + return 0 +@@ -12,9 +13,6 @@ check() { + + # called by dracut + depends() { +- arch=$(uname -m) +- [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1 +- + return 0 + } + diff --git a/0049-95znet-Make-installation-optional.patch b/0049-95znet-Make-installation-optional.patch new file mode 100644 index 0000000..52e74f1 --- /dev/null +++ b/0049-95znet-Make-installation-optional.patch @@ -0,0 +1,25 @@ +From dda7ae7dcdde7f9a00bbaebc7df7fbd7ed2f8ff0 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 29 Nov 2013 13:13:46 +0100 +Subject: [PATCH] 95znet: Make installation optional + +znet_cio_free is a RedHat-specific tool, so do not install this +module on systems where the program is missing. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95znet/module-setup.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/95znet/module-setup.sh b/modules.d/95znet/module-setup.sh +index 4c211a9..5012b77 100755 +--- a/modules.d/95znet/module-setup.sh ++++ b/modules.d/95znet/module-setup.sh +@@ -5,6 +5,7 @@ + # called by dracut + check() { + arch=$(uname -m) ++ [ -z /sbin/znet_cio_free ] || return 1 + [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1 + + return 0 diff --git a/0050-Add-DASD-configuration-for-SuSE.patch b/0050-Add-DASD-configuration-for-SuSE.patch new file mode 100644 index 0000000..dbd7f99 --- /dev/null +++ b/0050-Add-DASD-configuration-for-SuSE.patch @@ -0,0 +1,152 @@ +From bfa1db78cdcf6aaea09da560b578426fe663a05e Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 29 Nov 2013 13:13:47 +0100 +Subject: [PATCH] Add DASD configuration for SuSE + +On SuSE the DASD configuration is kept in udev rules, one rule +file per device. So add a new module for copying and creating +these rules during boot. + +Signed-off-by: Hannes Reinecke +--- + dracut-functions.sh | 28 +++++++++++++++++ + modules.d/95dasd_rules/module-setup.sh | 27 ++++++++++++++++ + modules.d/95dasd_rules/parse-dasd.sh | 56 ++++++++++++++++++++++++++++++++++ + 3 files changed, 111 insertions(+) + create mode 100755 modules.d/95dasd_rules/module-setup.sh + create mode 100755 modules.d/95dasd_rules/parse-dasd.sh + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 04f4fea..7cfa097 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -899,6 +899,34 @@ inst_rules() { + done + } + ++inst_rules_wildcard() { ++ local _target=/etc/udev/rules.d _rule _found ++ ++ inst_dir "${udevdir}/rules.d" ++ inst_dir "$_target" ++ for _rule in ${udevdir}/rules.d/$1 ${dracutbasedir}/rules.d/$1 ; do ++ if [[ -e $_rule ]]; then ++ inst_rule_programs "$_rule" ++ inst_rule_group_owner "$_rule" ++ inst_rule_initqueue "$_rule" ++ inst_simple "$_rule" ++ _found=$_rule ++ fi ++ done ++ if [ -n ${hostonly} ] ; then ++ for _rule in ${_target}/$1 ; do ++ if [[ -f $_rule ]]; then ++ inst_rule_programs "$_rule" ++ inst_rule_group_owner "$_rule" ++ inst_rule_initqueue "$_rule" ++ inst_simple "$_rule" ++ _found=$_rule ++ fi ++ done ++ fi ++ [[ $_found ]] || dinfo "Skipping udev rule: $_rule" ++} ++ + prepare_udev_rules() { + [ -z "$UDEVVERSION" ] && export UDEVVERSION=$(udevadm --version) + +diff --git a/modules.d/95dasd_rules/module-setup.sh b/modules.d/95dasd_rules/module-setup.sh +new file mode 100755 +index 0000000..d313171 +--- /dev/null ++++ b/modules.d/95dasd_rules/module-setup.sh +@@ -0,0 +1,27 @@ ++#!/bin/bash ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++# called by dracut ++check() { ++ local _arch=$(uname -m) ++ [ -x /sbin/dasd_configure ] || return 1 ++ [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 ++ return 0 ++} ++ ++# called by dracut ++depends() { ++ echo 'dasd_mod' ++ return 0 ++} ++ ++# called by dracut ++install() { ++ inst_multiple /usr/lib/udev/collect ++ inst_hook cmdline 30 "$moddir/parse-dasd.sh" ++ if [[ $hostonly ]] ; then ++ inst_rules_wildcard 51-dasd-*.rules ++ fi ++ inst_rules 59-dasd.rules ++} +diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh +new file mode 100755 +index 0000000..9389c44 +--- /dev/null ++++ b/modules.d/95dasd_rules/parse-dasd.sh +@@ -0,0 +1,56 @@ ++#!/bin/sh ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++create_udev_rule() { ++ local ccw=$1 ++ local _drv _cu_type _dev_type ++ local _rule=/etc/udev/rules.d/51-dasd-${ccw}.rules ++ ++ if [ -e /sys/bus/ccw/devices/${ccw} ] ; then ++ read _cu_type < /sys/bus/ccw/devices/${ccw}/cutype ++ read _dev_type < /sys/bus/ccw/devices/${ccw}/devtype ++ fi ++ case "$_cu_type" in ++ 3990/*|2105/*|2107/*|1750/*|9343/*) ++ _drv=dasd-eckd ++ ;; ++ 6310/*) ++ _drv=dasd-fba ++ ;; ++ 3880/*) ++ case "$_dev_type" in ++ 3380/*) ++ _drv=dasd_eckd ++ ;; ++ 3370/*) ++ _drv=dasd-fba ++ ;; ++ esac ++ ;; ++ esac ++ [ -z "${_drv}" ] && return 0 ++ ++ [ -e ${_rule} ] && return 0 ++ ++ cat > $_rule < +Date: Fri, 29 Nov 2013 13:13:48 +0100 +Subject: [PATCH] Add zfcp scripts for SUSE + +SuSE is storing the zfcp configuration in udev files, so we should +be including these. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95zfcp_rules/module-setup.sh | 25 +++++++++++++ + modules.d/95zfcp_rules/parse-zfcp.sh | 65 ++++++++++++++++++++++++++++++++++ + 2 files changed, 90 insertions(+) + create mode 100755 modules.d/95zfcp_rules/module-setup.sh + create mode 100755 modules.d/95zfcp_rules/parse-zfcp.sh + +diff --git a/modules.d/95zfcp_rules/module-setup.sh b/modules.d/95zfcp_rules/module-setup.sh +new file mode 100755 +index 0000000..9a1ab20 +--- /dev/null ++++ b/modules.d/95zfcp_rules/module-setup.sh +@@ -0,0 +1,25 @@ ++#!/bin/bash ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++# called by dracut ++check() { ++ local _arch=$(uname -m) ++ [ -x /sbin/zfcp_disk_configure ] || return 1 ++ [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 ++ return 0 ++} ++ ++# called by dracut ++depends() { ++ return 0 ++} ++ ++# called by dracut ++install() { ++ inst_multiple /usr/lib/udev/collect ++ inst_hook cmdline 30 "$moddir/parse-zfcp.sh" ++ if [[ $hostonly ]] ; then ++ inst_rules_wildcard 51-zfcp-*.rules ++ fi ++} +diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh +new file mode 100755 +index 0000000..24dbdd3 +--- /dev/null ++++ b/modules.d/95zfcp_rules/parse-zfcp.sh +@@ -0,0 +1,65 @@ ++#!/bin/sh ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++create_udev_rule() { ++ local ccw=$1 ++ local wwpn=$2 ++ local lun=$3 ++ local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules ++ ++ local _cu_type _dev_type ++ local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules ++ ++ if [ -e /sys/bus/ccw/devices/${ccw} ] ; then ++ read _cu_type < /sys/bus/ccw/devices/${ccw}/cutype ++ read _dev_type < /sys/bus/ccw/devices/${ccw}/devtype ++ fi ++ if [ "$_cu_type" != "1731/03" ] ; then ++ return 0; ++ fi ++ if [ "$_dev_type" != "1732/03" ] && [ "$_dev_type" != "1732/04" ] ; then ++ return 0; ++ fi ++ ++ [ -e ${_rule} ] && return 0 ++ ++ if [ ! -f "$_rule" ] ; then ++ cat > $_rule <> $_rule < +Date: Fri, 29 Nov 2013 13:13:49 +0100 +Subject: [PATCH] Make logfile configurable + +Add '--logfile' option to make the log file configurable during +runtime. + +Signed-off-by: Hannes Reinecke +--- + dracut.8.asc | 6 ++++++ + dracut.sh | 4 ++++ + 2 files changed, 10 insertions(+) + +diff --git a/dracut.8.asc b/dracut.8.asc +index 2ea6744..d381dcf 100644 +--- a/dracut.8.asc ++++ b/dracut.8.asc +@@ -275,6 +275,12 @@ Default: + + **--sshkey** __:: ssh key file used with ssh-client module. + ++**--logfile** __:: logfile to use; overrides any setting from ++ the configuration files. +++ ++Default: ++ _/var/log/dracut.log_ ++ + **-l, --local**:: + activates the local mode. dracut will use modules from the current working + directory instead of the system-wide installed modules in +diff --git a/dracut.sh b/dracut.sh +index 5709874..11dcd0e 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -183,6 +183,7 @@ Creates initial ramdisk images for preloading modules + --keep Keep the temporary initramfs for debugging purposes + --printsize Print out the module install size + --sshkey [SSHKEY] Add ssh key to initramfs (use with ssh-client module) ++ --logfile [FILE] Logfile to use (overrides configuration setting) + + If [LIST] has multiple arguments, then you have to put these in quotes. + +@@ -335,6 +336,7 @@ TEMP=$(unset POSIXLY_CORRECT; getopt \ + --long debug \ + --long profile \ + --long sshkey: \ ++ --long logfile: \ + --long verbose \ + --long quiet \ + --long local \ +@@ -418,6 +420,7 @@ while :; do + --debug) debug="yes";; + --profile) profile="yes";; + --sshkey) sshkey="$2"; shift;; ++ --logfile) logfile_l="$2"; shift;; + -v|--verbose) ((verbosity_mod_l++));; + -q|--quiet) ((verbosity_mod_l--));; + -l|--local) +@@ -690,6 +693,7 @@ stdloglvl=$((stdloglvl + verbosity_mod_l)) + [[ $ro_mnt_l ]] && ro_mnt="yes" + [[ $early_microcode_l ]] && early_microcode=$early_microcode_l + [[ $early_microcode ]] || early_microcode=no ++[[ $logfile_l ]] && logfile="$logfile_l" + # eliminate IFS hackery when messing with fw_dir + fw_dir=${fw_dir//:/ } + diff --git a/0053-mkinitrd-suse-Add-SUSE-compability-wrapper-for-dracu.patch b/0053-mkinitrd-suse-Add-SUSE-compability-wrapper-for-dracu.patch new file mode 100644 index 0000000..493903b --- /dev/null +++ b/0053-mkinitrd-suse-Add-SUSE-compability-wrapper-for-dracu.patch @@ -0,0 +1,375 @@ +From 2b3e22d60246e7c8bfa96a6d7504fb0bfa67e641 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 29 Nov 2013 13:13:50 +0100 +Subject: [PATCH] mkinitrd-suse: Add SUSE compability wrapper for dracut + +SUSE has its own mkinitrd system. As the arguments clash +with the dracut-provided mkinitrd script I've added a new +mkinitrd-suse.sh wrapper. + +Signed-off-by: Hannes Reinecke +--- + mkinitrd-suse.sh | 354 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 354 insertions(+) + create mode 100755 mkinitrd-suse.sh + +diff --git a/mkinitrd-suse.sh b/mkinitrd-suse.sh +new file mode 100755 +index 0000000..d20270a +--- /dev/null ++++ b/mkinitrd-suse.sh +@@ -0,0 +1,354 @@ ++#!/bin/bash --norc ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++# ++# mkinitrd compability wrapper for SUSE. ++# ++# Copyright (c) 2013 SUSE Linux Products GmbH. All rights reserved. ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++# ++ ++boot_dir="/boot" ++quiet=0 ++host_only=1 ++force=0 ++logfile=/var/log/YaST2/mkinitrd.log ++dracut_cmd=dracut ++ ++error() { echo "$@" >&2; } ++ ++usage () { ++ [[ $1 = '-n' ]] && cmd=echo || cmd=error ++ ++ $cmd "usage: ${0##*/} [options]" ++ $cmd "" ++ $cmd " Create initial ramdisk images that contain all kernel modules needed" ++ $cmd " in the early boot process, before the root file system becomes" ++ $cmd " available." ++ $cmd " This usually includes SCSI and/or RAID modules, a file system module" ++ $cmd " for the root file system, or a network interface driver module for dhcp." ++ $cmd "" ++ $cmd " options:" ++ $cmd " -f \"feature list\" Features to be enabled when generating initrd." ++ $cmd " Available features are:" ++ $cmd " iscsi, md, multipath, lvm, lvm2," ++ $cmd " ifup, fcoe, dcbd" ++ $cmd " -k \"kernel list\" List of kernel images for which initrd files are" ++ $cmd " created. Defaults to all kernels found in /boot." ++ $cmd " -i \"initrd list\" List of file names for the initrd; position have" ++ $cmd " match to \"kernel list\". Defaults to all kernels" ++ $cmd " found in /boot." ++ $cmd " -b boot_dir Boot directory. Defaults to /boot." ++ $cmd " -t tmp_dir Temporary directory. Defaults to /var/tmp." ++ $cmd " -M map System.map file to use." ++ $cmd " -A Create a so called \"monster initrd\" which" ++ $cmd " includes all features and modules possible." ++ $cmd " -B Do not update bootloader configuration." ++ $cmd " -v Verbose mode." ++ $cmd " -L Disable logging." ++ $cmd " -h This help screen." ++ $cmd " -m \"module list\" Modules to include in initrd. Defaults to the" ++ $cmd " INITRD_MODULES variable in /etc/sysconfig/kernel" ++ $cmd " -u \"DomU module list\" Modules to include in initrd. Defaults to the" ++ $cmd " DOMU_INITRD_MODULES variable in" ++ $cmd " /etc/sysconfig/kernel." ++ $cmd " -d root_device Root device. Defaults to the device from" ++ $cmd " which / is mounted. Overrides the rootdev" ++ $cmd " enviroment variable if set." ++ $cmd " -j device Journal device" ++ $cmd " -D interface Run dhcp on the specified interface." ++ $cmd " -I interface Configure the specified interface statically." ++ $cmd " -a acpi_dsdt Attach compiled ACPI DSDT (Differentiated" ++ $cmd " System Description Table) to initrd. This" ++ $cmd " replaces the DSDT of the BIOS. Defaults to" ++ $cmd " the ACPI_DSDT variable in /etc/sysconfig/kernel." ++ $cmd " -s size Add splash animation and bootscreen to initrd." ++ ++ [[ $1 = '-n' ]] && exit 0 ++ exit 1 ++} ++ ++# Little helper function for reading args from the commandline. ++# it automatically handles -a b and -a=b variants, and returns 1 if ++# we need to shift $3. ++read_arg() { ++ # $1 = arg name ++ # $2 = arg value ++ # $3 = arg parameter ++ param="$1" ++ local rematch='^[^=]*=(.*)$' result ++ if [[ $2 =~ $rematch ]]; then ++ read "$param" <<< "${BASH_REMATCH[1]}" ++ else ++ for ((i=3; $i <= $#; i++)); do ++ # Only read next arg if it not an arg itself. ++ if [[ ${@:$i:1} = -* ]];then ++ break ++ fi ++ result="$result ${@:$i:1}" ++ # There is no way to shift our callers args, so ++ # return "no of args" to indicate they should do it instead. ++ done ++ read "$1" <<< "$result" ++ return $(($i - 3)) ++ fi ++} ++ ++# Helper functions to calculate ipconfig command line ++calc_netmask() { ++ local prefix=$1 ++ ++ [ -z "$prefix" ] && return ++ mask=$(echo "(2 ^ 32) - (2 ^ $prefix)" | bc -l) ++ byte1=$(( mask >> 24 )) ++ byte2=$(( mask >> 16 )) ++ byte3=$(( mask >> 8 )) ++ byte4=$(( mask & 0xff )) ++ netmask=$(printf "%d.%d.%d.%d" $(( byte1 & 0xff )) $(( byte2 & 0xff )) $(( byte3 & 0xff )) $byte4); ++ ++ echo $netmask ++} ++ ++ipconfig() { ++ local interface=$1 ++ local iplink macaddr broadcast gateway ipaddr prefix netmask ++ ++ iplink=$(ip addr show dev $interface | sed -n 's/ *inet \(.*\) brd.*/\1/p') ++ macaddr=$(ip addr show dev $interface | sed -n 's/.*ether \(.*\) brd.*/\1/p') ++ broadcast=$(ip addr show dev $interface | sed -n 's/.*brd \(.*\) scope.*/\1/p') ++ gateway=$(ip route show dev $interface | sed -n 's/default via \([0-9\.]*\).*/\1/p') ++ ++ ipaddr=${iplink%%/*} ++ prefix=${iplink##*/} ++ netmask=$(calc_netmask $prefix) ++ ++ echo "${ipaddr}:${serveraddr}:${gateway}:${netmask}:${hostname}:${interface}:none::${macaddr}" ++} ++ ++is_xen_kernel() { ++ local kversion=$1 ++ local root_dir=$2 ++ local cfg ++ ++ for cfg in ${root_dir}/boot/config-$kversion $root_dir/lib/modules/$kversion/build/.config ++ do ++ test -r $cfg || continue ++ grep -q "^CONFIG_XEN=y\$" $cfg ++ return ++ done ++ test $kversion != "${kversion%-xen*}" ++ return ++} ++ ++ ++# Taken over from SUSE mkinitrd ++default_kernel_images() { ++ local regex kernel_image kernel_version version_version initrd_image ++ local qf='%{NAME}-%{VERSION}-%{RELEASE}\n' ++ ++ case "$(uname -m)" in ++ s390|s390x) ++ regex='image' ++ ;; ++ ppc|ppc64) ++ regex='vmlinux' ++ ;; ++ i386|x86_64) ++ regex='vmlinuz' ++ ;; ++ arm*) ++ regex='[uz]Image' ++ ;; ++ aarch64) ++ regex='Image' ++ ;; ++ *) regex='vmlinu.' ++ ;; ++ esac ++ ++ kernel_images="" ++ initrd_images="" ++ for kernel_image in $(ls $boot_dir \ ++ | sed -ne "\|^$regex\(-[0-9.]\+-[0-9]\+-[a-z0-9]\+$\)\?|p" \ ++ | grep -v kdump$ ) ; do ++ ++ # Note that we cannot check the RPM database here -- this ++ # script is itself called from within the binary kernel ++ # packages, and rpm does not allow recursive calls. ++ ++ [ -L "$boot_dir/$kernel_image" ] && continue ++ [ "${kernel_image%%.gz}" != "$kernel_image" ] && continue ++ kernel_version=$(/usr/bin/get_kernel_version \ ++ $boot_dir/$kernel_image 2> /dev/null) ++ initrd_image=$(echo $kernel_image | sed -e "s|${regex}|initrd|") ++ if [ "$kernel_image" != "$initrd_image" -a \ ++ -n "$kernel_version" -a \ ++ -d "/lib/modules/$kernel_version" ]; then ++ kernel_images="$kernel_images $boot_dir/$kernel_image" ++ initrd_images="$initrd_images $boot_dir/$initrd_image" ++ fi ++ done ++ for kernel_image in $kernel_images;do ++ kernels="$kernels ${kernel_image#*-}" ++ done ++ for initrd_image in $initrd_images;do ++ targets="$targets $initrd_image" ++ done ++ host_only=1 ++ force=1 ++} ++ ++while (($# > 0)); do ++ case ${1%%=*} in ++ -f) read_arg feature_list "$@" || shift $? ++ # Could be several features ++ ;; ++ -k) # Would be nice to get a list of images here ++ read_arg kernel_images "$@" || shift $? ++ for kernel_image in $kernel_images;do ++ kernels="$kernels ${kernel_image#*-}" ++ done ++ host_only=1 ++ force=1 ++ ;; ++ -i) read_arg initrd_images "$@" || shift $? ++ for initrd_image in $initrd_images;do ++ # Check if the initrd_image contains a path. ++ # if not, then add the default boot_dir ++ dname=`dirname $initrd_image` ++ if [ "$dname" == "." ]; then ++ targets="$targets $boot_dir/$initrd_image"; ++ else ++ targets="$targets $initrd_image"; ++ fi ++ done ++ ;; ++ -b) read_arg boot_dir "$@" || shift $? ++ if [ ! -d $boot_dir ];then ++ error "Boot directory $boot_dir does not exist" ++ exit 1 ++ fi ++ ;; ++ -t) read_arg tmp_dir "$@" || shift $? ++ dracut_args="${dracut_args} --tmpdir $tmp_dir" ++ ;; ++ -M) read_arg map_file "$@" || shift $? ++ ;; ++ -A) host_only=0;; ++ -B) skip_update_bootloader=1;; ++ -v|--verbose) dracut_args="${dracut_args} -v";; ++ -L) logfile=;; ++ -h|--help) usage -n;; ++ -m) read_arg module_list "$@" || shift $? ;; ++ -u) read_arg domu_module_list "$@" || shift $? ++ echo "mkinitrd: DomU modules not yet supported" ;; ++ -d) read_arg rootfs "$@" || shift $? ++ dracut_args="${dracut_args} --filesystems $rootfs" ;; ++ -D) read_arg dhcp_if "$@" || shift $? ++ dracut_cmdline="${dracut_cmdline} ip=${dhcp_if}:dhcp" ++ ;; ++ -I) read_arg static_if "$@" || shift $? ++ dracut_cmdline="${dracut_cmdline} ip=$(ipconfig $static_if)": ++ ;; ++ -a) read_arg acpi_dsdt "$@" || shift $? ++ echo "mkinitrd: custom DSDT not yet supported" ++ exit 1 ++ ;; ++ -s) read_arg boot_splash "$@" || shift $? ++ echo "mkinitrd: boot splash not yet supported" ++ exit 1 ++ ;; ++ -V) echo "mkinitrd: vendor scipts are no longer supported" ++ exit 1;; ++ --dracut) ++ read_arg dracut_cmd "$@" || shift $? ;; ++ --version|-R) ++ echo "mkinitrd: dracut compatibility wrapper" ++ exit 0;; ++ --force) force=1;; ++ --quiet|-q) quiet=1;; ++ *) if [[ ! $targets ]]; then ++ targets=$1 ++ elif [[ ! $kernels ]]; then ++ kernels=$1 ++ else ++ usage ++ fi;; ++ esac ++ shift ++done ++ ++[[ $targets && $kernels ]] || default_kernel_images ++[[ $targets && $kernels ]] || (error "No kernel found in $boot_dir" && usage) ++ ++# We can have several targets/kernels, transform the list to an array ++targets=( $targets ) ++[[ $kernels ]] && kernels=( $kernels ) ++ ++[[ $logfile ]] && dracut_args="${dracut_args} --logfile $logfile" ++[[ $host_only == 1 ]] && dracut_args="${dracut_args} --hostonly" ++[[ $force == 1 ]] && dracut_args="${dracut_args} --force" ++[[ $dracut_cmdline ]] && dracut_args="${dracut_args} --kernel-cmdline ${dracut_cmdline}" ++[ -z "$(type -p update-bootloader)" ] && skip_update_bootloader=1 ++ ++# Update defaults from /etc/sysconfig/kernel ++if [ -f /etc/sysconfig/kernel ] ; then ++ . /etc/sysconfig/kernel ++fi ++[[ $module_list ]] || module_list="${INITRD_MODULES}" ++basicmodules="$basicmodules ${module_list}" ++[[ $domu_module_list ]] || domu_module_list="${DOMU_INITRD_MODULES}" ++[[ $acpi_dsdt ]] || acpi_dsdt="${ACPI_DSDT}" ++ ++echo "Creating: target|kernel|dracut args|basicmodules " ++for ((i=0 ; $i<${#targets[@]} ; i++)); do ++ ++ if [[ $img_vers ]];then ++ target="${targets[$i]}-${kernels[$i]}" ++ else ++ target="${targets[$i]}" ++ fi ++ kernel="${kernels[$i]}" ++ ++ # Duplicate code: No way found how to redirect output based on $quiet ++ if [[ $quiet == 1 ]];then ++ echo "$target|$kernel|$dracut_args|$basicmodules" ++ if is_xen_kernel $kernel $rootfs ; then ++ basicmodules="$basicmodules ${domu_module_list}" ++ fi ++ if [[ $basicmodules ]]; then ++ $dracut_cmd $dracut_args --add-drivers "$basicmodules" "$target" \ ++ "$kernel" &>/dev/null ++ else ++ $dracut_cmd $dracut_args "$target" "$kernel" &>/dev/null ++ fi ++ else ++ if is_xen_kernel $kernel $rootfs ; then ++ basicmodules="$basicmodules ${domu_module_list}" ++ fi ++ if [[ $basicmodules ]]; then ++ $dracut_cmd $dracut_args --add-drivers "$basicmodules" "$target" \ ++ "$kernel" ++ else ++ $dracut_cmd $dracut_args "$target" "$kernel" ++ fi ++ fi ++done ++ ++if [ "$skip_update_bootloader" ] ; then ++ echo 2>&1 "Did not refresh the bootloader. You might need to refresh it manually." ++else ++ update-bootloader --refresh ++fi diff --git a/0054-mkinitrd-suse.8.asc-Add-manpage-for-SUSE-compat-mkin.patch b/0054-mkinitrd-suse.8.asc-Add-manpage-for-SUSE-compat-mkin.patch new file mode 100644 index 0000000..08be0db --- /dev/null +++ b/0054-mkinitrd-suse.8.asc-Add-manpage-for-SUSE-compat-mkin.patch @@ -0,0 +1,136 @@ +From 463e13fe8144376a95bf437b64c16bec056a9855 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 29 Nov 2013 13:13:51 +0100 +Subject: [PATCH] mkinitrd-suse.8.asc: Add manpage for SUSE compat mkinitrd + +Signed-off-by: Hannes Reinecke +--- + Makefile | 1 + + mkinitrd-suse.8.asc | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 107 insertions(+) + create mode 100644 mkinitrd-suse.8.asc + +diff --git a/Makefile b/Makefile +index e7da948..ba551cf 100644 +--- a/Makefile ++++ b/Makefile +@@ -27,6 +27,7 @@ man7pages = dracut.cmdline.7 \ + man8pages = dracut.8 \ + dracut-catimages.8 \ + mkinitrd.8 \ ++ mkinitrd-suse.8 \ + modules.d/98systemd/dracut-cmdline.service.8 \ + modules.d/98systemd/dracut-initqueue.service.8 \ + modules.d/98systemd/dracut-mount.service.8 \ +diff --git a/mkinitrd-suse.8.asc b/mkinitrd-suse.8.asc +new file mode 100644 +index 0000000..9eb8fc9 +--- /dev/null ++++ b/mkinitrd-suse.8.asc +@@ -0,0 +1,106 @@ ++MKINITRD(8) ++=========== ++:doctype: manpage ++:man source: dracut ++:man manual: dracut ++ ++NAME ++---- ++mkinitrd-suse - is a compat wrapper, which calls dracut to generate an initramfs ++ ++SYNOPSIS ++-------- ++*mkinitrd* ['OPTION...'] ++ ++DESCRIPTION ++----------- ++*mkinitrd* creates an initramfs image for the kernel with ++version by calling *dracut*. ++ ++[IMPORTANT] ++This version of mkinitrd is provided for compability with older ++versions of mkinitrd. If a more fine grained control over the ++resulting image is needed, *dracut* should be called directly. ++ ++OPTIONS ++------- ++**-R, --version**:: ++ print info about the version ++ ++**-k** __:: ++ List of kernel images for which initrd files are created (relative ++ to _boot_dir_), defaults to _vmlinux_ on ppc/ppc64, _image_ on s390/s390x ++ and _vmlinuz_ for everything else. ++ ++**-i** __:: ++ List of file names (relative to _boot_dir_) for the initrd; positions ++ have to match the _kernel_list_. Defaults to _initrd_. ++ ++**-m** __:: ++ Modules to include in initrd, defaults to _INITRD_MODULES_ variable ++ in */etc/sysconfig/kernel*. ++ ++**-f** __:: ++ Features to be enabled for the initrd. In general mkinitrd ++ configures the initrd for the root device it is started from. With ++ this option additional feature can be enabled. ++ ++**-b** __:: ++ Boot directory, defaults to */boot*, where the initrd is created. ++ ++**-d** __:: ++ Root device, defaults to the device from which the root_dir is ++ mounted; overwrites the rootdev enviroment variable if set ++ ++**-s** __:: ++ Add splash animation and bootscreen to initrd. ++ ++**-D** _:: ++ Run dhcp on the specified interface (for example "eth0"). ++ ++**-I** _:: ++ Configure the specified interface statically. ++ ++**-a** _:: ++ Attach compiled ACPI DSDT (Differentiated System Description Table) ++ to initrd. This replaces the DSDT of the BIOS. Defaults to the ++ _ACPI_DSDT_ variable in */etc/sysconfig/kernel*. ++ ++**-M** _:: ++ System.map file to use. ++ ++**-B**:: ++ Don’t run the *update-bootloader(8)* script after the initrd(s) have ++ been created. This is useful if you call mkinitrd(8) for anything ++ else than the running system. ++ ++**-A**:: ++ Create a so called "monster initrd" which includes all available ++ features and modules. ++ ++**-v, --verbose**:: ++ increase verbosity level ++ ++**-L**:: ++ Disable logging to _/var/log/YaST2/mkinitrd.log_. This is useful for ++ testing if you don’t want to clutter the system log. ++ ++**--force**:: ++ overwrite existing initramfs file. ++ ++**--help**:: ++ print a help message and exit. ++ ++AVAILABILITY ++------------ ++The mkinitrd command is part of the dracut package and is available from ++link:$$https://dracut.wiki.kernel.org$$[https://dracut.wiki.kernel.org] ++ ++AUTHORS ++------- ++Harald Hoyer, Hannes Reinecke ++ ++SEE ALSO ++-------- ++*dracut*(8) ++*update-bootloader*(8) diff --git a/0055-Fixup-keymap-setting-for-openSUSE.patch b/0055-Fixup-keymap-setting-for-openSUSE.patch new file mode 100644 index 0000000..ec3953d --- /dev/null +++ b/0055-Fixup-keymap-setting-for-openSUSE.patch @@ -0,0 +1,26 @@ +From 1d3496b4c1ef229a8e6969e530b49dedb865f409 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 29 Nov 2013 13:13:52 +0100 +Subject: [PATCH] Fixup keymap setting for openSUSE + +openSUSE is using compressed keymaps. + +Signed-off-by: Hannes Reinecke +--- + modules.d/10i18n/module-setup.sh | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh +index 0741c64..f07b148 100755 +--- a/modules.d/10i18n/module-setup.sh ++++ b/modules.d/10i18n/module-setup.sh +@@ -161,6 +161,9 @@ install() { + # Gentoo user may have KEYMAP set to something like "-u pl2", + KEYMAP=${KEYMAP#-* } + ++ # openSUSE user may have KEYMAP set to something like ".gz" ++ KEYMAP=${KEYMAP/.gz/} ++ + # KEYTABLE is a bit special - it defines base keymap name and UNICODE + # determines whether non-UNICODE or UNICODE version is used + diff --git a/0056-Fixup-script-permissions.patch b/0056-Fixup-script-permissions.patch new file mode 100644 index 0000000..729e574 --- /dev/null +++ b/0056-Fixup-script-permissions.patch @@ -0,0 +1,46 @@ +From 1c89fd148d361a43b1ddb7ec1e8068849244a9b7 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 29 Nov 2013 13:13:53 +0100 +Subject: [PATCH] Fixup script permissions + +Scripts with a shebang should be marked as executable. + +Signed-off-by: Hannes Reinecke +--- + modules.d/03modsign/load-modsign-keys.sh | 0 + modules.d/03modsign/module-setup.sh | 0 + modules.d/40network/net-lib.sh | 0 + modules.d/40network/parse-vlan.sh | 0 + modules.d/50drm/module-setup.sh | 0 + modules.d/91crypt-loop/crypt-loop-lib.sh | 0 + modules.d/98pollcdrom/pollcdrom.sh | 0 + 7 files changed, 0 insertions(+), 0 deletions(-) + mode change 100644 => 100755 modules.d/03modsign/load-modsign-keys.sh + mode change 100644 => 100755 modules.d/03modsign/module-setup.sh + mode change 100644 => 100755 modules.d/40network/net-lib.sh + mode change 100644 => 100755 modules.d/40network/parse-vlan.sh + mode change 100644 => 100755 modules.d/50drm/module-setup.sh + mode change 100644 => 100755 modules.d/91crypt-loop/crypt-loop-lib.sh + mode change 100644 => 100755 modules.d/98pollcdrom/pollcdrom.sh + +diff --git a/modules.d/03modsign/load-modsign-keys.sh b/modules.d/03modsign/load-modsign-keys.sh +old mode 100644 +new mode 100755 +diff --git a/modules.d/03modsign/module-setup.sh b/modules.d/03modsign/module-setup.sh +old mode 100644 +new mode 100755 +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +old mode 100644 +new mode 100755 +diff --git a/modules.d/40network/parse-vlan.sh b/modules.d/40network/parse-vlan.sh +old mode 100644 +new mode 100755 +diff --git a/modules.d/50drm/module-setup.sh b/modules.d/50drm/module-setup.sh +old mode 100644 +new mode 100755 +diff --git a/modules.d/91crypt-loop/crypt-loop-lib.sh b/modules.d/91crypt-loop/crypt-loop-lib.sh +old mode 100644 +new mode 100755 +diff --git a/modules.d/98pollcdrom/pollcdrom.sh b/modules.d/98pollcdrom/pollcdrom.sh +old mode 100644 +new mode 100755 diff --git a/0057-Remove-shebang-from-shell-completion-files.patch b/0057-Remove-shebang-from-shell-completion-files.patch new file mode 100644 index 0000000..b59c7e9 --- /dev/null +++ b/0057-Remove-shebang-from-shell-completion-files.patch @@ -0,0 +1,34 @@ +From 336bd09d2cf9d3ded4abb828eb54742218a32b04 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 29 Nov 2013 13:13:54 +0100 +Subject: [PATCH] Remove shebang from shell-completion files + +Shell-completion files are meant to be sourced, not executed. +So they shouldn't have a shebang at the start. + +Signed-off-by: Hannes Reinecke +--- + dracut-bash-completion.sh | 2 +- + lsinitrd-bash-completion.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dracut-bash-completion.sh b/dracut-bash-completion.sh +index d796c35..9f359c6 100644 +--- a/dracut-bash-completion.sh ++++ b/dracut-bash-completion.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++# + # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- + # ex: ts=8 sw=4 sts=4 et filetype=sh + # +diff --git a/lsinitrd-bash-completion.sh b/lsinitrd-bash-completion.sh +index 78ab165..3df2965 100644 +--- a/lsinitrd-bash-completion.sh ++++ b/lsinitrd-bash-completion.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++# + # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- + # ex: ts=8 sw=4 sts=4 et filetype=sh + # diff --git a/0058-lvm-install-thin-tools-only-when-needed-in-hostonly.patch b/0058-lvm-install-thin-tools-only-when-needed-in-hostonly.patch new file mode 100644 index 0000000..b457909 --- /dev/null +++ b/0058-lvm-install-thin-tools-only-when-needed-in-hostonly.patch @@ -0,0 +1,27 @@ +From c21c4dc2b469107ac35d8c1157f245965fd55292 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Dec 2013 15:57:42 +0100 +Subject: [PATCH] lvm: install thin tools, only when needed in hostonly + +--- + modules.d/90lvm/module-setup.sh | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh +index a220a55..1206310 100755 +--- a/modules.d/90lvm/module-setup.sh ++++ b/modules.d/90lvm/module-setup.sh +@@ -97,6 +97,11 @@ install() { + + inst_libdir_file "libdevmapper-event-lvm*.so" + +- inst_multiple -o thin_dump thin_restore thin_check thin_repair ++ if [[ $hostonly ]] && type -P lvs &>/dev/null; then ++ for dev in "${!host_fs_types[@]}"; do ++ if [[ "$(lvs --noheadings -o segtype "$dev" 2>/dev/null)" == *thin* ]] ; then ++ inst_multiple -o thin_dump thin_restore thin_check thin_repair ++ fi ++ done ++ fi + } +- diff --git a/0059-i18n-introduce-i18n_install_all-to-install-everythin.patch b/0059-i18n-introduce-i18n_install_all-to-install-everythin.patch new file mode 100644 index 0000000..bd6562d --- /dev/null +++ b/0059-i18n-introduce-i18n_install_all-to-install-everythin.patch @@ -0,0 +1,127 @@ +From 45845cb6a5f1100fa4163e25c0681afceb838b64 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Dec 2013 16:42:05 +0100 +Subject: [PATCH] i18n: introduce i18n_install_all, to install everything + +if i18n_install_all is set to "yes", then install all keyboard layouts +and fonts regardless of the hostonly setting. + +This way, people can switch keyboard layouts, without having to recreate +the initramfs. +--- + dracut.conf.5.asc | 14 ++++++++++++-- + dracut.conf.d/fedora.conf.example | 1 + + modules.d/10i18n/module-setup.sh | 31 +++++++++++++++++-------------- + 3 files changed, 30 insertions(+), 16 deletions(-) + +diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc +index c9c854a..30b7e03 100644 +--- a/dracut.conf.5.asc ++++ b/dracut.conf.5.asc +@@ -122,10 +122,10 @@ If chrooted to another root other than the real root device, use --fstab and pro + *kernel_only=*"__{yes|no}__":: + Only install kernel drivers and firmware files. (default=no) + +-*no_kernel=*"{yes|no}":: ++*no_kernel=*"__{yes|no}__":: + Do not install kernel drivers and firmware files (default=no) + +-*acpi_override=*"{yes|no}":: ++*acpi_override=*"__{yes|no}__":: + [WARNING] ONLY USE THIS IF YOU KNOW WHAT YOU ARE DOING! + + Override BIOS provided ACPI tables. For further documentation read + Documentation/acpi/initrd_table_override.txt in the kernel sources. +@@ -158,6 +158,16 @@ If chrooted to another root other than the real root device, use --fstab and pro + *show_modules=*"__{yes|no}__":: + Print the name of the included modules to standard output during build. + ++*i18n_vars="____":: ++ Distribution specific variable mapping. ++ See dracut/modules.d/10i18n/README for a detailed description. ++ ++*i18n_default_font=*"____":: ++ The font to install, if not specified otherwise. Default is "LatArCyrHeb-16". ++ ++*i18n_install_all=*"__{yes|no}__":: ++ Install everything regardless of generic or hostonly mode. ++ + Files + ----- + _/etc/dracut.conf_:: +diff --git a/dracut.conf.d/fedora.conf.example b/dracut.conf.d/fedora.conf.example +index 1a56a86..495e8fb 100644 +--- a/dracut.conf.d/fedora.conf.example ++++ b/dracut.conf.d/fedora.conf.example +@@ -3,6 +3,7 @@ + # i18n + i18n_vars="/etc/sysconfig/keyboard:KEYTABLE-KEYMAP /etc/sysconfig/i18n:SYSFONT-FONT,FONTACM-FONT_MAP,FONT_UNIMAP" + i18n_default_font="latarcyrheb-sun16" ++i18n_install_all="yes" + stdloglvl=3 + sysloglvl=5 + install_items+=" vi /etc/virc ps grep cat rm " +diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh +index f07b148..fcb18d1 100755 +--- a/modules.d/10i18n/module-setup.sh ++++ b/modules.d/10i18n/module-setup.sh +@@ -21,15 +21,11 @@ depends() { + # called by dracut + install() { + if dracut_module_included "systemd"; then +- [[ -f /etc/vconsole.conf ]] || return 0 + unset FONT + unset KEYMAP +- . /etc/vconsole.conf +- # if vconsole.conf has no settings, do not include anything +- [[ $FONT ]] || [[ $KEYMAP ]] || return 0 ++ [[ -f /etc/vconsole.conf ]] && . /etc/vconsole.conf + fi + +- inst_multiple -o $systemdutildir/systemd-vconsole-setup + KBDSUBDIRS=consolefonts,consoletrans,keymaps,unimaps + DEFAULT_FONT="${i18n_default_font:-LatArCyrHeb-16}" + I18N_CONF="/etc/locale.conf" +@@ -213,10 +209,20 @@ install() { + inst_simple ${kbddir}/unimaps/${FONT_UNIMAP}.uni + fi + +- mksubdirs ${initdir}${I18N_CONF} +- mksubdirs ${initdir}${VCONFIG_CONF} +- print_vars LC_ALL LANG >> ${initdir}${I18N_CONF} +- print_vars KEYMAP EXT_KEYMAPS UNICODE FONT FONT_MAP FONT_UNIMAP >> ${initdir}${VCONFIG_CONF} ++ if dracut_module_included "systemd" && [[ -f ${I18N_CONF} ]]; then ++ inst_simple ${I18N_CONF} ++ else ++ mksubdirs ${initdir}${I18N_CONF} ++ print_vars LC_ALL LANG >> ${initdir}${I18N_CONF} ++ fi ++ ++ if dracut_module_included "systemd" && [[ -f ${VCONFIG_CONF} ]]; then ++ inst_simple ${VCONFIG_CONF} ++ else ++ mksubdirs ${initdir}${VCONFIG_CONF} ++ print_vars KEYMAP EXT_KEYMAPS UNICODE FONT FONT_MAP FONT_UNIMAP >> ${initdir}${VCONFIG_CONF} ++ fi ++ + return 0 + } + +@@ -240,16 +246,13 @@ install() { + return 0 + } + +- if checks +- then ++ if checks; then + install_base + +- if [[ ${hostonly} ]] +- then ++ if [[ ${hostonly} ]] && ! [[ ${i18n_install_all} ]]; then + install_local_i18n || install_all_kbd + else + install_all_kbd + fi + fi + } +- diff --git a/0060-dracut.spec-add-new-modules.patch b/0060-dracut.spec-add-new-modules.patch new file mode 100644 index 0000000..0088720 --- /dev/null +++ b/0060-dracut.spec-add-new-modules.patch @@ -0,0 +1,24 @@ +From 57575f3c9c5323887b1aec7f04d1467ba1e5fb1b Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Dec 2013 17:27:57 +0100 +Subject: [PATCH] dracut.spec: add new modules + +--- + dracut.spec | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/dracut.spec b/dracut.spec +index 44171d8..91ec15d 100644 +--- a/dracut.spec ++++ b/dracut.spec +@@ -350,8 +350,10 @@ rm -rf -- $RPM_BUILD_ROOT + %{dracutlibdir}/modules.d/95rootfs-block + %{dracutlibdir}/modules.d/95dasd + %{dracutlibdir}/modules.d/95dasd_mod ++%{dracutlibdir}/modules.d/95dasd_rules + %{dracutlibdir}/modules.d/95fstab-sys + %{dracutlibdir}/modules.d/95zfcp ++%{dracutlibdir}/modules.d/95zfcp_rules + %{dracutlibdir}/modules.d/95terminfo + %{dracutlibdir}/modules.d/95udev-rules + %{dracutlibdir}/modules.d/95virtfs diff --git a/0061-dracut.spec-remove-suse-man-pages.patch b/0061-dracut.spec-remove-suse-man-pages.patch new file mode 100644 index 0000000..91ece10 --- /dev/null +++ b/0061-dracut.spec-remove-suse-man-pages.patch @@ -0,0 +1,35 @@ +From 11ee2ca8d497980c98c3c5a2c3be25b4724c43a0 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Dec 2013 17:31:09 +0100 +Subject: [PATCH] dracut.spec: remove suse man pages + +--- + dracut.spec | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/dracut.spec b/dracut.spec +index 91ec15d..bd35aa7 100644 +--- a/dracut.spec ++++ b/dracut.spec +@@ -246,15 +246,18 @@ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log + touch $RPM_BUILD_ROOT%{_localstatedir}/log/dracut.log + mkdir -p $RPM_BUILD_ROOT%{_sharedstatedir}/initramfs + +-%if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version} ++%if 0%{?fedora} || 0%{?rhel} + install -m 0644 dracut.conf.d/fedora.conf.example $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/01-dist.conf +-install -m 0644 dracut.conf.d/fips.conf.example $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/40-fips.conf ++rm -f $RPM_BUILD_ROOT%{_mandir}/man?/*suse* + %endif +- + %if 0%{?suse_version} + install -m 0644 dracut.conf.d/suse.conf.example $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/01-dist.conf + %endif + ++%if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version} ++install -m 0644 dracut.conf.d/fips.conf.example $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/40-fips.conf ++%endif ++ + %if 0%{?fedora} <= 12 && 0%{?rhel} < 6 && 0%{?suse_version} <= 9999 + rm -f -- $RPM_BUILD_ROOT%{_bindir}/mkinitrd + rm -f -- $RPM_BUILD_ROOT%{_bindir}/lsinitrd diff --git a/dracut.spec b/dracut.spec index 15c792b..35eb311 100644 --- a/dracut.spec +++ b/dracut.spec @@ -10,7 +10,7 @@ Name: dracut Version: 034 -Release: 24.git20131030%{?dist} +Release: 62.git20131205%{?dist} Summary: Initramfs generator using udev %if 0%{?fedora} || 0%{?rhel} @@ -52,6 +52,44 @@ Patch20: 0020-Handle-crypto-modules-with-and-without-modaliases.patch Patch21: 0021-fips-include-crct10dif_generic.patch Patch22: 0022-iscsi-nbd-do-not-try-to-mount-the-whole-disk-if-root.patch Patch23: 0023-dracut.spec-move-sbin-dracut-to-usr-sbin-dracut.patch +Patch24: 0024-dracut.sh-fixed-PATH-shortener.patch +Patch25: 0025-dracut.modules.7.asc-removed-empty-section.patch +Patch26: 0026-fips-also-install-etc-system-fips-in-the-initramfs.patch +Patch27: 0027-dracut-functions.sh-Avoid-loading-unnecessary-32-bit.patch +Patch28: 0028-iscsi-nbd-do-not-fail-in-hostonly-mode.patch +Patch29: 0029-systemd-do-not-exit-the-initqueue-if-systemd-asks-a-.patch +Patch30: 0030-Run-xz-and-lzma-with-multiple-threads.patch +Patch31: 0031-kernel-modules-add-ohci-pci-to-the-list-of-forced-mo.patch +Patch32: 0032-lvm-do-not-run-pvscan-for-lvmetad-update.patch +Patch33: 0033-fips-fix-RHEV-vmlinuz-check.patch +Patch34: 0034-dracut.cmdline.7.asc-document-server-ip-of-ip-parame.patch +Patch35: 0035-dracut.sh-_get_fs_type-if-block-device-exists-return.patch +Patch36: 0036-network-net-lib.sh-wait_for_if_up-wait-for-state-UP.patch +Patch37: 0037-network-net-lib.sh-iface_has_link-fixup.patch +Patch38: 0038-network-ifup.sh-before-doing-dhcp-check-if-the-link-.patch +Patch39: 0039-base-dracut-lib.sh-wait_for_dev-relax-requirement.patch +Patch40: 0040-resume-autoconf-resume.patch +Patch41: 0041-resume-no-more-autoresume.patch +Patch42: 0042-dracut.sh-skip-crypt-swaps-with-password-files.patch +Patch43: 0043-dracut-functions.sh-do-not-force-require-modules.bui.patch +Patch44: 0044-10i18n-parse-i18n.sh-fixed-vconsole.conf-locale.conf.patch +Patch45: 0045-95dasd-Install-kernel-modules-only-once.patch +Patch46: 0046-95dasd-Only-install-module-if-normalize_dasd_arg-is-.patch +Patch47: 0047-95dasd_mod-make-dasd_cio_free-optional.patch +Patch48: 0048-95zfcp-Make-installation-optional.patch +Patch49: 0049-95znet-Make-installation-optional.patch +Patch50: 0050-Add-DASD-configuration-for-SuSE.patch +Patch51: 0051-Add-zfcp-scripts-for-SUSE.patch +Patch52: 0052-Make-logfile-configurable.patch +Patch53: 0053-mkinitrd-suse-Add-SUSE-compability-wrapper-for-dracu.patch +Patch54: 0054-mkinitrd-suse.8.asc-Add-manpage-for-SUSE-compat-mkin.patch +Patch55: 0055-Fixup-keymap-setting-for-openSUSE.patch +Patch56: 0056-Fixup-script-permissions.patch +Patch57: 0057-Remove-shebang-from-shell-completion-files.patch +Patch58: 0058-lvm-install-thin-tools-only-when-needed-in-hostonly.patch +Patch59: 0059-i18n-introduce-i18n_install_all-to-install-everythin.patch +Patch60: 0060-dracut.spec-add-new-modules.patch +Patch61: 0061-dracut.spec-remove-suse-man-pages.patch BuildRequires: bash git @@ -270,15 +308,18 @@ mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log touch $RPM_BUILD_ROOT%{_localstatedir}/log/dracut.log mkdir -p $RPM_BUILD_ROOT%{_sharedstatedir}/initramfs -%if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version} +%if 0%{?fedora} || 0%{?rhel} install -m 0644 dracut.conf.d/fedora.conf.example $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/01-dist.conf -install -m 0644 dracut.conf.d/fips.conf.example $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/40-fips.conf +rm -f $RPM_BUILD_ROOT%{_mandir}/man?/*suse* %endif - %if 0%{?suse_version} install -m 0644 dracut.conf.d/suse.conf.example $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/01-dist.conf %endif +%if 0%{?fedora} || 0%{?rhel} || 0%{?suse_version} +install -m 0644 dracut.conf.d/fips.conf.example $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/40-fips.conf +%endif + %if 0%{?fedora} <= 12 && 0%{?rhel} < 6 && 0%{?suse_version} <= 9999 rm -f -- $RPM_BUILD_ROOT%{_bindir}/mkinitrd rm -f -- $RPM_BUILD_ROOT%{_bindir}/lsinitrd @@ -374,8 +415,10 @@ rm -rf -- $RPM_BUILD_ROOT %{dracutlibdir}/modules.d/95rootfs-block %{dracutlibdir}/modules.d/95dasd %{dracutlibdir}/modules.d/95dasd_mod +%{dracutlibdir}/modules.d/95dasd_rules %{dracutlibdir}/modules.d/95fstab-sys %{dracutlibdir}/modules.d/95zfcp +%{dracutlibdir}/modules.d/95zfcp_rules %{dracutlibdir}/modules.d/95terminfo %{dracutlibdir}/modules.d/95udev-rules %{dracutlibdir}/modules.d/95virtfs @@ -472,6 +515,16 @@ rm -rf -- $RPM_BUILD_ROOT %endif %changelog +* Thu Dec 05 2013 Harald Hoyer 034-62.git20131205 +- fixed PATH shortener +- also install /etc/system-fips in the initramfs +- nbd, do not fail in hostonly mode +- add ohci-pci to the list of hardcoded modules +- lvm: do not run pvscan for lvmetad +- network fixes +- skip crypt swaps with password files +- fixed i18n + * Wed Oct 30 2013 Harald Hoyer 034-24.git20131030 - fixed booting with rd.iscsi.firmware and without root= - fips: include crct10dif_generic