From 7e00d97aa69a7f9810cd2483abad9f440047d0d7 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 21 Aug 2012 20:04:01 +0200 Subject: [PATCH] dracut-023-13.git20120821 - reintroduce rd.neednet, which reenables anaconda networking - fix some dracut-install corner cases - fix FIPS for /boot not on extra partition --- ...to-recent-version-of-http-www.gnu.or.patch | 138 ++++++++++++++++++ ...onf.d-gentoo.conf.example-fix-header.patch | 19 +++ ....asc-s-dracut-conf.d-dracut.conf.d-g.patch | 24 +++ ...include-the-omap_hsmmc-module-on-arm.patch | 22 +++ ...eate-need_shutdown-if-we-have-assemb.patch | 60 ++++++++ 0006-add-back-scsi_wait_scan.patch | 34 +++++ 0007-network-reintroduce-rd.neednet.patch | 41 ++++++ ...-symlink-to-sysroot-boot-if-no-boot-.patch | 48 ++++++ ...nstall.c-Ensure-deps-are-resolved-wh.patch | 45 ++++++ ...nstall.c-Deal-gracefully-with-paths-.patch | 43 ++++++ ...nstall.c-No-need-to-compare-the-NULL.patch | 23 +++ ...srmove-systemd-installs-might-not-fi.patch | 41 ++++++ dracut.spec | 20 ++- 13 files changed, 556 insertions(+), 2 deletions(-) create mode 100644 0001-COPYING-updated-to-recent-version-of-http-www.gnu.or.patch create mode 100644 0002-dracut.conf.d-gentoo.conf.example-fix-header.patch create mode 100644 0003-dracut.conf.5.asc-s-dracut-conf.d-dracut.conf.d-g.patch create mode 100644 0004-include-the-omap_hsmmc-module-on-arm.patch create mode 100644 0005-mdraid-always-create-need_shutdown-if-we-have-assemb.patch create mode 100644 0006-add-back-scsi_wait_scan.patch create mode 100644 0007-network-reintroduce-rd.neednet.patch create mode 100644 0008-fips-set-boot-as-symlink-to-sysroot-boot-if-no-boot-.patch create mode 100644 0009-install-dracut-install.c-Ensure-deps-are-resolved-wh.patch create mode 100644 0010-install-dracut-install.c-Deal-gracefully-with-paths-.patch create mode 100644 0011-install-dracut-install.c-No-need-to-compare-the-NULL.patch create mode 100644 0012-udev-rules-Pre-usrmove-systemd-installs-might-not-fi.patch diff --git a/0001-COPYING-updated-to-recent-version-of-http-www.gnu.or.patch b/0001-COPYING-updated-to-recent-version-of-http-www.gnu.or.patch new file mode 100644 index 0000000..e23a921 --- /dev/null +++ b/0001-COPYING-updated-to-recent-version-of-http-www.gnu.or.patch @@ -0,0 +1,138 @@ +From aa11b710ce86190fbff9afeafedcbce85c7e9a7f Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 1 Aug 2012 15:53:25 +0200 +Subject: [PATCH] COPYING: updated to recent version of + http://www.gnu.org/licenses/gpl-2.0.txt + +--- + COPYING | 42 +++++++++++++++++++++--------------------- + 1 file changed, 21 insertions(+), 21 deletions(-) + +diff --git a/COPYING b/COPYING +index a43ea21..d159169 100644 +--- a/COPYING ++++ b/COPYING +@@ -1,12 +1,12 @@ +- GNU GENERAL PUBLIC LICENSE +- Version 2, June 1991 ++ GNU GENERAL PUBLIC LICENSE ++ Version 2, June 1991 + +- Copyright (C) 1989, 1991 Free Software Foundation, Inc. +- 675 Mass Ave, Cambridge, MA 02139, USA ++ Copyright (C) 1989, 1991 Free Software Foundation, Inc., ++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +- Preamble ++ Preamble + + The licenses for most software are designed to take away your + freedom to share and change it. By contrast, the GNU General Public +@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This + General Public License applies to most of the Free Software + Foundation's software and to any other program whose authors commit to + using it. (Some other Free Software Foundation software is covered by +-the GNU Library General Public License instead.) You can apply it to ++the GNU Lesser General Public License instead.) You can apply it to + your programs, too. + + When we speak of free software, we are referring to freedom, not +@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and + modification follow. +- +- GNU GENERAL PUBLIC LICENSE ++ ++ GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions: + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) +- ++ + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, + and can be reasonably considered independent and separate works in +@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent + access to copy the source code from the same place counts as + distribution of the source code, even though third parties are not + compelled to copy the source along with the object code. +- ++ + 4. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense or distribute the Program is +@@ -225,7 +225,7 @@ impose that choice. + + This section is intended to make thoroughly clear what is believed to + be a consequence of the rest of this License. +- ++ + 8. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License +@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals + of preserving the free status of all derivatives of our free software and + of promoting the sharing and reuse of software generally. + +- NO WARRANTY ++ NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY + FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER + PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. + +- END OF TERMS AND CONDITIONS +- +- Appendix: How to Apply These Terms to Your New Programs ++ END OF TERMS AND CONDITIONS ++ ++ How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it +@@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found. + + +- Copyright (C) 19yy ++ Copyright (C) + + 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 +@@ -303,16 +303,16 @@ the "copyright" line and a pointer to where the full notice is found. + 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, write to the Free Software +- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ You should have received a copy of the GNU General Public License along ++ with this program; if not, write to the Free Software Foundation, Inc., ++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + Also add information on how to contact you by electronic and paper mail. + + If the program is interactive, make it output a short notice like this + when it starts in an interactive mode: + +- Gnomovision version 69, Copyright (C) 19yy name of author ++ Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. +@@ -335,5 +335,5 @@ necessary. Here is a sample; alter the names: + This General Public License does not permit incorporating your program into + proprietary programs. If your program is a subroutine library, you may + consider it more useful to permit linking proprietary applications with the +-library. If this is what you want to do, use the GNU Library General ++library. If this is what you want to do, use the GNU Lesser General + Public License instead of this License. diff --git a/0002-dracut.conf.d-gentoo.conf.example-fix-header.patch b/0002-dracut.conf.d-gentoo.conf.example-fix-header.patch new file mode 100644 index 0000000..6beba7a --- /dev/null +++ b/0002-dracut.conf.d-gentoo.conf.example-fix-header.patch @@ -0,0 +1,19 @@ +From a41dc8f96903b750259e19fe724cd808b7570765 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= +Date: Wed, 1 Aug 2012 16:23:24 +0200 +Subject: [PATCH] dracut.conf.d/gentoo.conf.example: fix header + +--- + dracut.conf.d/gentoo.conf.example | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dracut.conf.d/gentoo.conf.example b/dracut.conf.d/gentoo.conf.example +index 6b74954..7b94cf5 100644 +--- a/dracut.conf.d/gentoo.conf.example ++++ b/dracut.conf.d/gentoo.conf.example +@@ -1,4 +1,4 @@ +-# /etc/dracut.conf.d/gentoo-openrc.conf ++# /etc/dracut.conf.d/gentoo.conf + # Dracut config file customized for Gentoo Base System release 2 + + udevdir=/lib/udev diff --git a/0003-dracut.conf.5.asc-s-dracut-conf.d-dracut.conf.d-g.patch b/0003-dracut.conf.5.asc-s-dracut-conf.d-dracut.conf.d-g.patch new file mode 100644 index 0000000..8d32594 --- /dev/null +++ b/0003-dracut.conf.5.asc-s-dracut-conf.d-dracut.conf.d-g.patch @@ -0,0 +1,24 @@ +From dece5ee1f530335d2c2c10472733f838f6027434 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 1 Aug 2012 16:35:46 +0200 +Subject: [PATCH] dracut.conf.5.asc: s#dracut/conf.d#dracut.conf.d#g + +--- + dracut.conf.5.asc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc +index 89bbf61..f3a7de6 100644 +--- a/dracut.conf.5.asc ++++ b/dracut.conf.5.asc +@@ -127,8 +127,8 @@ _/etc/dracut.conf_:: + Old configuration file. You better use your own file in + _/etc/dracut/conf.d/_. + +-_/etc/dracut/conf.d/_:: +- Any _/etc/dracut/conf.d/*.conf_ file can overwrite the values in ++_/etc/dracut.conf.d/_:: ++ Any _/etc/dracut.conf.d/*.conf_ file can overwrite the values in + _/etc/dracut.conf_. The configuration files are read in alphanumerical + order. + diff --git a/0004-include-the-omap_hsmmc-module-on-arm.patch b/0004-include-the-omap_hsmmc-module-on-arm.patch new file mode 100644 index 0000000..8687717 --- /dev/null +++ b/0004-include-the-omap_hsmmc-module-on-arm.patch @@ -0,0 +1,22 @@ +From ec6d8eab6963078bc472f7512cc1a1491dee98e6 Mon Sep 17 00:00:00 2001 +From: Dennis Gilmore +Date: Thu, 2 Aug 2012 05:12:54 -0500 +Subject: [PATCH] include the omap_hsmmc module on arm + +--- + modules.d/90kernel-modules/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index 4e75ef8..e58b257 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -40,7 +40,7 @@ installkernel() { + hostonly='' instmods usb_storage sdhci sdhci-pci + + # arm specific modules +- hostonly='' instmods sdhci_esdhc_imx mmci sdhci_tegra mvsdio omap omapdrm sdhci_dove ahci_platform pata_imx sata_mv ++ hostonly='' instmods sdhci_esdhc_imx mmci sdhci_tegra mvsdio omap omapdrm omap_hsmmc sdhci_dove ahci_platform pata_imx sata_mv + + # install keyboard support + hostonly='' instmods atkbd i8042 usbhid hid-apple hid-sunplus hid-cherry hid-logitech hid-logitech-dj hid-microsoft ehci-hcd ohci-hcd uhci-hcd xhci-hcd hid_generic diff --git a/0005-mdraid-always-create-need_shutdown-if-we-have-assemb.patch b/0005-mdraid-always-create-need_shutdown-if-we-have-assemb.patch new file mode 100644 index 0000000..3a487a9 --- /dev/null +++ b/0005-mdraid-always-create-need_shutdown-if-we-have-assemb.patch @@ -0,0 +1,60 @@ +From e4297a66b1458329437e35bf7d99a4f20c1d824d Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 14 Aug 2012 17:44:46 +0200 +Subject: [PATCH] mdraid: always create need_shutdown, if we have assembled a + raid + +--- + modules.d/90mdraid/mdraid-cleanup.sh | 4 ++-- + modules.d/90mdraid/mdraid-needshutdown.sh | 11 +++++++++++ + modules.d/90mdraid/module-setup.sh | 1 + + 3 files changed, 14 insertions(+), 2 deletions(-) + create mode 100755 modules.d/90mdraid/mdraid-needshutdown.sh + +diff --git a/modules.d/90mdraid/mdraid-cleanup.sh b/modules.d/90mdraid/mdraid-cleanup.sh +index 9c4bc18..da86d65 100755 +--- a/modules.d/90mdraid/mdraid-cleanup.sh ++++ b/modules.d/90mdraid/mdraid-cleanup.sh +@@ -14,11 +14,11 @@ for md in /dev/md[0-9_]*; do + containers="$containers $md" + continue + fi +- mdadm $_offroot -S "$md" >/dev/null 2>&1 || need_shutdown ++ mdadm $_offroot -S "$md" >/dev/null 2>&1 + done + + for md in $containers; do +- mdadm $_offroot -S "$md" >/dev/null 2>&1 || need_shutdown ++ mdadm $_offroot -S "$md" >/dev/null 2>&1 + done + + unset containers udevinfo _offroot +diff --git a/modules.d/90mdraid/mdraid-needshutdown.sh b/modules.d/90mdraid/mdraid-needshutdown.sh +new file mode 100755 +index 0000000..79f9852 +--- /dev/null ++++ b/modules.d/90mdraid/mdraid-needshutdown.sh +@@ -0,0 +1,11 @@ ++#!/bin/sh ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh ++ ++for md in /dev/md[0-9_]*; do ++ [ -b "$md" ] || continue ++ need_shutdown ++ break ++done +diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh +index 8522756..6119226 100755 +--- a/modules.d/90mdraid/module-setup.sh ++++ b/modules.d/90mdraid/module-setup.sh +@@ -84,6 +84,7 @@ install() { + inst_hook pre-udev 30 "$moddir/mdmon-pre-udev.sh" + inst_hook pre-trigger 30 "$moddir/parse-md.sh" + inst_hook pre-mount 10 "$moddir/mdraid-waitclean.sh" ++ inst_hook cleanup 99 "$moddir/mdraid-needshutdown.sh" + inst_hook shutdown 30 "$moddir/md-shutdown.sh" + inst_script "$moddir/mdraid-cleanup.sh" /sbin/mdraid-cleanup + inst_script "$moddir/mdraid_start.sh" /sbin/mdraid_start diff --git a/0006-add-back-scsi_wait_scan.patch b/0006-add-back-scsi_wait_scan.patch new file mode 100644 index 0000000..7f7dfb2 --- /dev/null +++ b/0006-add-back-scsi_wait_scan.patch @@ -0,0 +1,34 @@ +From bdf1f472b461747d4cb9f32ae18bb2033e592970 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 17 Aug 2012 09:22:12 +0200 +Subject: [PATCH] add back scsi_wait_scan + +--- + modules.d/98systemd/dracut-initqueue.sh | 1 + + modules.d/99base/init.sh | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/modules.d/98systemd/dracut-initqueue.sh b/modules.d/98systemd/dracut-initqueue.sh +index e9da432..773e4cd 100755 +--- a/modules.d/98systemd/dracut-initqueue.sh ++++ b/modules.d/98systemd/dracut-initqueue.sh +@@ -25,6 +25,7 @@ while :; do + check_finished && break + + udevsettle ++ modprobe -q scsi_wait_scan && modprobe -q -r scsi_wait_scan + + check_finished && break + +diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh +index 16c8958..4c5a2f8 100755 +--- a/modules.d/99base/init.sh ++++ b/modules.d/99base/init.sh +@@ -156,6 +156,7 @@ while :; do + check_finished && break + + udevsettle ++ modprobe -q scsi_wait_scan && modprobe -q -r scsi_wait_scan + + check_finished && break + diff --git a/0007-network-reintroduce-rd.neednet.patch b/0007-network-reintroduce-rd.neednet.patch new file mode 100644 index 0000000..83642bf --- /dev/null +++ b/0007-network-reintroduce-rd.neednet.patch @@ -0,0 +1,41 @@ +From 48dba7f9ace186871528eb4d83cd96e92e853c6c Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 21 Aug 2012 14:47:14 +0200 +Subject: [PATCH] network: reintroduce rd.neednet + +rd.neednet is used by anaconda and the network interfaces cannot +be known in advance. +--- + dracut.cmdline.7.asc | 3 +++ + modules.d/40network/net-genrules.sh | 4 +++- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index 71d02ca..c376d79 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -384,6 +384,9 @@ interface name. Better name it "bootnet" or "bluesocket". + **biosdevname=0**:: + boolean, turn off biosdevname network interface renaming + ++**rd.neednet=1**:: ++ boolean, bring up network even without netroot set ++ + **vlan=__:__**:: + Setup vlan device named on . + We support the four styles of vlan names: VLAN_PLUS_VID (vlan0005), VLAN_PLUS_VID_NO_PAD (vlan5), +diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh +index 8aeee2d..6a58ab5 100755 +--- a/modules.d/40network/net-genrules.sh ++++ b/modules.d/40network/net-genrules.sh +@@ -15,7 +15,9 @@ fix_bootif() { + } + + # Don't continue if we don't need network +-[ -z "$netroot" ] && ! [ -e "/tmp/net.ifaces" ] && return; ++if [ -z "$netroot" ] && [ ! -e "/tmp/net.ifaces" ] && ! getargbool 0 rd.neednet >/dev/null; then ++ return ++fi + + # Write udev rules + { diff --git a/0008-fips-set-boot-as-symlink-to-sysroot-boot-if-no-boot-.patch b/0008-fips-set-boot-as-symlink-to-sysroot-boot-if-no-boot-.patch new file mode 100644 index 0000000..91a7f93 --- /dev/null +++ b/0008-fips-set-boot-as-symlink-to-sysroot-boot-if-no-boot-.patch @@ -0,0 +1,48 @@ +From c9a9968dfc7f8fb644909cbb52e27fe7312156a7 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 21 Aug 2012 15:01:08 +0200 +Subject: [PATCH] fips: set /boot as symlink to /sysroot/boot if no boot= + parameter + +otherwise sha512hmac will error out with: + +sha512hmac -c /sysroot/boot/.vmlinuz-2.6.32-220.el6.x86_64.hmac +Error opening "/boot/vmlinuz-2.6.32-220.el6.x86_64": No such file or directory. +--- + 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 67eefb8..324e062 100755 +--- a/modules.d/01fips/fips.sh ++++ b/modules.d/01fips/fips.sh +@@ -45,23 +45,23 @@ mount_boot() + mkdir /boot + info "Mounting $boot as /boot" + mount -oro "$boot" /boot || return 1 ++ elif [ -d "$NEWROOT/boot" ]; then ++ rm -fr /boot ++ ln -sf "$NEWROOT/boot" /boot + fi + } + + do_fips() + { + info "Checking integrity of kernel" +- newroot=$NEWROOT + KERNEL=$(uname -r) + +- [ -e "$newroot/boot/.vmlinuz-${KERNEL}.hmac" ] || unset newroot +- +- if ! [ -e "$newroot/boot/.vmlinuz-${KERNEL}.hmac" ]; then +- warn "$newroot/boot/.vmlinuz-${KERNEL}.hmac does not exist" ++ if ! [ -e "/boot/.vmlinuz-${KERNEL}.hmac" ]; then ++ warn "/boot/.vmlinuz-${KERNEL}.hmac does not exist" + return 1 + fi + +- sha512hmac -c "$newroot/boot/.vmlinuz-${KERNEL}.hmac" || return 1 ++ sha512hmac -c "/boot/.vmlinuz-${KERNEL}.hmac" || return 1 + + FIPSMODULES=$(cat /etc/fipsmodules) + diff --git a/0009-install-dracut-install.c-Ensure-deps-are-resolved-wh.patch b/0009-install-dracut-install.c-Ensure-deps-are-resolved-wh.patch new file mode 100644 index 0000000..ab4124a --- /dev/null +++ b/0009-install-dracut-install.c-Ensure-deps-are-resolved-wh.patch @@ -0,0 +1,45 @@ +From 68318328f1fc394ac043b939425715ba78dc6f57 Mon Sep 17 00:00:00 2001 +From: Colin Guthrie +Date: Tue, 14 Aug 2012 22:09:39 +0100 +Subject: [PATCH] install/dracut-install.c: Ensure deps are resolved when + handling scripts + +If we are doing lazy dep solving and happen to process a script with a +shebang on e.g. /bin/bash before we encounter the actual binary itself +we effectively ignore the fact that we've been asked to resolve the deps +and put the item in the 'seen' hashmap. Thus when we later really do try +and resolve deps, we short circuit and don't do anything. + +Example test case: + +$ cd +$ mkdir -p foo/bin +$ cp /bin/bash foo/bin +$ echo '#!/bin/bash' >foo/bin/script +$ dracut-install -D $HOME/foo -R $HOME/foo/bin/script $HOME/foo/bin/bash +--- + install/dracut-install.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/install/dracut-install.c b/install/dracut-install.c +index e79065d..9a244ba 100644 +--- a/install/dracut-install.c ++++ b/install/dracut-install.c +@@ -392,10 +392,15 @@ static int dracut_install(const char *src, const char *dst, bool isdir, bool res + } + + if (ret == 0) { +- log_debug("'%s' already exists", fulldstpath); ++ if (resolvedeps) { ++ log_debug("'%s' already exists, but checking for any deps", fulldstpath); ++ ret = resolve_deps(src); ++ } else ++ log_debug("'%s' already exists", fulldstpath); ++ + free(fulldstpath); + /* dst does already exist */ +- return 0; ++ return ret; + } + + /* check destination directory */ diff --git a/0010-install-dracut-install.c-Deal-gracefully-with-paths-.patch b/0010-install-dracut-install.c-Deal-gracefully-with-paths-.patch new file mode 100644 index 0000000..6821a82 --- /dev/null +++ b/0010-install-dracut-install.c-Deal-gracefully-with-paths-.patch @@ -0,0 +1,43 @@ +From f9c7788ba5bbb9785ba9946c7a6500fc0c782244 Mon Sep 17 00:00:00 2001 +From: Colin Guthrie +Date: Tue, 14 Aug 2012 22:32:00 +0100 +Subject: [PATCH] install/dracut-install.c: Deal gracefully with paths + containing double /'s + +While such paths should not be included internally, we cannot +guarantee that external scripts with shebangs will not do this. + +Some older versions of plymouth also resulted in double /'s +in some paths, so best deal with this gracefully. +--- + install/dracut-install.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/install/dracut-install.c b/install/dracut-install.c +index 9a244ba..dfee259 100644 +--- a/install/dracut-install.c ++++ b/install/dracut-install.c +@@ -64,7 +64,7 @@ static size_t dir_len(char const *file) + size_t length; + /* Strip the basename and any redundant slashes before it. */ + for (length = strlen(file); 0 < length; length--) +- if (file[length] == '/') ++ if (file[length] == '/' && file[length-1] != '/') + break; + return length; + } +@@ -91,7 +91,13 @@ static char *convert_abs_rel(const char *from, const char *target) + return strdup(from); + } + +- asprintf(&realtarget, "%s/%s", q, &p[dirlen + 1]); ++ /* dir_len() skips double /'s e.g. //lib64, so we can't skip just one ++ * character - need to skip all leading /'s */ ++ rl = strlen(target); ++ for (i = dirlen+1; i < rl; ++i) ++ if (p[i] != '/') ++ break; ++ asprintf(&realtarget, "%s/%s", q, &p[i]); + free(p); + free(q); + diff --git a/0011-install-dracut-install.c-No-need-to-compare-the-NULL.patch b/0011-install-dracut-install.c-No-need-to-compare-the-NULL.patch new file mode 100644 index 0000000..001bc71 --- /dev/null +++ b/0011-install-dracut-install.c-No-need-to-compare-the-NULL.patch @@ -0,0 +1,23 @@ +From 68c49db95233d03a25b27e01709cd052d60cef7a Mon Sep 17 00:00:00 2001 +From: Colin Guthrie +Date: Sat, 18 Aug 2012 11:38:02 +0100 +Subject: [PATCH] install/dracut-install.c: No need to compare the NULL byte + each time. + +--- + install/dracut-install.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/install/dracut-install.c b/install/dracut-install.c +index dfee259..c95b7c2 100644 +--- a/install/dracut-install.c ++++ b/install/dracut-install.c +@@ -63,7 +63,7 @@ static size_t dir_len(char const *file) + { + size_t length; + /* Strip the basename and any redundant slashes before it. */ +- for (length = strlen(file); 0 < length; length--) ++ for (length = strlen(file)-1; 0 < length; length--) + if (file[length] == '/' && file[length-1] != '/') + break; + return length; diff --git a/0012-udev-rules-Pre-usrmove-systemd-installs-might-not-fi.patch b/0012-udev-rules-Pre-usrmove-systemd-installs-might-not-fi.patch new file mode 100644 index 0000000..7967217 --- /dev/null +++ b/0012-udev-rules-Pre-usrmove-systemd-installs-might-not-fi.patch @@ -0,0 +1,41 @@ +From f9452c94c05e505d358329fbb228da7979770c4c Mon Sep 17 00:00:00 2001 +From: Colin Guthrie +Date: Thu, 16 Aug 2012 14:27:22 +0100 +Subject: [PATCH] udev-rules: Pre usrmove systemd installs might not find + udevd. + +If users had switched to systemd-183+ but have not completed +the usrmove, then the variable ${systemdutildir} will likely +refer to /usr/lib/systemd NOT /lib/systemd and thus the +systemd-udevd daemon may not be found. + +So let's try a little harder and add another hard coded path +and if we don't find it, then bail out hard. +--- + modules.d/95udev-rules/module-setup.sh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh +index 2e3c955..5e1cce5 100755 +--- a/modules.d/95udev-rules/module-setup.sh ++++ b/modules.d/95udev-rules/module-setup.sh +@@ -12,7 +12,7 @@ install() { + /etc/udev/udev.conf /etc/group + + [ -d ${initdir}/lib/systemd ] || mkdir -p ${initdir}/lib/systemd +- for _i in ${systemdutildir}/systemd-udevd ${udevdir}/udevd /sbin/udevd; do ++ for _i in ${systemdutildir}/systemd-udevd ${udevdir}/udevd /lib/systemd/systemd-udevd /sbin/udevd; do + [ -x "$_i" ] || continue + inst "$_i" + +@@ -21,6 +21,10 @@ install() { + fi + break + done ++ if ! [[ -e ${initdir}/lib/systemd/systemd-udevd ]]; then ++ derror "Cannot find [systemd-]udevd binary!" ++ exit 1 ++ fi + + inst_rules 50-udev-default.rules 60-persistent-storage.rules \ + 61-persistent-storage-edd.rules 80-drivers.rules 95-udev-late.rules \ diff --git a/dracut.spec b/dracut.spec index e7e9012..e6ae31c 100644 --- a/dracut.spec +++ b/dracut.spec @@ -10,7 +10,7 @@ Name: dracut Version: 023 -Release: 2%{?dist} +Release: 13.git20120821%{?dist} Summary: Initramfs generator using udev %if 0%{?fedora} || 0%{?rhel} @@ -29,8 +29,19 @@ URL: https://dracut.wiki.kernel.org/ # Source can be generated by # http://git.kernel.org/?p=boot/dracut/dracut.git;a=snapshot;h=%{version};sf=tgz Source0: http://www.kernel.org/pub/linux/utils/boot/dracut/dracut-%{version}.tar.bz2 +Patch1: 0001-COPYING-updated-to-recent-version-of-http-www.gnu.or.patch +Patch2: 0002-dracut.conf.d-gentoo.conf.example-fix-header.patch +Patch3: 0003-dracut.conf.5.asc-s-dracut-conf.d-dracut.conf.d-g.patch +Patch4: 0004-include-the-omap_hsmmc-module-on-arm.patch +Patch5: 0005-mdraid-always-create-need_shutdown-if-we-have-assemb.patch +Patch6: 0006-add-back-scsi_wait_scan.patch +Patch7: 0007-network-reintroduce-rd.neednet.patch +Patch8: 0008-fips-set-boot-as-symlink-to-sysroot-boot-if-no-boot-.patch +Patch9: 0009-install-dracut-install.c-Ensure-deps-are-resolved-wh.patch +Patch10: 0010-install-dracut-install.c-Deal-gracefully-with-paths-.patch +Patch11: 0011-install-dracut-install.c-No-need-to-compare-the-NULL.patch +Patch12: 0012-udev-rules-Pre-usrmove-systemd-installs-might-not-fi.patch -Patch1: 0001-include-the-omap_hsmmc-module-on-arm.patch BuildRequires: dash bash git @@ -363,6 +374,11 @@ rm -rf $RPM_BUILD_ROOT %dir /var/lib/dracut/overlay %changelog +* Tue Aug 21 2012 Harald Hoyer 023-13.git20120821 +- reintroduce rd.neednet, which reenables anaconda networking +- fix some dracut-install corner cases +- fix FIPS for /boot not on extra partition + * Wed Aug 01 2012 Dennis Gilmore - 023-2 - add patch to include omap_hsmmc for arm