dracut 045-18.git20170515

- git snapshot
This commit is contained in:
Harald Hoyer 2017-05-15 14:30:21 +02:00
parent 0da17b8999
commit 3763a85444
199 changed files with 752 additions and 14707 deletions

1
.gitignore vendored
View File

@ -29,3 +29,4 @@
/dracut-042.tar.xz
/dracut-043.tar.xz
/dracut-044.tar.xz
/dracut-045.tar.xz

View File

@ -0,0 +1,98 @@
From 2a1723ed83accdcb6871e12c722c03dac35dc35e Mon Sep 17 00:00:00 2001
From: Moritz Maxeiner <moritz@ucworks.org>
Date: Fri, 10 Jul 2015 15:38:59 +0200
Subject: [PATCH] crypt-gpg: For GnuPG >= 2.1 support OpenPGP smartcards
---
modules.d/91crypt-gpg/crypt-gpg-lib.sh | 34 ++++++++++++++++++++++++++++++++--
modules.d/91crypt-gpg/module-setup.sh | 17 +++++++++++++++++
2 files changed, 49 insertions(+), 2 deletions(-)
diff --git a/modules.d/91crypt-gpg/crypt-gpg-lib.sh b/modules.d/91crypt-gpg/crypt-gpg-lib.sh
index 5c7ea855..b85ed2b8 100755
--- a/modules.d/91crypt-gpg/crypt-gpg-lib.sh
+++ b/modules.d/91crypt-gpg/crypt-gpg-lib.sh
@@ -4,7 +4,7 @@ command -v ask_for_password >/dev/null || . /lib/dracut-crypt-lib.sh
# gpg_decrypt mnt_point keypath keydev device
#
-# Decrypts encrypted symmetrically key to standard output.
+# Decrypts symmetrically encrypted (password or OpenPGP smartcard) key to standard output.
#
# mnt_point - mount point where <keydev> is already mounted
# keypath - GPG encrypted key path relative to <mnt_point>
@@ -22,10 +22,40 @@ gpg_decrypt() {
mkdir -m 0700 -p "$gpghome"
+ # Setup GnuPG home and gpg-agent for usage of OpenPGP smartcard.
+ # This requires GnuPG >= 2.1, as it uses the new ,,pinentry-mode´´
+ # feature, which - when set to ,,loopback´´ - allows us to pipe
+ # the smartcard's pin to GnuPG (instead of using a normal pinentry
+ # program needed with GnuPG < 2.1), making for uncomplicated
+ # integration with the existing codebase.
+ local useSmartcard="0"
+ local gpgMajorVersion="$(gpg --version | sed -n 1p | sed -n -r -e 's|.* ([0-9]*).*|\1|p')"
+ local gpgMinorVersion="$(gpg --version | sed -n 1p | sed -n -r -e 's|.* [0-9]*\.([0-9]*).*|\1|p')"
+
+ if [ "${gpgMajorVersion}" -ge 2 ] && [ "${gpgMinorVersion}" -ge 1 ] \
+ && [ -f /root/crypt-public-key.gpg ] && getargbool 1 rd.luks.smartcard ; then
+ useSmartcard="1"
+ echo "allow-loopback-pinentry" >> "$gpghome/gpg-agent.conf"
+ GNUPGHOME="$gpghome" gpg-agent --quiet --daemon
+ GNUPGHOME="$gpghome" gpg --quiet --no-tty --import < /root/crypt-public-key.gpg
+ local smartcardSerialNumber="$(GNUPGHOME=$gpghome gpg --no-tty --card-status \
+ | sed -n -r -e 's|Serial number.*: ([0-9]*)|\1|p' | tr -d '\n')"
+ if [ -n "${smartcardSerialNumber}" ]; then
+ inputPrompt="PIN (OpenPGP card ${smartcardSerialNumber})"
+ fi
+ GNUPGHOME="$gpghome" gpg-connect-agent 1>/dev/null learn /bye
+ opts="$opts --pinentry-mode=loopback"
+ fi
+
ask_for_password \
--cmd "gpg $opts --decrypt $mntp/$keypath" \
- --prompt "Password ($keypath on $keydev for $device)" \
+ --prompt "${inputPrompt:-Password ($keypath on $keydev for $device)}" \
--tries 3 --tty-echo-off
+ # Clean up the smartcard gpg-agent
+ if [ "${useSmartcard}" == "1" ]; then
+ GNUPGHOME="$gpghome" gpg-connect-agent 1>/dev/null killagent /bye
+ fi
+
rm -rf -- "$gpghome"
}
diff --git a/modules.d/91crypt-gpg/module-setup.sh b/modules.d/91crypt-gpg/module-setup.sh
index d328c04c..1323a181 100755
--- a/modules.d/91crypt-gpg/module-setup.sh
+++ b/modules.d/91crypt-gpg/module-setup.sh
@@ -5,6 +5,12 @@
check() {
require_binaries gpg || return 1
+ if [ -f "${initdir}/root/crypt-public-key.gpg" ]; then
+ require_binaries gpg-agent || return 1
+ require_binaries gpg-connect-agent || return 1
+ require_binaries /usr/libexec/scdaemon || return 1
+ fi
+
return 255
}
@@ -17,4 +23,15 @@ depends() {
install() {
inst_multiple gpg
inst "$moddir/crypt-gpg-lib.sh" "/lib/dracut-crypt-gpg-lib.sh"
+
+ local gpgMajorVersion="$(gpg --version | sed -n 1p | sed -n -r -e 's|.* ([0-9]*).*|\1|p')"
+ local gpgMinorVersion="$(gpg --version | sed -n 1p | sed -n -r -e 's|.* [0-9]*\.([0-9]*).*|\1|p')"
+ if [ "${gpgMajorVersion}" -ge 2 ] && [ "${gpgMinorVersion}" -ge 1 ] && [ -f /etc/dracut.conf.d/crypt-public-key.gpg ]; then
+ inst_multiple gpg-agent
+ inst_multiple gpg-connect-agent
+ inst_multiple /usr/libexec/scdaemon || derror "crypt-gpg: gnugpg with scdaemon required for smartcard support in the initramfs"
+ cp "/etc/dracut.conf.d/crypt-public-key.gpg" "${initdir}/root/"
+ elif [ -f /etc/dracut.conf.d/crypt-public-key.gpg ]; then
+ dwarning "crypt-gpg: gnupg >= 2.1 required for smartcard support in the initramfs"
+ fi
}

View File

@ -1,22 +0,0 @@
From 6ed1d9fd07d7b081296aab687e07653f0eb295e3 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Nov 2015 15:50:39 +0100
Subject: [PATCH] dmsquash-live/dmsquash-live-root.sh: fixed typo
---
modules.d/90dmsquash-live/dmsquash-live-root.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
index ffa1e7a..fa44a03 100755
--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
+++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
@@ -249,7 +249,7 @@ if [ -n "$FSIMG" ] ; then
else
unpack_archive $FSIMG /run/initramfs/fsimg/
fi
- FSIMG = /run/initramfs/fsimg/rootfs.img
+ FSIMG=/run/initramfs/fsimg/rootfs.img
fi
if [ -n "$writable_fsimg" ] || [ -z "$SQUASHED" -a -n "$live_ram" ] ||
[ "$overlay" = none -o "$overlay" = None -o "$overlay" = NONE ]; then

View File

@ -0,0 +1,67 @@
From 98047e08d02b91f632ec8554fc02af05069216dd Mon Sep 17 00:00:00 2001
From: Moritz Maxeiner <moritz@ucworks.org>
Date: Mon, 13 Jul 2015 17:53:29 +0200
Subject: [PATCH] crypt-gpg: Add README describing the procedure of moving from
password-only gpg keyfile to password/smartcard gpg keyfile
---
modules.d/91crypt-gpg/README | 50 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
create mode 100644 modules.d/91crypt-gpg/README
diff --git a/modules.d/91crypt-gpg/README b/modules.d/91crypt-gpg/README
new file mode 100644
index 00000000..be6df55a
--- /dev/null
+++ b/modules.d/91crypt-gpg/README
@@ -0,0 +1,50 @@
+# Directions for changing a system from password-based gpg keyfile
+# to smartcard-based gpg keyfile
+
+# Be sure that you meet the following requirements:
+# 1. GnuPG >= 2.1 installed with
+# * Smartcard support enabled (scdaemon must be built)
+# * Direct CCID access built into scdaemon
+# 2. A password-based gpg keyfile ${KEYFILE} (e.g. "keyfile.gpg"):
+# That is, a file containing the slot key for LUKS, which
+# has been encrypted symmetrically with GnuPG using
+# a password.
+# 3. Your public OpenPGP identity ${RECIPIENT} (e.g. "3A696356")
+# 4. An OpenPGP smartcard holding the decryption key associated
+# with your public identity
+# 5. A CCID smartcard reader
+
+# Notes: Requirement 4. and 5. can of course be one device, e.g.
+# a USB token with an integrated OpenPGP smartcard
+
+# Make a backup of your keyfile (assuming it lies on the boot partition)
+$ cp /boot/${KEYFILE} /safe/place/keyfile.bak.gpg
+
+# Change your keyfile from purely password-based to both
+# password-based and key-based (you can then decrypt the keyfile
+# with either method). As an example aes256 is chosen, the cipher
+# is not important to this guide, but do note that your kernel
+# must support it at boot time (be it built into the kernel image
+# or loaded as a module from the initramfs).
+$ cat /safe/place/keyfile.bak.gpg | gpg -d | gpg --encrypt --recipient ${RECIPIENT} --cipher-algo aes256 --armor -c > /safe/place/keyfile_sc.gpg
+
+# Verify that you can decrypt your new keyfile both with the password
+# and your smartcard.
+# (with smartcard inserted, you should be prompted for your PIN, unless
+# you already did so and have not yet timed out)
+$ gpg -d /safe/place/keyfile_sc.gpg
+# (with smartcard disconnected, you should be prompted for your password)
+$ gpg -d /safe/place/keyfile_sc.gpg
+
+# After verification, replace your old keyfile with your new one
+$ su -c 'cp /safe/place/keyfile_sc.gpg /boot/${KEYFILE}'
+
+# Export your public key to where crypt-gpg can find it
+$ gpg --armor --export-options export-minimal --export ${RECIPIENT} > /safe/place/crypt-public-key.gpg
+$ su -c 'cp /safe/place/crypt-public-key.gpg /etc/dracut.conf.d/crypt-public-key.gpg'
+
+# Rebuild your initramfs as usual
+# When booting with any of the requirements not met, crypt-gpg will default to password-based keyfile unlocking.
+# If all requirements are met and smartcard support is not disabled by setting the kernel option "rd.luks.smartcard=0"
+# crypt-gpg will try find and use a connected OpenPGP smartcard by prompting you for the PIN and then
+# unlocking the gpg keyfile with the smartcard.

View File

@ -1,23 +0,0 @@
From 5d8d0ac814e015e4ad35a7e40a92b9f0bb554301 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Nov 2015 17:46:03 +0100
Subject: [PATCH] dmraid/61-dmraid-imsm.rules: add nowatch option for udev
udev rereads partitions, if watch is set for disks
---
modules.d/90dmraid/61-dmraid-imsm.rules | 2 ++
1 file changed, 2 insertions(+)
diff --git a/modules.d/90dmraid/61-dmraid-imsm.rules b/modules.d/90dmraid/61-dmraid-imsm.rules
index 0193fbc..4d4d939 100644
--- a/modules.d/90dmraid/61-dmraid-imsm.rules
+++ b/modules.d/90dmraid/61-dmraid-imsm.rules
@@ -16,6 +16,8 @@ ENV{ID_FS_TYPE}=="ddf_raid_member", ENV{rd_NO_MDDDF}!="?*", GOTO="dm_end"
ENV{rd_NO_DM}=="?*", GOTO="dm_end"
+OPTIONS:="nowatch"
+
ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="dm_end"
PROGRAM=="/bin/sh -c 'for i in $sys/$devpath/holders/dm-[0-9]*; do [ -e $$i ] && exit 0; done; exit 1;' ", \

View File

@ -0,0 +1,74 @@
From 0982fcb2e5ae334790851fa8ff7cf65281842ad1 Mon Sep 17 00:00:00 2001
From: Moritz Maxeiner <moritz@ucworks.org>
Date: Thu, 30 Mar 2017 14:17:05 +0200
Subject: [PATCH] crypt-gpg: Rework setup for CCID smartcard support
---
modules.d/91crypt-gpg/module-setup.sh | 46 ++++++++++++++++++++++++++---------
1 file changed, 35 insertions(+), 11 deletions(-)
diff --git a/modules.d/91crypt-gpg/module-setup.sh b/modules.d/91crypt-gpg/module-setup.sh
index 1323a181..bb34676f 100755
--- a/modules.d/91crypt-gpg/module-setup.sh
+++ b/modules.d/91crypt-gpg/module-setup.sh
@@ -5,10 +5,11 @@
check() {
require_binaries gpg || return 1
- if [ -f "${initdir}/root/crypt-public-key.gpg" ]; then
- require_binaries gpg-agent || return 1
- require_binaries gpg-connect-agent || return 1
- require_binaries /usr/libexec/scdaemon || return 1
+ if sc_requested; then
+ if ! sc_supported; then
+ dwarning "crypt-gpg: GnuPG >= 2.1 with scdaemon and libusb required for ccid smartcard support"
+ return 1
+ fi
fi
return 255
@@ -24,14 +25,37 @@ install() {
inst_multiple gpg
inst "$moddir/crypt-gpg-lib.sh" "/lib/dracut-crypt-gpg-lib.sh"
- local gpgMajorVersion="$(gpg --version | sed -n 1p | sed -n -r -e 's|.* ([0-9]*).*|\1|p')"
- local gpgMinorVersion="$(gpg --version | sed -n 1p | sed -n -r -e 's|.* [0-9]*\.([0-9]*).*|\1|p')"
- if [ "${gpgMajorVersion}" -ge 2 ] && [ "${gpgMinorVersion}" -ge 1 ] && [ -f /etc/dracut.conf.d/crypt-public-key.gpg ]; then
+ if sc_requested; then
inst_multiple gpg-agent
inst_multiple gpg-connect-agent
- inst_multiple /usr/libexec/scdaemon || derror "crypt-gpg: gnugpg with scdaemon required for smartcard support in the initramfs"
- cp "/etc/dracut.conf.d/crypt-public-key.gpg" "${initdir}/root/"
- elif [ -f /etc/dracut.conf.d/crypt-public-key.gpg ]; then
- dwarning "crypt-gpg: gnupg >= 2.1 required for smartcard support in the initramfs"
+ inst_multiple /usr/libexec/scdaemon
+ cp "$(sc_public_key)" "${initdir}/root/"
+ fi
+}
+
+sc_public_key() {
+ echo -n "/etc/dracut.conf.d/crypt-public-key.gpg"
+}
+
+# CCID Smartcard support requires GnuPG >= 2.1 with scdaemon and libusb
+sc_supported() {
+ local gpgMajor="$(gpg --version | sed -n 1p | sed -n -r -e 's|.* ([0-9]*).*|\1|p')"
+ local gpgMinor="$(gpg --version | sed -n 1p | sed -n -r -e 's|.* [0-9]*\.([0-9]*).*|\1|p')"
+ if [[ "${gpgMajor}" -gt 2 || "${gpgMajor}" -eq 2 && "${gpgMinor}" -ge 1 ]] && \
+ require_binaries gpg-agent &&
+ require_binaries gpg-connect-agent &&
+ require_binaries /usr/libexec/scdaemon &&
+ (ldd /usr/libexec/scdaemon | grep libusb > /dev/null); then
+ return 0
+ else
+ return 1
+ fi
+}
+
+sc_requested() {
+ if [ -f "$(sc_public_key)" ]; then
+ return 0
+ else
+ return 1
fi
}

View File

@ -1,13 +0,0 @@
From 88ba9372be6b8011bbf4b59bdc290c62e6d01972 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 27 Nov 2015 09:44:24 +0100
Subject: [PATCH] livenet/livenet-generator.sh: mode 0755
---
modules.d/90livenet/livenet-generator.sh | 0
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 modules.d/90livenet/livenet-generator.sh
diff --git a/modules.d/90livenet/livenet-generator.sh b/modules.d/90livenet/livenet-generator.sh
old mode 100644
new mode 100755

View File

@ -0,0 +1,21 @@
From 0e1b686b8367925b21c76b9d9e36bf7d2f6b89ac Mon Sep 17 00:00:00 2001
From: Moritz Maxeiner <moritz@ucworks.org>
Date: Thu, 30 Mar 2017 14:54:26 +0200
Subject: [PATCH] crypt-gpg: Include module if CCID smartcard support requested
---
modules.d/91crypt-gpg/module-setup.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/modules.d/91crypt-gpg/module-setup.sh b/modules.d/91crypt-gpg/module-setup.sh
index bb34676f..f1c6a34b 100755
--- a/modules.d/91crypt-gpg/module-setup.sh
+++ b/modules.d/91crypt-gpg/module-setup.sh
@@ -10,6 +10,7 @@ check() {
dwarning "crypt-gpg: GnuPG >= 2.1 with scdaemon and libusb required for ccid smartcard support"
return 1
fi
+ return 0
fi
return 255

View File

@ -1,39 +0,0 @@
From 54e09dfb72b557ac8ccd48f5d37089287d272ec7 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 30 Nov 2015 11:27:03 +0100
Subject: [PATCH] shutdown: guard against read-only /run
remount the switch rooted /run writeable again.
---
modules.d/99shutdown/module-setup.sh | 2 +-
modules.d/99shutdown/shutdown.sh | 4 ++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/modules.d/99shutdown/module-setup.sh b/modules.d/99shutdown/module-setup.sh
index b80a82c..5cb3594 100755
--- a/modules.d/99shutdown/module-setup.sh
+++ b/modules.d/99shutdown/module-setup.sh
@@ -14,7 +14,7 @@ depends() {
# called by dracut
install() {
local _d
- inst_multiple umount poweroff reboot halt losetup
+ inst_multiple umount poweroff reboot halt losetup stat
inst_multiple -o kexec
inst "$moddir/shutdown.sh" "$prefix/shutdown"
[ -e "${initdir}/lib" ] || mkdir -m 0755 -p ${initdir}/lib
diff --git a/modules.d/99shutdown/shutdown.sh b/modules.d/99shutdown/shutdown.sh
index afee051..918a8a4 100755
--- a/modules.d/99shutdown/shutdown.sh
+++ b/modules.d/99shutdown/shutdown.sh
@@ -12,6 +12,10 @@ export TERM=linux
export PATH=/usr/sbin:/usr/bin:/sbin:/bin
. /lib/dracut-lib.sh
+if [ "$(stat -c '%T' -f /)" = "tmpfs" ]; then
+ mount -o remount,rw /
+fi
+
mkdir /oldsys
for i in sys proc run dev; do
mkdir /oldsys/$i

View File

@ -1,30 +0,0 @@
From ce9a398771d6e8503d767b450282db52b7a4b482 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 1 Dec 2015 08:52:00 +0100
Subject: [PATCH] dmsquash-live/dmsquash-live-root.sh: SQUASHED can be set
earlier
8b5ee88ff667693b2d8da85a8552ad8f5ab95127 removed the check for SQUASHED,
assuming, that the if clause above was the only place, where SQUASHED is
set.
This patch reverts to the old logic, because SQUASHED can be set
earlier.
---
modules.d/90dmsquash-live/dmsquash-live-root.sh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
index fa44a03..68d076c 100755
--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
+++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
@@ -203,6 +203,9 @@ fi
# we might have an embedded fs image on squashfs (compressed live)
if [ -e /run/initramfs/live/${live_dir}/${squash_image} ]; then
SQUASHED="/run/initramfs/live/${live_dir}/${squash_image}"
+fi
+
+if [ -e "$SQUASHED" ] ; then
if [ -n "$live_ram" ]; then
echo "Copying live image to RAM..."
echo "(this may take a few minutes)"

View File

@ -0,0 +1,21 @@
From c603419030136570b5944dc4620f62d07b9e82bb Mon Sep 17 00:00:00 2001
From: pallotron <pallotron@fb.com>
Date: Tue, 4 Apr 2017 08:31:21 -0700
Subject: [PATCH] wait for IPv6 RA if using none/static IPv6 assignment
---
modules.d/40network/net-lib.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index 75051544..b74fdbdd 100755
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -671,6 +671,7 @@ wait_for_ipv6_dad() {
while [ $cnt -lt $timeout ]; do
[ -z "$(ip -6 addr show dev "$1" tentative)" ] \
+ && [ -n "$(ip -6 route list proto ra dev "$1")" ] \
&& return 0
[ -n "$(ip -6 addr show dev "$1" dadfailed)" ] \
&& return 1

View File

@ -0,0 +1,23 @@
From 4c3d99f9665118198ec68a93ecdcc15c88e23c98 Mon Sep 17 00:00:00 2001
From: pallotron <pallotron@fb.com>
Date: Tue, 4 Apr 2017 12:59:45 -0700
Subject: [PATCH] enabling some ipv6 config before running wait_for_ipv6_dad
---
modules.d/40network/ifup.sh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
index fd721e74..f979b59b 100755
--- a/modules.d/40network/ifup.sh
+++ b/modules.d/40network/ifup.sh
@@ -108,6 +108,9 @@ do_static() {
if strglobin $ip '*:*:*'; then
# note no ip addr flush for ipv6
ip addr add $ip/$mask ${srv:+peer $srv} dev $netif
+ echo 0 > /proc/sys/net/ipv6/conf/$netif/forwarding
+ echo 1 > /proc/sys/net/ipv6/conf/$netif/accept_ra
+ echo 1 > /proc/sys/net/ipv6/conf/$netif/accept_redirects
wait_for_ipv6_dad $netif
else
if command -v arping2 >/dev/null; then

View File

@ -1,26 +0,0 @@
From 8d26b5661ea2fd9fb41c83048b7590e44b1c95df Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 9 Dec 2015 14:14:46 +0100
Subject: [PATCH] kernel-modules: include all HID driver in hostonly mode
If a kernel is updated in the undocked state and later on docked, some
keyboard modules can be missing.
Thus include all HID drivers.
---
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 41bf37d..c5f2397 100755
--- a/modules.d/90kernel-modules/module-setup.sh
+++ b/modules.d/90kernel-modules/module-setup.sh
@@ -41,7 +41,7 @@ installkernel() {
uhci-hcd \
xhci-hcd xhci-pci xhci-plat-hcd
- instmods \
+ hostonly='' instmods \
"=drivers/hid" \
"=drivers/input/serio" \
"=drivers/input/keyboard"

View File

@ -0,0 +1,45 @@
From 96b708e178930b0891daab8dcc9d1d7375637a29 Mon Sep 17 00:00:00 2001
From: pallotron <pallotron@fb.com>
Date: Wed, 5 Apr 2017 00:15:16 -0700
Subject: [PATCH] more ipv6 improvements
---
modules.d/40network/net-lib.sh | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index b74fdbdd..e0f761f3 100755
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -653,7 +653,9 @@ wait_for_ipv6_dad_link() {
timeout=$(($timeout*10))
while [ $cnt -lt $timeout ]; do
+ echo "wait_for_ipv6_dad_link..." 1>&2
[ -z "$(ip -6 addr show dev "$1" scope link tentative)" ] \
+ && [ -n "$(ip -6 route list proto ra dev "$1" | grep default)" ] \
&& return 0
[ -n "$(ip -6 addr show dev "$1" scope link dadfailed)" ] \
&& return 1
@@ -670,8 +672,9 @@ wait_for_ipv6_dad() {
timeout=$(($timeout*10))
while [ $cnt -lt $timeout ]; do
+ echo "wait_for_ipv6_dad..." 1>&2
[ -z "$(ip -6 addr show dev "$1" tentative)" ] \
- && [ -n "$(ip -6 route list proto ra dev "$1")" ] \
+ && [ -n "$(ip -6 route list proto ra dev "$1" | grep default)" ] \
&& return 0
[ -n "$(ip -6 addr show dev "$1" dadfailed)" ] \
&& return 1
@@ -688,8 +691,9 @@ wait_for_ipv6_auto() {
timeout=$(($timeout*10))
while [ $cnt -lt $timeout ]; do
+ echo "wait_for_ipv6_auto..." 1>&2
[ -z "$(ip -6 addr show dev "$1" tentative)" ] \
- && [ -n "$(ip -6 route list proto ra dev "$1")" ] \
+ && [ -n "$(ip -6 route list proto ra dev "$1" | grep default)" ] \
&& return 0
sleep 0.1
cnt=$(($cnt+1))

View File

@ -1,21 +0,0 @@
From 4bcd41389cabe7a41c4bb3a17eaf668b12cc0668 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 14 Dec 2015 11:16:12 +0100
Subject: [PATCH] systemd: include machine-info
---
modules.d/00systemd/module-setup.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh
index 50b3b8c..ed59beb 100755
--- a/modules.d/00systemd/module-setup.sh
+++ b/modules.d/00systemd/module-setup.sh
@@ -162,6 +162,7 @@ install() {
/etc/systemd/system.conf \
/etc/hostname \
/etc/machine-id \
+ /etc/machine-info \
/etc/vconsole.conf \
/etc/locale.conf \
/etc/modules-load.d/*.conf \

View File

@ -1,24 +0,0 @@
From efd3a6db74ebcc453e216966a5914b63e2b29aff Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 14 Dec 2015 11:16:42 +0100
Subject: [PATCH] livenet/module-setup.sh: only include systemd generator if
systemd included
---
modules.d/90livenet/module-setup.sh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/modules.d/90livenet/module-setup.sh b/modules.d/90livenet/module-setup.sh
index 3a8d4ba..11738b8 100755
--- a/modules.d/90livenet/module-setup.sh
+++ b/modules.d/90livenet/module-setup.sh
@@ -17,6 +17,8 @@ install() {
inst_hook cmdline 29 "$moddir/parse-livenet.sh"
inst_hook initqueue/online 95 "$moddir/fetch-liveupdate.sh"
inst_script "$moddir/livenetroot.sh" "/sbin/livenetroot"
- inst_script "$moddir/livenet-generator.sh" $systemdutildir/system-generators/dracut-livenet-generator
+ if dracut_module_included "systemd-initrd"; then
+ inst_script "$moddir/livenet-generator.sh" $systemdutildir/system-generators/dracut-livenet-generator
+ fi
dracut_need_initqueue
}

37
0008-remove-prints.patch Normal file
View File

@ -0,0 +1,37 @@
From a0545765e8cec749e59a664ef09944786132327b Mon Sep 17 00:00:00 2001
From: pallotron <pallotron@fb.com>
Date: Wed, 5 Apr 2017 00:16:16 -0700
Subject: [PATCH] remove prints
---
modules.d/40network/net-lib.sh | 3 ---
1 file changed, 3 deletions(-)
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index e0f761f3..fea45be2 100755
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -653,7 +653,6 @@ wait_for_ipv6_dad_link() {
timeout=$(($timeout*10))
while [ $cnt -lt $timeout ]; do
- echo "wait_for_ipv6_dad_link..." 1>&2
[ -z "$(ip -6 addr show dev "$1" scope link tentative)" ] \
&& [ -n "$(ip -6 route list proto ra dev "$1" | grep default)" ] \
&& return 0
@@ -672,7 +671,6 @@ wait_for_ipv6_dad() {
timeout=$(($timeout*10))
while [ $cnt -lt $timeout ]; do
- echo "wait_for_ipv6_dad..." 1>&2
[ -z "$(ip -6 addr show dev "$1" tentative)" ] \
&& [ -n "$(ip -6 route list proto ra dev "$1" | grep default)" ] \
&& return 0
@@ -691,7 +689,6 @@ wait_for_ipv6_auto() {
timeout=$(($timeout*10))
while [ $cnt -lt $timeout ]; do
- echo "wait_for_ipv6_auto..." 1>&2
[ -z "$(ip -6 addr show dev "$1" tentative)" ] \
&& [ -n "$(ip -6 route list proto ra dev "$1" | grep default)" ] \
&& return 0

View File

@ -0,0 +1,40 @@
From 031e2f7bb8aea447cd87e455b184106acb4aa435 Mon Sep 17 00:00:00 2001
From: pallotron <pallotron@fb.com>
Date: Wed, 5 Apr 2017 00:23:36 -0700
Subject: [PATCH] more ipv6 improvements
---
modules.d/40network/net-lib.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index fea45be2..71a665cd 100755
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -654,7 +654,7 @@ wait_for_ipv6_dad_link() {
while [ $cnt -lt $timeout ]; do
[ -z "$(ip -6 addr show dev "$1" scope link tentative)" ] \
- && [ -n "$(ip -6 route list proto ra dev "$1" | grep default)" ] \
+ && [ -n "$(ip -6 route list proto ra dev "$1" | grep ^default)" ] \
&& return 0
[ -n "$(ip -6 addr show dev "$1" scope link dadfailed)" ] \
&& return 1
@@ -672,7 +672,7 @@ wait_for_ipv6_dad() {
while [ $cnt -lt $timeout ]; do
[ -z "$(ip -6 addr show dev "$1" tentative)" ] \
- && [ -n "$(ip -6 route list proto ra dev "$1" | grep default)" ] \
+ && [ -n "$(ip -6 route list proto ra dev "$1" | grep ^default)" ] \
&& return 0
[ -n "$(ip -6 addr show dev "$1" dadfailed)" ] \
&& return 1
@@ -690,7 +690,7 @@ wait_for_ipv6_auto() {
while [ $cnt -lt $timeout ]; do
[ -z "$(ip -6 addr show dev "$1" tentative)" ] \
- && [ -n "$(ip -6 route list proto ra dev "$1" | grep default)" ] \
+ && [ -n "$(ip -6 route list proto ra dev "$1" | grep ^default)" ] \
&& return 0
sleep 0.1
cnt=$(($cnt+1))

View File

@ -1,167 +0,0 @@
From df95b1003c8e7564da73de92403013763eb028fe Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 14 Dec 2015 13:10:05 +0100
Subject: [PATCH] network: fix carrier detection
rename iface_has_link() to iface_has_carrier() to clarify usage
Only assign static "wildcard interface" settings, if the interface has a
carrier.
If the interface name was specified with a name, do not do carrier
checking for static configurations.
---
modules.d/40network/ifup.sh | 42 ++++++++++++++++++++-----------------
modules.d/40network/net-lib.sh | 47 ++++++++++++++++++++++++++----------------
2 files changed, 52 insertions(+), 37 deletions(-)
diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
index 109fb4b..eca7478 100755
--- a/modules.d/40network/ifup.sh
+++ b/modules.d/40network/ifup.sh
@@ -100,7 +100,7 @@ do_dhcp() {
[ -e /tmp/dhclient.$netif.pid ] && return 0
- if ! iface_has_link $netif; then
+ if ! iface_has_carrier $netif; then
warn "No carrier detected on interface $netif"
return 1
fi
@@ -150,7 +150,10 @@ do_ipv6auto() {
do_static() {
strglobin $ip '*:*:*' && load_ipv6
- if ! linkup $netif; then
+ if [ -z "$dev" ] && ! iface_has_carrier "$netif"; then
+ warn "No carrier detected on interface $netif"
+ return 1
+ elif ! linkup "$netif"; then
warn "Could not bring interface $netif up!"
return 1
fi
@@ -375,27 +378,28 @@ for p in $(getargs ip=); do
done
ret=$?
- > /tmp/net.${netif}.up
+ if [ $ret -eq 0 ]; then
+ > /tmp/net.${netif}.up
- if [ -e /sys/class/net/${netif}/address ]; then
- > /tmp/net.$(cat /sys/class/net/${netif}/address).up
- fi
+ if [ -e /sys/class/net/${netif}/address ]; then
+ > /tmp/net.$(cat /sys/class/net/${netif}/address).up
+ fi
- case $autoconf in
- dhcp|on|any|dhcp6)
+ case $autoconf in
+ dhcp|on|any|dhcp6)
;;
- *)
- if [ $ret -eq 0 ]; then
- setup_net $netif
- source_hook initqueue/online $netif
- if [ -z "$manualup" ]; then
- /sbin/netroot $netif
+ *)
+ if [ $ret -eq 0 ]; then
+ setup_net $netif
+ source_hook initqueue/online $netif
+ if [ -z "$manualup" ]; then
+ /sbin/netroot $netif
+ fi
fi
- fi
- ;;
- esac
-
- exit 0
+ ;;
+ esac
+ exit $ret
+ fi
done
# netif isn't the top stack? Then we should exit here.
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index 135c378..256826e 100755
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -537,22 +537,20 @@ wait_for_if_up() {
while [ $cnt -lt $timeout ]; do
li=$(ip -o link show up dev $1)
- if ! strstr "$li" "NO-CARRIER"; then
- if [ -n "$li" ]; then
- case "$li" in
- *\<UP*)
- return 0;;
- *\<*,UP\>*)
- return 0;;
- *\<*,UP,*\>*)
- return 0;;
- esac
- fi
- if strstr "$li" "LOWER_UP" \
- && strstr "$li" "state UNKNOWN" \
- && ! strstr "$li" "DORMANT"; then
- return 0
- fi
+ if [ -n "$li" ]; then
+ case "$li" in
+ *\<UP*)
+ return 0;;
+ *\<*,UP\>*)
+ return 0;;
+ *\<*,UP,*\>*)
+ return 0;;
+ esac
+ fi
+ if strstr "$li" "LOWER_UP" \
+ && strstr "$li" "state UNKNOWN" \
+ && ! strstr "$li" "DORMANT"; then
+ return 0
fi
sleep 0.1
cnt=$(($cnt+1))
@@ -620,7 +618,7 @@ type hostname >/dev/null 2>&1 || \
cat /proc/sys/kernel/hostname
}
-iface_has_link() {
+iface_has_carrier() {
local cnt=0
local interface="$1" flags=""
[ -n "$interface" ] || return 2
@@ -631,14 +629,27 @@ iface_has_link() {
timeout=$(($timeout*10))
linkup "$1"
+
+ li=$(ip -o link show up dev $1)
+ strstr "$li" "NO-CARRIER" && _no_carrier_flag=1
+
while [ $cnt -lt $timeout ]; do
- [ "$(cat $interface/carrier)" = 1 ] && return 0
+ if [ -n "$_no_carrier_flag" ]; then
+ # NO-CARRIER flag was cleared
+ strstr "$li" "NO-CARRIER" || return 0
+ fi
+ # double check the syscfs carrier flag
+ [ -e "$interface/carrier" ] && [ "$(cat $interface/carrier)" = 1 ] && return 0
sleep 0.1
cnt=$(($cnt+1))
done
return 1
}
+iface_has_link() {
+ iface_has_carrier "$@"
+}
+
find_iface_with_link() {
local iface_path="" iface=""
for iface_path in /sys/class/net/*; do

View File

@ -0,0 +1,33 @@
From ea765c0ee17178fe74c73873505f7c86f40f9ec7 Mon Sep 17 00:00:00 2001
From: Frederick Grose <fgrose@sugarlabs.org>
Date: Sat, 8 Apr 2017 21:01:19 -0400
Subject: [PATCH] dmsquash-live-root: Avoid mount source conflict on
$BASE_LOOPDEV.
The newer mount utilities are more strict about directly shared
devices. For OverlayFS boots, which mount $BASE_LOOPDEV directly,
avoid a mount error by indirectly sharing the read-only base
filesystem through a second, over-attached $BASE_LOOPDEV for
the DM live-base target.
---
modules.d/90dmsquash-live/dmsquash-live-root.sh | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
index 264983f5..3a25465c 100755
--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
+++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
@@ -241,7 +241,12 @@ do_live_overlay() {
fi
# Create a device that always points to a ro base image
- echo 0 $sz linear $BASE_LOOPDEV 0 | dmsetup create --readonly live-base
+ if [ -n "$overlayfs" ]; then
+ BASE_LOOPDUP=$(losetup -f --show -r $BASE_LOOPDEV)
+ echo 0 $sz linear $BASE_LOOPDUP 0 | dmsetup create --readonly live-base
+ else
+ echo 0 $sz linear $BASE_LOOPDEV 0 | dmsetup create --readonly live-base
+ fi
}
# we might have a genMinInstDelta delta file for anaconda to take advantage of

View File

@ -1,287 +0,0 @@
From b070c1d360e86db69a8049b2f040b8223bc484c9 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 14 Dec 2015 13:10:33 +0100
Subject: [PATCH] nbd: add systemd generator and use nbd export names instead
of port numbers
Add a systemd generator for root=nbd:.. so that systemd has a correct
sysroot.mount unit.
Use export names instead of port numbers, because port number based
exports are deprecated and were removed.
---
dracut.cmdline.7.asc | 14 +++++++++++---
modules.d/95nbd/module-setup.sh | 3 +++
modules.d/95nbd/nbdroot.sh | 11 +++++------
modules.d/95nbd/parse-nbdroot.sh | 10 ++++++++--
test/TEST-40-NBD/dhcpd.conf | 10 +++++-----
test/TEST-40-NBD/server-init.sh | 3 +--
test/TEST-40-NBD/test.sh | 41 ++++++++++++++++++++++++----------------
7 files changed, 58 insertions(+), 34 deletions(-)
diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
index c34b45b..e160e3b 100644
--- a/dracut.cmdline.7.asc
+++ b/dracut.cmdline.7.asc
@@ -755,13 +755,21 @@ NOTE: letters in the MAC-address must be lowercase!
NBD
~~~
-**root=**??? **netroot=**nbd:__<server>__:__<port>__[:__<fstype>__[:__<mountopts>__[:__<nbdopts>__]]]::
- mount nbd share from <server>
+**root=**??? **netroot=**nbd:__<server>__:__<port/exportname>__[:__<fstype>__[:__<mountopts>__[:__<nbdopts>__]]]::
+ mount nbd share from <server>.
++
+NOTE:
+ If "exportname" instead of "port" is given the standard port is used.
+ Newer versions of nbd are only supported with "exportname".
-**root=dhcp** with **dhcp** **root-path=**nbd:__<server>__:__<port>__[:__<fstype>__[:__<mountopts>__[:__<nbdopts>__]]]::
+**root=dhcp** with **dhcp** **root-path=**nbd:__<server>__:__<port/exportname>__[:__<fstype>__[:__<mountopts>__[:__<nbdopts>__]]]::
root=dhcp alone directs initrd to look at the DHCP root-path where NBD
options can be specified. This syntax is only usable in cases where you are
directly mounting the volume as the rootfs.
++
+NOTE:
+ If "exportname" instead of "port" is given the standard port is used.
+ Newer versions of nbd are only supported with "exportname".
DASD
~~~~
diff --git a/modules.d/95nbd/module-setup.sh b/modules.d/95nbd/module-setup.sh
index 3cb6f49..22f6a3b 100755
--- a/modules.d/95nbd/module-setup.sh
+++ b/modules.d/95nbd/module-setup.sh
@@ -34,6 +34,9 @@ install() {
inst nbd-client
inst_hook cmdline 90 "$moddir/parse-nbdroot.sh"
inst_script "$moddir/nbdroot.sh" "/sbin/nbdroot"
+ if dracut_module_included "systemd-initrd"; then
+ inst_script "$moddir/nbd-generator.sh" $systemdutildir/system-generators/dracut-nbd-generator
+ fi
dracut_need_initqueue
}
diff --git a/modules.d/95nbd/nbdroot.sh b/modules.d/95nbd/nbdroot.sh
index dd2bb55..7057f23 100755
--- a/modules.d/95nbd/nbdroot.sh
+++ b/modules.d/95nbd/nbdroot.sh
@@ -28,11 +28,6 @@ nbdfstype=${nroot%%:*}; nroot=${nroot#*:}
nbdflags=${nroot%%:*}
nbdopts=${nroot#*:}
-# If nbdport not an integer, then assume name based import
-if [ ! -z $(echo "$nbdport" | sed 's/[0-9]//g') ]; then
- nbdport="-N $nbdport"
-fi
-
if [ "$nbdopts" = "$nbdflags" ]; then
unset nbdopts
fi
@@ -113,7 +108,11 @@ if strstr "$(nbd-client --help 2>&1)" "systemd-mark"; then
preopts="--systemd-mark $preopts"
fi
-nbd-client $preopts "$nbdserver" $nbdport /dev/nbd0 $opts || exit 1
+if [ "$nbdport" -gt 0 ] 2>/dev/null; then
+ nbd-client "$nbdserver" $nbdport /dev/nbd0 $preopts $opts || exit 1
+else
+ nbd-client -name "$nbdport" "$nbdserver" /dev/nbd0 $preopts $opts || exit 1
+fi
# NBD doesn't emit uevents when it gets connected, so kick it
echo change > /sys/block/nbd0/uevent
diff --git a/modules.d/95nbd/parse-nbdroot.sh b/modules.d/95nbd/parse-nbdroot.sh
index 746fb14..902e9a9 100755
--- a/modules.d/95nbd/parse-nbdroot.sh
+++ b/modules.d/95nbd/parse-nbdroot.sh
@@ -1,8 +1,8 @@
#!/bin/sh
#
# Preferred format:
-# root=nbd:srv:port[:fstype[:rootflags[:nbdopts]]]
-# [root=*] netroot=nbd:srv:port[:fstype[:rootflags[:nbdopts]]]
+# root=nbd:srv:port/exportname[:fstype[:rootflags[:nbdopts]]]
+# [root=*] netroot=nbd:srv:port/exportname[:fstype[:rootflags[:nbdopts]]]
#
# nbdopts is a comma separated list of options to give to nbd-client
#
@@ -45,6 +45,12 @@ fi
# If it's not nbd we don't continue
[ "${netroot%%:*}" = "nbd" ] || return
+
+if [ -n "${DRACUT_SYSTEMD}" ] && [ "$root" = "dhcp" ]; then
+ echo "root=$netroot" > /etc/cmdline.d/root.conf
+ systemctl --no-block daemon-reload
+fi
+
# Check required arguments
netroot_to_var $netroot
[ -z "$server" ] && die "Argument server for nbdroot is missing"
diff --git a/test/TEST-40-NBD/dhcpd.conf b/test/TEST-40-NBD/dhcpd.conf
index 942bc6a..08461f9 100644
--- a/test/TEST-40-NBD/dhcpd.conf
+++ b/test/TEST-40-NBD/dhcpd.conf
@@ -20,7 +20,7 @@ subnet 192.168.50.0 netmask 255.255.255.0 {
group {
host nbd-2 {
- option root-path "nbd:192.168.50.1:2000";
+ option root-path "nbd:192.168.50.1:raw";
hardware ethernet 52:54:00:12:34:01;
fixed-address 192.168.50.101;
@@ -29,7 +29,7 @@ subnet 192.168.50.0 netmask 255.255.255.0 {
group {
host nbd-3 {
- option root-path "nbd:192.168.50.1:2000:ext2";
+ option root-path "nbd:192.168.50.1:raw:ext2";
hardware ethernet 52:54:00:12:34:02;
fixed-address 192.168.50.101;
@@ -38,7 +38,7 @@ subnet 192.168.50.0 netmask 255.255.255.0 {
group {
host nbd-4 {
- option root-path "nbd:192.168.50.1:2000::errors=panic";
+ option root-path "nbd:192.168.50.1:raw::errors=panic";
hardware ethernet 52:54:00:12:34:03;
fixed-address 192.168.50.101;
@@ -47,7 +47,7 @@ subnet 192.168.50.0 netmask 255.255.255.0 {
group {
host nbd-5 {
- option root-path "nbd:192.168.50.1:2000:ext2:errors=panic";
+ option root-path "nbd:192.168.50.1:raw:ext2:errors=panic";
hardware ethernet 52:54:00:12:34:04;
fixed-address 192.168.50.101;
@@ -57,7 +57,7 @@ subnet 192.168.50.0 netmask 255.255.255.0 {
group {
host nbd-6 {
# Use the encrypted image
- option root-path "nbd:192.168.50.1:2001:ext2:errors=panic";
+ option root-path "nbd:192.168.50.1:encrypted:ext2:errors=panic";
hardware ethernet 52:54:00:12:34:05;
fixed-address 192.168.50.101;
diff --git a/test/TEST-40-NBD/server-init.sh b/test/TEST-40-NBD/server-init.sh
index 73c64d6..0039753 100755
--- a/test/TEST-40-NBD/server-init.sh
+++ b/test/TEST-40-NBD/server-init.sh
@@ -13,8 +13,7 @@ ip link set dev eth0 name ens3
ip addr add 192.168.50.1/24 dev ens3
ip link set ens3 up
modprobe af_packet
-nbd-server 2000 /dev/sdb -C /dev/null
-nbd-server 2001 /dev/sdc -C /dev/null
+nbd-server
>/var/lib/dhcpd/dhcpd.leases
chmod 777 /var/lib/dhcpd/dhcpd.leases
dhcpd -d -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases &
diff --git a/test/TEST-40-NBD/test.sh b/test/TEST-40-NBD/test.sh
index 39966ac..28ba6aa 100755
--- a/test/TEST-40-NBD/test.sh
+++ b/test/TEST-40-NBD/test.sh
@@ -5,8 +5,8 @@ TEST_DESCRIPTION="root filesystem on NBD"
KVERSION=${KVERSION-$(uname -r)}
# Uncomment this to debug failures
-#DEBUGFAIL="rd.shell rd.break"
-#SERIAL="udp:127.0.0.1:9999"
+#DEBUGFAIL="rd.shell rd.break rd.debug"
+SERIAL="tcp:127.0.0.1:9999"
SERIAL="null"
run_server() {
@@ -104,36 +104,36 @@ test_run() {
client_run() {
# The default is ext3,errors=continue so use that to determine
# if our options were parsed and used
+ client_test "NBD root=nbd:IP:port" 52:54:00:12:34:00 \
+ "root=nbd:192.168.50.1:raw rd.luks=0" || return 1
+
client_test "NBD root=nbd:IP:port::fsopts" 52:54:00:12:34:00 \
- "root=nbd:192.168.50.1:2000::errors=panic rd.luks=0" \
+ "root=nbd:192.168.50.1:raw::errors=panic rd.luks=0" \
ext3 errors=panic || return 1
- client_test "NBD root=nbd:IP:port" 52:54:00:12:34:00 \
- "root=nbd:192.168.50.1:2000 rd.luks=0" || return 1
-
client_test "NBD root=nbd:IP:port:fstype" 52:54:00:12:34:00 \
- "root=nbd:192.168.50.1:2000:ext2 rd.luks=0" ext2 || return 1
+ "root=nbd:192.168.50.1:raw:ext2 rd.luks=0" ext2 || return 1
client_test "NBD root=nbd:IP:port:fstype:fsopts" 52:54:00:12:34:00 \
- "root=nbd:192.168.50.1:2000:ext2:errors=panic rd.luks=0" \
+ "root=nbd:192.168.50.1:raw:ext2:errors=panic rd.luks=0" \
ext2 errors=panic || return 1
client_test "NBD Bridge root=nbd:IP:port:fstype:fsopts" 52:54:00:12:34:00 \
- "root=nbd:192.168.50.1:2000:ext2:errors=panic bridge rd.luks=0" \
+ "root=nbd:192.168.50.1:raw:ext2:errors=panic bridge rd.luks=0" \
ext2 errors=panic || return 1
# There doesn't seem to be a good way to validate the NBD options, so
# just check that we don't screw up the other options
client_test "NBD root=nbd:IP:port:::NBD opts" 52:54:00:12:34:00 \
- "root=nbd:192.168.50.1:2000:::bs=2048 rd.luks=0" || return 1
+ "root=nbd:192.168.50.1:raw:::bs=2048 rd.luks=0" || return 1
client_test "NBD root=nbd:IP:port:fstype::NBD opts" 52:54:00:12:34:00 \
- "root=nbd:192.168.50.1:2000:ext2::bs=2048 rd.luks=0" ext2 || return 1
+ "root=nbd:192.168.50.1:raw:ext2::bs=2048 rd.luks=0" ext2 || return 1
client_test "NBD root=nbd:IP:port:fstype:fsopts:NBD opts" \
52:54:00:12:34:00 \
- "root=nbd:192.168.50.1:2000:ext2:errors=panic:bs=2048 rd.luks=0" \
+ "root=nbd:192.168.50.1:raw:ext2:errors=panic:bs=2048 rd.luks=0" \
ext2 errors=panic || return 1
# DHCP root-path parsing
@@ -156,7 +156,7 @@ client_run() {
# netroot handling
client_test "NBD netroot=nbd:IP:port" 52:54:00:12:34:00 \
- "netroot=nbd:192.168.50.1:2000 rd.luks=0" || return 1
+ "netroot=nbd:192.168.50.1:raw rd.luks=0" || return 1
client_test "NBD netroot=dhcp DHCP root-path nbd:srv:port:fstype:fsopts" \
52:54:00:12:34:04 "netroot=dhcp rd.luks=0" ext2 errors=panic || return 1
@@ -167,7 +167,7 @@ client_run() {
client_test "NBD root=LABEL=dracut netroot=nbd:IP:port" \
52:54:00:12:34:00 \
- "root=LABEL=dracut rd.luks.uuid=$ID_FS_UUID rd.lv.vg=dracut netroot=nbd:192.168.50.1:2001" || return 1
+ "root=LABEL=dracut rd.luks.uuid=$ID_FS_UUID rd.lv.vg=dracut netroot=nbd:192.168.50.1:encrypted" || return 1
# XXX This should be ext2,errors=panic but that doesn't currently
# XXX work when you have a real root= line in addition to netroot=
@@ -308,11 +308,20 @@ make_server_root() {
mkdir -p "$initdir"
(
cd "$initdir";
- mkdir -p dev sys proc etc var/run var/lib/dhcpd tmp
+ mkdir -p dev sys proc etc var/run var/lib/dhcpd tmp etc/nbd-server
)
+ cat > "$initdir/etc/nbd-server/config" <<EOF
+[generic]
+[raw]
+exportname = /dev/sdb
+port = 2000
+[encrypted]
+exportname = /dev/sdc
+port = 2001
+EOF
inst_multiple sh ls shutdown poweroff stty cat ps ln ip \
dmesg mkdir cp ping grep \
- sleep nbd-server chmod
+ sleep nbd-server chmod modprobe vi
for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
[ -f ${_terminfodir}/l/linux ] && break
done

View File

@ -1,22 +0,0 @@
From b830a313319f93162456ce10d73747c5fb036fa6 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 14 Dec 2015 13:59:33 +0100
Subject: [PATCH] TEST-16-DMSQUASH: do not use "--" with ldconfig -r
---
test/TEST-16-DMSQUASH/test.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/TEST-16-DMSQUASH/test.sh b/test/TEST-16-DMSQUASH/test.sh
index f2b9963..53a45d6 100755
--- a/test/TEST-16-DMSQUASH/test.sh
+++ b/test/TEST-16-DMSQUASH/test.sh
@@ -98,7 +98,7 @@ test_setup() {
inst "$VMLINUZ" "/boot/vmlinuz-${KVERSION}"
find_binary plymouth >/dev/null && inst_multiple plymouth
cp -a -- /etc/ld.so.conf* "$initdir"/etc
- sudo ldconfig -r -- "$initdir"
+ sudo ldconfig -r "$initdir"
)
python create.py -d -c livecd-fedora-minimal.ks
return 0

18
0011-add-.mailmap.patch Normal file
View File

@ -0,0 +1,18 @@
From 538ff0fd802589587734ccdcc811d78e2c0816a4 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 10 Apr 2017 14:50:21 +0200
Subject: [PATCH] add .mailmap
---
.mailmap | 1 +
1 file changed, 1 insertion(+)
diff --git a/.mailmap b/.mailmap
index 53d61f2a..fd7ab839 100644
--- a/.mailmap
+++ b/.mailmap
@@ -16,3 +16,4 @@ Frederick Grose <fgrose@sugarlabs.org> <fgrose@gmail.com>
Frederic Crozat <fcrozat@suse.com> <fcrozat@mandriva.com>
Shawn W Dunn <sfalken@opensuse.org> <sfalken@opensuse.org>
Kyle McMartin <kmcmarti@redhat.com> <kyle@redhat.com>
+Angelo "pallotron" Failla <pallotron@fb.com> <pallotron@fb.com>

View File

@ -0,0 +1,24 @@
From f59548aeab5da479493e2c49400993a6502f6f8e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tomasz=20Pawe=C5=82=20Gajc?= <tpgxyz@gmail.com>
Date: Mon, 24 Apr 2017 21:37:56 +0200
Subject: [PATCH] fix build with KMOD
---
Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 64b46e75..414fb330 100644
--- a/Makefile
+++ b/Makefile
@@ -12,8 +12,8 @@ pkglibdir ?= ${libdir}/dracut
sysconfdir ?= ${prefix}/etc
bindir ?= ${prefix}/bin
mandir ?= ${prefix}/share/man
-CFLAGS ?= -O2 -g -Wall $(KMOD_CFLAGS)
-CFLAGS += -std=gnu99 -D_FILE_OFFSET_BITS=64 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
+CFLAGS ?= -O2 -g -Wall
+CFLAGS += -std=gnu99 -D_FILE_OFFSET_BITS=64 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 $(KMOD_CFLAGS)
bashcompletiondir ?= ${datadir}/bash-completion/completions
pkgconfigdatadir ?= $(datadir)/pkgconfig

View File

@ -1,29 +0,0 @@
From b8bccd398a4214376474c330ee4b756a4d0c1d19 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 14 Dec 2015 15:12:24 +0100
Subject: [PATCH] test/TEST-04-FULL-SYSTEMD: optionally install machine-info
and *-id
---
test/TEST-04-FULL-SYSTEMD/test.sh | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/test/TEST-04-FULL-SYSTEMD/test.sh b/test/TEST-04-FULL-SYSTEMD/test.sh
index 6ea9281..f5a9d48 100755
--- a/test/TEST-04-FULL-SYSTEMD/test.sh
+++ b/test/TEST-04-FULL-SYSTEMD/test.sh
@@ -264,9 +264,13 @@ EOF
inst_hook emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
+
+ [ -e /etc/machine-id ] && EXTRA_MACHINE="/etc/machine-id"
+ [ -e /etc/machine-info ] && EXTRA_MACHINE+=" /etc/machine-info"
+
sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
-a "debug systemd i18n" \
- -I "/etc/machine-id /etc/hostname" \
+ ${EXTRA_MACHINE:+-I "$EXTRA_MACHINE"} \
-o "dash network plymouth lvm mdraid resume crypt caps dm terminfo usrmount kernel-network-modules" \
-d "piix ide-gd_mod ata_piix btrfs sd_mod i6300esb ib700wdt" \
--no-hostonly-cmdline -N \

View File

@ -1,29 +0,0 @@
From c41df7e1db1adc51399ab2c22f251b15eb2065b1 Mon Sep 17 00:00:00 2001
From: Alexander Tsoy <alexander@tsoy.me>
Date: Tue, 5 Jan 2016 22:11:57 +0300
Subject: [PATCH] base/dracut-lib.sh:dev_unit_name() guard against $dev
beginning with "-"
crypt/parse-crypt.sh generate initqueue job which always call
dev_unit_name() with an argument beginning with "-". This results
in the following error:
dracut-initqueue[307]: + systemd-escape -p -cfb4aa43-2f02-4c6b-a313-60ea99288087
dracut-initqueue[307]: systemd-escape: invalid option -- 'c'
---
modules.d/99base/dracut-lib.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
index ad03394..0a0b1b9 100755
--- a/modules.d/99base/dracut-lib.sh
+++ b/modules.d/99base/dracut-lib.sh
@@ -874,7 +874,7 @@ dev_unit_name()
local dev="$1"
if command -v systemd-escape >/dev/null; then
- systemd-escape -p "$dev"
+ systemd-escape -p -- "$dev"
return
fi

View File

@ -0,0 +1,27 @@
From 7cf2c21798b537a5553ecc23df5ce8cfda631e9c Mon Sep 17 00:00:00 2001
From: Daniel Molkentin <dmolkentin@suse.com>
Date: Tue, 25 Apr 2017 15:25:20 +0200
Subject: [PATCH] mkinitrd-suse.sh: Fix prefix calculation
The previous algorithm was incorrect and would return
incorrect results e.g. for a /20 mask. Also gets rid
of an undocumented depencency on bc(1).
Reference: bsc#1035743
---
mkinitrd-suse.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mkinitrd-suse.sh b/mkinitrd-suse.sh
index bc49d731..d9de81b9 100755
--- a/mkinitrd-suse.sh
+++ b/mkinitrd-suse.sh
@@ -104,7 +104,7 @@ calc_netmask() {
local prefix=$1
[ -z "$prefix" ] && return
- mask=$(echo "(2 ^ 32) - (2 ^ $prefix)" | bc -l)
+ mask=$(( 0xffffffff << (32 - $prefix) ))
byte1=$(( mask >> 24 ))
byte2=$(( mask >> 16 ))
byte3=$(( mask >> 8 ))

View File

@ -0,0 +1,42 @@
From 29fd71b23dc1aca1301510bf68ee8e1a5e336496 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 26 Apr 2017 09:39:20 +0200
Subject: [PATCH] TEST-50-MULTINIC: fix bridge test
Bridge with nics on a different vlan, otherwise we will see:
[ 117.750825] bridge0: received packet on ens5 with own address as source address
---
test/TEST-50-MULTINIC/test.sh | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
index 84792fe6..917272d8 100755
--- a/test/TEST-50-MULTINIC/test.sh
+++ b/test/TEST-50-MULTINIC/test.sh
@@ -51,10 +51,12 @@ client_test() {
fi
$testdir/run-qemu -drive format=raw,index=0,media=disk,file="$TESTDIR"/client.img -m 512M -smp 2 -nographic \
- -net socket,connect=127.0.0.1:12350 \
- -net nic,macaddr=52:54:00:12:34:$mac1,model=e1000 \
- -net nic,macaddr=52:54:00:12:34:$mac2,model=e1000 \
- -net nic,macaddr=52:54:00:12:34:$mac3,model=e1000 \
+ -net socket,vlan=0,connect=127.0.0.1:12350 \
+ -net nic,vlan=0,macaddr=52:54:00:12:34:$mac1,model=e1000 \
+ -net nic,vlan=0,macaddr=52:54:00:12:34:$mac2,model=e1000 \
+ -net nic,vlan=0,macaddr=52:54:00:12:34:$mac3,model=e1000 \
+ -net nic,vlan=1,macaddr=52:54:00:12:34:98,model=e1000 \
+ -net nic,vlan=2,macaddr=52:54:00:12:34:99,model=e1000 \
-watchdog i6300esb -watchdog-action poweroff \
-no-reboot \
-append "panic=1 rd.shell=0 $cmdline $DEBUGFAIL rd.retry=5 ro console=ttyS0,115200n81 selinux=0 init=/sbin/init rd.debug systemd.log_target=console loglevel=7" \
@@ -146,7 +148,7 @@ test_client() {
client_test "MULTINIC bridging" \
00 01 02 \
- "root=nfs:192.168.50.1:/nfs/client ip=bridge0:dhcp bridge=bridge0:ens3,ens4,ens5" \
+ "root=nfs:192.168.50.1:/nfs/client ip=bridge0:dhcp bridge=bridge0:ens3,ens6,ens7" \
"bridge0" || return 1
return 0
}

View File

@ -1,71 +0,0 @@
From 07149fe6bea01026b3ae37afb51b0fa831e9f27a Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 7 Jan 2016 09:56:36 +0100
Subject: [PATCH] nbd: add missing generator
---
modules.d/95nbd/nbd-generator.sh | 55 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
create mode 100755 modules.d/95nbd/nbd-generator.sh
diff --git a/modules.d/95nbd/nbd-generator.sh b/modules.d/95nbd/nbd-generator.sh
new file mode 100755
index 0000000..de52d11
--- /dev/null
+++ b/modules.d/95nbd/nbd-generator.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+[ -z "$root" ] && root=$(getarg root=)
+
+[ "${root%%:*}" = "nbd" ] || exit 0
+
+GENERATOR_DIR="$2"
+[ -z "$GENERATOR_DIR" ] && exit 1
+
+[ -d "$GENERATOR_DIR" ] || mkdir "$GENERATOR_DIR"
+
+ROOTFLAGS="$(getarg rootflags)"
+
+nroot=${root#nbd:}
+nbdserver=${nroot%%:*}; nroot=${nroot#*:}
+nbdport=${nroot%%:*}; nroot=${nroot#*:}
+nbdfstype=${nroot%%:*}; nroot=${nroot#*:}
+nbdflags=${nroot%%:*}
+
+if [ "$nbdflags" = "$nbdfstype" ]; then
+ unset nbdflags
+fi
+if [ "$nbdfstype" = "$nbdport" ]; then
+ unset nbdfstype
+fi
+
+[ -n "$nbdflags" ] && ROOTFLAGS="$nbdflags"
+
+if getarg "ro"; then
+ if [ -n "$ROOTFLAGS" ]; then
+ ROOTFLAGS="$ROOTFLAGS,ro"
+ else
+ ROOTFLAGS="ro"
+ fi
+fi
+
+if [ -n "$nbdfstype" ]; then
+ ROOTFSTYPE="$nbdfstype"
+else
+ ROOTFSTYPE=$(getarg rootfstype=) || unset ROOTFSTYPE
+fi
+
+{
+ echo "[Unit]"
+ echo "Before=initrd-root-fs.target"
+ echo "[Mount]"
+ echo "Where=/sysroot"
+ echo "What=/dev/root"
+ [ -n "$ROOTFSTYPE" ] && echo "Type=${ROOTFSTYPE}"
+ [ -n "$ROOTFLAGS" ] && echo "Options=${ROOTFLAGS}"
+} > "$GENERATOR_DIR"/sysroot.mount
+
+exit 0

View File

@ -0,0 +1,22 @@
From ab66ef2d4a4297642fa059e9df4f86ccefbed4aa Mon Sep 17 00:00:00 2001
From: Jason Dana <jasondana@quarksecurity.com>
Date: Thu, 27 Apr 2017 07:55:58 -0400
Subject: [PATCH] Check the proper variable for a custom IMA keys directory
---
modules.d/98integrity/ima-keys-load.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/98integrity/ima-keys-load.sh b/modules.d/98integrity/ima-keys-load.sh
index 659b7222..e142f74d 100755
--- a/modules.d/98integrity/ima-keys-load.sh
+++ b/modules.d/98integrity/ima-keys-load.sh
@@ -13,7 +13,7 @@ load_x509_keys()
. ${IMACONFIG}
fi
- if [ -z "${IMAKEYDIR}" ]; then
+ if [ -z "${IMAKEYSDIR}" ]; then
IMAKEYSDIR="/etc/keys/ima"
fi

View File

@ -1,28 +0,0 @@
From e93ff1cf9aac8f97131b3101a5da240ce5f45239 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 7 Jan 2016 10:44:31 +0100
Subject: [PATCH] fcoe: no need to copy lldpad state
/dev/shm should be available later on by the normal switch root bind mount.
---
modules.d/95fcoe/cleanup-fcoe.sh | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/modules.d/95fcoe/cleanup-fcoe.sh b/modules.d/95fcoe/cleanup-fcoe.sh
index 5ff4d05..856e2d9 100644
--- a/modules.d/95fcoe/cleanup-fcoe.sh
+++ b/modules.d/95fcoe/cleanup-fcoe.sh
@@ -2,9 +2,8 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if [ -e /var/run/lldpad.pid ]; then
- lldpad -k
- mkdir -m 0755 -p /run/initramfs/state/dev/shm
- cp /dev/shm/lldpad.state /run/initramfs/state/dev/shm/ > /dev/null 2>&1
- echo "files /dev/shm/lldpad.state" >> /run/initramfs/rwtab
+if [ -z "$DRACUT_SYSTEMD" ]; then
+ if [ -e /var/run/lldpad.pid ]; then
+ lldpad -k
+ fi
fi

View File

@ -0,0 +1,99 @@
From 892b1fe6b74a04e7901db306231136a430326ee3 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Wed, 3 May 2017 12:32:43 -0700
Subject: [PATCH] Handle curl using libnssckbi for TLS (RHBZ #1447777)
curl in Fedora recently changed its default CA trust store. The
Fedora package no longer specifies an OpenSSL-format bundle file
during build, and curl itself has been patched to use an NSS
plugin called libnssckbi.so when no bundle file or directory is
specified. There are (at present) two possible providers of the
libnssckbi.so module: the original NSS implementation, which
uses a trust bundle built in at build time, and a compatible
implementation from the p11-kit project, which reads a trust
bundle at run time. So if we find a string in libcurl.so that
suggests libnssckbi might be in use, we must both install it and
make an effort to install any trust bundle files it may use.
The p11-kit libnssckbi implementation does include a string that
lists the top-level trust directories it will use, so we try to
find that string, though the best effort I can come up with will
also find many false positives too. To weed out the false
positives, we check whether the matches actually exist as dirs,
and if so, whether they contain some specific subdirectories we
know p11-kit trust dirs must have (thanks, @kaie). For the NSS
libnssckbi implementation, we will likely wind up not finding any
dirs that match the requirements, so we will simply install the
libnssckbi.so file itself, which is the correct action.
This fixes TLS transactions in the initramfs environment when
using a curl that's built this new way; it's significant for
use of kickstarts and update images with the Fedora / RHEL
installer, as these are retrieved in the initramfs environment,
and are frequently retrieved via HTTPS.
---
modules.d/45url-lib/module-setup.sh | 38 +++++++++++++++++++++++++++++++++++--
1 file changed, 36 insertions(+), 2 deletions(-)
diff --git a/modules.d/45url-lib/module-setup.sh b/modules.d/45url-lib/module-setup.sh
index 1ece400f..b3fe55a6 100755
--- a/modules.d/45url-lib/module-setup.sh
+++ b/modules.d/45url-lib/module-setup.sh
@@ -15,7 +15,7 @@ depends() {
# called by dracut
install() {
- local _dir _crt _found _lib
+ local _dir _crt _found _lib _nssckbi _p11roots _p11root _p11item
inst_simple "$moddir/url-lib.sh" "/lib/url-lib.sh"
inst_multiple -o ctorrent
inst_multiple curl
@@ -29,6 +29,7 @@ install() {
[[ -d $_dir ]] || continue
for _lib in $_dir/libcurl.so.*; do
[[ -e $_lib ]] || continue
+ [[ $_nssckbi ]] || _nssckbi=$(grep -F --binary-files=text -z libnssckbi $_lib)
_crt=$(grep -F --binary-files=text -z .crt $_lib)
[[ $_crt ]] || continue
[[ $_crt == /*/* ]] || continue
@@ -39,6 +40,39 @@ install() {
_found=1
done
done
- [[ $_found ]] || dwarn "Couldn't find SSL CA cert bundle; HTTPS won't work."
+ # If we found no cert bundle files referenced in libcurl but we
+ # *did* find a mention of libnssckbi (checked above), install it.
+ # If its truly NSS libnssckbi, it includes its own trust bundle,
+ # but if it's really p11-kit-trust.so, we need to find the dirs
+ # where it will look for a trust bundle and install them too.
+ if ! [[ $_found ]] && [[ $_nssckbi ]] ; then
+ _found=1
+ inst_libdir_file "libnssckbi.so*" || _found=
+ for _dir in $libdirs; do
+ [[ -e $_dir/libnssckbi.so ]] || continue
+ # this looks for directory-ish strings in the file
+ for _p11roots in $(grep -o --binary-files=text "/[[:alpha:]][[:print:]]*" $_dir/libnssckbi.so) ; do
+ # the string can be a :-separated list of dirs
+ for _p11root in $(echo "$_p11roots" | tr ':' '\n') ; do
+ # check if it's actually a directory (there are
+ # several false positives in the results)
+ [[ -d "$_p11root" ]] || continue
+ # check if it has some specific subdirs that all
+ # p11-kit trust dirs have
+ [[ -d "${_p11root}/anchors" ]] || continue
+ [[ -d "${_p11root}/blacklist" ]] || continue
+ # so now we know it's really a p11-kit trust dir;
+ # install everything in it
+ for _p11item in $(find "$_p11root") ; do
+ if ! inst "$_p11item" ; then
+ dwarn "Couldn't install '$_p11item' from p11-kit trust dir '$_p11root'; HTTPS might not work."
+ continue
+ fi
+ done
+ done
+ done
+ done
+ fi
+ [[ $_found ]] || dwarn "Couldn't find SSL CA cert bundle or libnssckbi.so; HTTPS won't work."
}

View File

@ -1,48 +0,0 @@
From 60928f36b6c9a855077506444ea5edbe6be9ec4c Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 8 Jan 2016 11:37:25 +0100
Subject: [PATCH] dracut.sh: restorecon final image file
Instead of "mv" use "cp --reflink=auto" and restorecon the final image
---
dracut.sh | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/dracut.sh b/dracut.sh
index a2fc496..6dc9858 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -1724,6 +1724,8 @@ if (( maxloglvl >= 5 )); then
fi
fi
+umask 077
+
if [[ $uefi = yes ]]; then
if [[ $kernel_cmdline ]]; then
echo -n "$kernel_cmdline" > "$uefi_outdir/cmdline.txt"
@@ -1749,7 +1751,7 @@ if [[ $uefi = yes ]]; then
--add-section .linux="$kernel_image" --change-section-vma .linux=0x40000 \
--add-section .initrd="${DRACUT_TMPDIR}/initramfs.img" --change-section-vma .initrd=0x3000000 \
"$uefi_stub" "${uefi_outdir}/linux.efi" \
- && mv "${uefi_outdir}/linux.efi" "$outfile"; then
+ && cp --reflink=auto "${uefi_outdir}/linux.efi" "$outfile"; then
dinfo "*** Creating UEFI image file '$outfile' done ***"
else
rm -f -- "$outfile"
@@ -1757,7 +1759,7 @@ if [[ $uefi = yes ]]; then
exit 1
fi
else
- if mv "${DRACUT_TMPDIR}/initramfs.img" "$outfile"; then
+ if cp --reflink=auto "${DRACUT_TMPDIR}/initramfs.img" "$outfile"; then
dinfo "*** Creating initramfs image file '$outfile' done ***"
else
rm -f -- "$outfile"
@@ -1766,5 +1768,6 @@ else
fi
fi
+command -v restorecon &>/dev/null && restorecon -- "$outfile"
exit 0

View File

@ -1,22 +0,0 @@
From 0a7d7f63106ce5a7f9869aacb21d0474621811e7 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 13 Jan 2016 09:17:40 +0100
Subject: [PATCH] dracut.cmdline: remove extra ":" from ip= doc
---
dracut.cmdline.7.asc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
index e160e3b..c4c5588 100644
--- a/dracut.cmdline.7.asc
+++ b/dracut.cmdline.7.asc
@@ -492,7 +492,7 @@ cannot be used in conjunction with the **ifname** argument for the
same <interface>.
=====================
-**ip=**__<client-IP>__:[__<peer>__]:__<gateway-IP>__:__<netmask>__:__<client_hostname>__:__<interface>__:__{none|off|dhcp|on|any|dhcp6|auto6|ibft}__:[:[__<mtu>__][:__<macaddr>__]]::
+**ip=**__<client-IP>__:[__<peer>__]:__<gateway-IP>__:__<netmask>__:__<client_hostname>__:__<interface>__:__{none|off|dhcp|on|any|dhcp6|auto6|ibft}__[:[__<mtu>__][:__<macaddr>__]]::
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. __<peer>__ is optional and is the address of the remote endpoint

View File

@ -0,0 +1,37 @@
From feaaee4278077dd67fe24acebfbe47ba20738955 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Sat, 13 May 2017 17:23:36 +0200
Subject: [PATCH] drm: Install pwm modules on all architectures
At least on x86 on Bay and Cherry Trail devices the pmw-lpss modules must
be in the initrd too, otherwise the i915 driver will still load, but
it will report the following error:
[drm:pwm_setup_backlight [i915]] *ERROR* Failed to own the pwm chip
And not register /sys/class/backlight/intel_backlight and users will
not be able to control their backlight.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
modules.d/50drm/module-setup.sh | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/modules.d/50drm/module-setup.sh b/modules.d/50drm/module-setup.sh
index 42a5e7bc..2014539a 100755
--- a/modules.d/50drm/module-setup.sh
+++ b/modules.d/50drm/module-setup.sh
@@ -21,12 +21,11 @@ installkernel() {
"=drivers/gpu/drm/i2c" \
"=drivers/gpu/drm/panel" \
"=drivers/gpu/drm/bridge" \
- "=drivers/pwm" \
"=drivers/video/backlight" \
${NULL}
fi
- instmods amdkfd hyperv_fb
+ instmods amdkfd hyperv_fb "=drivers/pwm"
# if the hardware is present, include module even if it is not currently loaded,
# as we could e.g. be in the installer; nokmsboot boot parameter will disable

View File

@ -1,30 +0,0 @@
From b019952f6df9b1dae54dd097f012e6c05fe6af00 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 13 Jan 2016 09:32:24 +0100
Subject: [PATCH] dracut.sh: fail hard, if we find modules and modules.dep is
missing
If modules are present in /lib/modules/<kernelversion> and modules.dep
is empty, depmod was not run most likely.
---
dracut.sh | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/dracut.sh b/dracut.sh
index 6dc9858..98dbe0b 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -925,7 +925,12 @@ abs_outfile=$(readlink -f "$outfile") && outfile="$abs_outfile"
if [[ $no_kernel != yes ]] && [[ -d $srcmods ]]; then
if ! [[ -f $srcmods/modules.dep ]]; then
- dwarn "$srcmods/modules.dep is missing. Did you run depmod?"
+ if [[ -n "$(find "$srcmods" -name '*.ko*')" ]]; then
+ dfatal "$srcmods/modules.dep is missing. Did you run depmod?"
+ exit 1
+ else
+ dwarn "$srcmods/modules.dep is missing. Did you run depmod?"
+ fi
elif ! ( command -v gzip &>/dev/null && command -v xz &>/dev/null); then
read _mod < $srcmods/modules.dep
_mod=${_mod%%:*}

View File

@ -1,25 +0,0 @@
From efbc47b8e43ad173d3319f3f6e87b0a60aad9f37 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 13 Jan 2016 13:43:38 +0100
Subject: [PATCH] network/net-lib.sh: correctly set mac address for
ip=...:<mtu>:<mac>
if ip=...:<mtu>:<mac> was specified, macadress was not set
---
modules.d/40network/net-lib.sh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index 256826e..31f1a56 100755
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -427,6 +427,9 @@ ip_to_var() {
;;
[0-9]*)
mtu="$8"
+ if [ -n "${9}" -a -n "${10}" -a -n "${11}" -a -n "${12}" -a -n "${13}" -a -n "${14}" ]; then
+ macaddr="${9}:${10}:${11}:${12}:${13}:${14}"
+ fi
;;
*)
if [ -n "${9}" -a -n "${10}" -a -n "${11}" -a -n "${12}" -a -n "${13}" -a -n "${14}" ]; then

View File

@ -1,25 +0,0 @@
From 2fd8588da51a0e43684852dcdabe327aca684a9f Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 18 Jan 2016 16:59:42 +0100
Subject: [PATCH] dracut-functions.sh:fix check_vol_slaves() volume group name
stripping
commit 466a59984a095f33993cffd5a3bea40826469b03 removed whitespace
stripping from lvm volume group names.
---
dracut-functions.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 59747ec..c7ea9f5 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -580,7 +580,7 @@ check_vol_slaves() {
if [[ $_lv = $2 ]]; then
_vg=$(lvm lvs --noheadings -o vg_name $i 2>/dev/null)
# strip space
- _vg=$(printf "%s\n" "$_vg")
+ _vg="${_vg//[[:space:]]/}"
if [[ $_vg ]]; then
for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2>/dev/null)
do

View File

@ -1,38 +0,0 @@
From 28058a2e373eb268d9b1cd5b65c2ad607961dad1 Mon Sep 17 00:00:00 2001
From: Pekka Wallendahl <wyrmiyu@gmail.com>
Date: Mon, 18 Jan 2016 20:28:22 +0200
Subject: [PATCH] multipath: fix majmin_to_mpath_dev()
* Multipath device names only start with the mpath-prefix if the option
use_userfriendly_names is set true in /etc/multipath.conf and if user
has not set any aliases in the said file. Thus the for-loop should go
through all files in /dev/mapper/, not just ones starting with 'mpath'
* Bash is perfectly capable to extend `/dev/mapper/*` notation without a
need to pass it to an external ls
* Changed the function to use a local variable $_dev instead of the
global $dev, which seemed to be the original intention as the local
_dev was defined but not used
---
modules.d/90multipath/module-setup.sh | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
index 831c99f..a808678 100755
--- a/modules.d/90multipath/module-setup.sh
+++ b/modules.d/90multipath/module-setup.sh
@@ -9,9 +9,10 @@ is_mpath() {
majmin_to_mpath_dev() {
local _dev
- for i in `ls -1 /dev/mapper/mpath*`; do
- dev=$(get_maj_min $i)
- if [ "$dev" = "$1" ]; then
+ for i in /dev/mapper/*; do
+ [[ $i == /dev/mapper/control ]] && continue
+ _dev=$(get_maj_min $i)
+ if [ "$_dev" = "$1" ]; then
echo $i
return
fi

View File

@ -1,805 +0,0 @@
From 24a78b269745b0b16a2bdc03c35015b2cb9d0408 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 19 Jan 2016 11:34:10 +0100
Subject: [PATCH] Fixed vlan, bonding, bridging, team logic
Call ifup for the slaves and assemble afterwards.
---
modules.d/40network/ifup.sh | 364 ++++++++++++++++++------------------
modules.d/40network/net-genrules.sh | 26 ++-
modules.d/40network/parse-bond.sh | 25 +--
modules.d/40network/parse-bridge.sh | 28 +--
modules.d/40network/parse-team.sh | 26 +--
modules.d/40network/parse-vlan.sh | 4 +-
modules.d/45ifcfg/write-ifcfg.sh | 21 +--
test/TEST-20-NFS/test.sh | 4 +-
test/TEST-30-ISCSI/test.sh | 4 +-
test/TEST-50-MULTINIC/test.sh | 17 +-
10 files changed, 249 insertions(+), 270 deletions(-)
diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
index eca7478..14ca86d 100755
--- a/modules.d/40network/ifup.sh
+++ b/modules.d/40network/ifup.sh
@@ -15,76 +15,12 @@ type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh
# $netif reads easier than $1
netif=$1
-use_bridge='false'
-use_vlan='false'
-# enslave this interface to bond?
-for i in /tmp/bond.*.info; do
- [ -e "$i" ] || continue
- unset bondslaves
- unset bondname
- . "$i"
- for slave in $bondslaves ; do
- if [ "$netif" = "$slave" ] ; then
- netif=$bondname
- break 2
- fi
- done
-done
-
-if [ -e /tmp/team.info ]; then
- . /tmp/team.info
- for slave in $teamslaves ; do
- if [ "$netif" = "$slave" ] ; then
- netif=$teammaster
- fi
- done
-fi
-
-if [ -e /tmp/vlan.info ]; then
- . /tmp/vlan.info
- if [ "$netif" = "$phydevice" ]; then
- if [ "$netif" = "$bondname" ] && [ -n "$DO_BOND_SETUP" ] ; then
- : # We need to really setup bond (recursive call)
- elif [ "$netif" = "$teammaster" ] && [ -n "$DO_TEAM_SETUP" ] ; then
- : # We need to really setup team (recursive call)
- else
- netif="$vlanname"
- use_vlan='true'
- fi
- fi
-fi
-
-# bridge this interface?
-if [ -e /tmp/bridge.info ]; then
- . /tmp/bridge.info
- for ethname in $bridgeslaves ; do
- if [ "$netif" = "$ethname" ]; then
- if [ "$netif" = "$bondname" ] && [ -n "$DO_BOND_SETUP" ] ; then
- : # We need to really setup bond (recursive call)
- elif [ "$netif" = "$teammaster" ] && [ -n "$DO_TEAM_SETUP" ] ; then
- : # We need to really setup team (recursive call)
- elif [ "$netif" = "$vlanname" ] && [ -n "$DO_VLAN_SETUP" ]; then
- : # We need to really setup vlan (recursive call)
- else
- netif="$bridgename"
- use_bridge='true'
- fi
- fi
- done
-fi
-
-# disable manual ifup while netroot is set for simplifying our logic
-# in netroot case we prefer netroot to bringup $netif automaticlly
-[ -n "$2" -a "$2" = "-m" ] && [ -z "$netroot" ] && manualup="$2"
-
-if [ -n "$manualup" ]; then
- >/tmp/net.$netif.manualup
- rm -f /tmp/net.${netif}.did-setup
-else
- [ -e /tmp/net.${netif}.did-setup ] && exit 0
- [ -e /sys/class/net/$netif/address ] && \
- [ -e /tmp/net.$(cat /sys/class/net/$netif/address).did-setup ] && exit 0
+# loopback is always handled the same way
+if [ "$netif" = "lo" ] ; then
+ ip link set lo up
+ ip addr add 127.0.0.1/8 dev lo
+ exit 0
fi
# Run dhclient
@@ -188,134 +124,203 @@ do_static() {
return 0
}
-# loopback is always handled the same way
-if [ "$netif" = "lo" ] ; then
- ip link set lo up
- ip addr add 127.0.0.1/8 dev lo
+get_vid() {
+ case "$1" in
+ vlan*)
+ echo ${1#vlan}
+ ;;
+ *.*)
+ echo ${1##*.}
+ ;;
+ esac
+}
+
+# check, if we need VLAN's for this interface
+if [ -z "$DO_VLAN_PHY" ] && [ -e /tmp/vlan.${netif}.phy ]; then
+ NO_AUTO_DHCP=yes DO_VLAN_PHY=yes ifup "$netif"
+ modprobe -b -q 8021q
+
+ for i in /tmp/vlan.*.${netif}; do
+ [ -e "$i" ] || continue
+ read vlanname < "$i"
+ if [ -n "$vlanname" ]; then
+ linkup "$phydevice"
+ ip link add dev "$vlanname" link "$phydevice" type vlan id "$(get_vid $vlanname)"
+ ifup "$vlanname"
+ fi
+ done
exit 0
fi
-# start bond if needed
-if [ -e /tmp/bond.${netif}.info ]; then
- . /tmp/bond.${netif}.info
-
- if [ "$netif" = "$bondname" ] && [ ! -e /tmp/net.$bondname.up ] ; then # We are master bond device
- modprobe bonding
- echo "+$netif" > /sys/class/net/bonding_masters
- ip link set $netif down
-
- # Stolen from ifup-eth
- # add the bits to setup driver parameters here
- for arg in $bondoptions ; do
- key=${arg%%=*};
- value=${arg##*=};
- # %{value:0:1} is replaced with non-bash specific construct
- if [ "${key}" = "arp_ip_target" -a "${#value}" != "0" -a "+${value%%+*}" != "+" ]; then
- OLDIFS=$IFS;
- IFS=',';
- for arp_ip in $value; do
- echo +$arp_ip > /sys/class/net/${netif}/bonding/$key
- done
- IFS=$OLDIFS;
- else
- echo $value > /sys/class/net/${netif}/bonding/$key
+# bridge this interface?
+if [ -z "$NO_BRIDGE_MASTER" ]; then
+ for i in /tmp/bridge.*.info; do
+ [ -e "$i" ] || continue
+ unset bridgeslaves
+ unset bridgename
+ . "$i"
+ for ethname in $bridgeslaves ; do
+ [ "$netif" != "$ethname" ] && continue
+
+ NO_BRIDGE_MASTER=yes NO_AUTO_DHCP=yes ifup $ethname
+ linkup $ethname
+ if [ ! -e /tmp/bridge.$bridgename.up ]; then
+ brctl addbr $bridgename
+ brctl setfd $bridgename 0
+ > /tmp/bridge.$bridgename.up
fi
+ brctl addif $bridgename $ethname
+ ifup $bridgename
+ exit 0
done
+ done
+fi
- linkup $netif
-
+# enslave this interface to bond?
+if [ -z "$NO_BOND_MASTER" ]; then
+ for i in /tmp/bond.*.info; do
+ [ -e "$i" ] || continue
+ unset bondslaves
+ unset bondname
+ . "$i"
for slave in $bondslaves ; do
- ip link set $slave down
- cat /sys/class/net/$slave/address > /tmp/net.${netif}.${slave}.hwaddr
- echo "+$slave" > /sys/class/net/$bondname/bonding/slaves
- linkup $slave
- done
+ [ "$netif" != "$slave" ] && continue
- # add the bits to setup the needed post enslavement parameters
- for arg in $BONDING_OPTS ; do
- key=${arg%%=*};
- value=${arg##*=};
- if [ "${key}" = "primary" ]; then
- echo $value > /sys/class/net/${netif}/bonding/$key
- fi
+ # already setup
+ [ -e /tmp/bond.$bondname.up ] && exit 0
+
+ # wait for all slaves to show up
+ for slave in $bondslaves ; do
+ # try to create the slave (maybe vlan or bridge)
+ NO_BOND_MASTER=yes NO_AUTO_DHCP=yes ifup $slave
+
+ if ! ip link show dev $slave >/dev/null 2>&1; then
+ # wait for the last slave to show up
+ exit 0
+ fi
+ done
+
+ modprobe -q -b bonding
+ echo "+$bondname" > /sys/class/net/bonding_masters 2>/dev/null
+ ip link set $bondname down
+
+ # Stolen from ifup-eth
+ # add the bits to setup driver parameters here
+ for arg in $bondoptions ; do
+ key=${arg%%=*};
+ value=${arg##*=};
+ # %{value:0:1} is replaced with non-bash specific construct
+ if [ "${key}" = "arp_ip_target" -a "${#value}" != "0" -a "+${value%%+*}" != "+" ]; then
+ OLDIFS=$IFS;
+ IFS=',';
+ for arp_ip in $value; do
+ echo +$arp_ip > /sys/class/net/${bondname}/bonding/$key
+ done
+ IFS=$OLDIFS;
+ else
+ echo $value > /sys/class/net/${bondname}/bonding/$key
+ fi
+ done
+
+ linkup $bondname
+
+ for slave in $bondslaves ; do
+ cat /sys/class/net/$slave/address > /tmp/net.${bondname}.${slave}.hwaddr
+ ip link set $slave down
+ echo "+$slave" > /sys/class/net/$bondname/bonding/slaves
+ linkup $slave
+ done
+
+ # add the bits to setup the needed post enslavement parameters
+ for arg in $bondoptions ; do
+ key=${arg%%=*};
+ value=${arg##*=};
+ if [ "${key}" = "primary" ]; then
+ echo $value > /sys/class/net/${bondname}/bonding/$key
+ fi
+ done
+
+ > /tmp/bond.$bondname.up
+
+ NO_BOND_MASTER=yes ifup $bondname
+ exit $?
done
- fi
+ done
fi
-if [ -e /tmp/team.info ]; then
- . /tmp/team.info
- if [ "$netif" = "$teammaster" ] && [ ! -e /tmp/net.$teammaster.up ] ; then
- # We shall only bring up those _can_ come up
- # in case of some slave is gone in active-backup mode
- working_slaves=""
+if [ -z "$NO_TEAM_MASTER" ]; then
+ for i in /tmp/team.*.info; do
+ [ -e "$i" ] || continue
+ unset teammaster
+ unset teamslaves
+ . "$i"
for slave in $teamslaves ; do
- ip link set $slave up 2>/dev/null
- if wait_for_if_up $slave; then
- working_slaves+="$slave "
- fi
- done
- # Do not add slaves now
- teamd -d -U -n -N -t $teammaster -f /etc/teamd/$teammaster.conf
- for slave in $working_slaves; do
- # team requires the slaves to be down before joining team
- ip link set $slave down
- teamdctl $teammaster port add $slave
- done
- ip link set $teammaster up
- fi
-fi
+ [ "$netif" != "$slave" ] && continue
-# XXX need error handling like dhclient-script
+ [ -e /tmp/team.$teammaster.up ] && exit 0
-if [ -e /tmp/bridge.info ]; then
- . /tmp/bridge.info
-# start bridge if necessary
- if [ "$netif" = "$bridgename" ] && [ ! -e /tmp/net.$bridgename.up ]; then
- brctl addbr $bridgename
- brctl setfd $bridgename 0
- for ethname in $bridgeslaves ; do
- if [ "$ethname" = "$bondname" ] ; then
- DO_BOND_SETUP=yes ifup $bondname -m
- elif [ "$ethname" = "$teammaster" ] ; then
- DO_TEAM_SETUP=yes ifup $teammaster -m
- elif [ "$ethname" = "$vlanname" ]; then
- DO_VLAN_SETUP=yes ifup $vlanname -m
- else
- linkup $ethname
+ # wait for all slaves to show up
+ for slave in $teamslaves ; do
+ # try to create the slave (maybe vlan or bridge)
+ NO_BOND_MASTER=yes NO_AUTO_DHCP=yes ifup $slave
+
+ if ! ip link show dev $slave >/dev/null 2>&1; then
+ # wait for the last slave to show up
+ exit 0
+ fi
+ done
+
+ if [ ! -e /tmp/team.$teammaster.up ] ; then
+ # We shall only bring up those _can_ come up
+ # in case of some slave is gone in active-backup mode
+ working_slaves=""
+ for slave in $teamslaves ; do
+ ip link set $slave up 2>/dev/null
+ if wait_for_if_up $slave; then
+ working_slaves+="$slave "
+ fi
+ done
+ # Do not add slaves now
+ teamd -d -U -n -N -t $teammaster -f /etc/teamd/$teammaster.conf
+ for slave in $working_slaves; do
+ # team requires the slaves to be down before joining team
+ ip link set $slave down
+ teamdctl $teammaster port add $slave
+ done
+
+ ip link set $teammaster up
+
+ > /tmp/team.$teammaster.up
+ NO_TEAM_MASTER=yes ifup $teammaster
+ exit $?
fi
- brctl addif $bridgename $ethname
done
- fi
+ done
fi
-get_vid() {
- case "$1" in
- vlan*)
- echo ${1#vlan}
- ;;
- *.*)
- echo ${1##*.}
- ;;
- esac
-}
+# all synthetic interfaces done.. now check if the interface is available
+if ! ip link show dev $netif >/dev/null 2>&1; then
+ exit 1
+fi
-if [ "$netif" = "$vlanname" ] && [ ! -e /tmp/net.$vlanname.up ]; then
- modprobe 8021q
- if [ "$phydevice" = "$bondname" ] ; then
- DO_BOND_SETUP=yes ifup $phydevice -m
- elif [ "$phydevice" = "$teammaster" ] ; then
- DO_TEAM_SETUP=yes ifup $phydevice -m
- else
- linkup "$phydevice"
- fi
- ip link add dev "$vlanname" link "$phydevice" type vlan id "$(get_vid $vlanname)"
- ip link set "$vlanname" up
+# disable manual ifup while netroot is set for simplifying our logic
+# in netroot case we prefer netroot to bringup $netif automaticlly
+[ -n "$2" -a "$2" = "-m" ] && [ -z "$netroot" ] && manualup="$2"
+
+if [ -n "$manualup" ]; then
+ >/tmp/net.$netif.manualup
+ rm -f /tmp/net.${netif}.did-setup
+else
+ [ -e /tmp/net.${netif}.did-setup ] && exit 0
+ [ -e /sys/class/net/$netif/address ] && \
+ [ -e /tmp/net.$(cat /sys/class/net/$netif/address).did-setup ] && exit 0
fi
+
# No ip lines default to dhcp
ip=$(getarg ip)
-if [ -z "$ip" ]; then
+if [ -z "$NO_AUTO_DHCP" ] && [ -z "$ip" ]; then
for s in $(getargs nameserver); do
[ -n "$s" ] || continue
echo nameserver $s >> /tmp/net.$netif.resolv.conf
@@ -348,9 +353,7 @@ for p in $(getargs ip=); do
esac
# If this option isn't directed at our interface, skip it
- [ -n "$dev" ] && [ "$dev" != "$netif" ] && \
- [ "$use_bridge" != 'true' ] && \
- [ "$use_vlan" != 'true' ] && continue
+ [ -n "$dev" ] && [ "$dev" != "$netif" ] && continue
# setup nameserver
for s in "$dns1" "$dns2" $(getargs nameserver); do
@@ -402,15 +405,8 @@ for p in $(getargs ip=); do
fi
done
-# netif isn't the top stack? Then we should exit here.
-# eg. netif is bond0. br0 is on top of it. dhcp br0 is correct but dhcp
-# bond0 doesn't make sense.
-if [ -n "$DO_BOND_SETUP" -o -n "$DO_TEAM_SETUP" -o -n "$DO_VLAN_SETUP" ]; then
- exit 0
-fi
-
# no ip option directed at our interface?
-if [ ! -e /tmp/net.${netif}.up ]; then
+if [ -z "$NO_AUTO_DHCP" ] && [ ! -e /tmp/net.${netif}.up ]; then
if [ -e /tmp/net.bootdev ]; then
BOOTDEV=$(cat /tmp/net.bootdev)
if [ "$netif" = "$BOOTDEV" ] || [ "$BOOTDEV" = "$(cat /sys/class/net/${netif}/address)" ]; then
diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
index b1c156c..5df50bd 100755
--- a/modules.d/40network/net-genrules.sh
+++ b/modules.d/40network/net-genrules.sh
@@ -12,11 +12,14 @@ command -v fix_bootif >/dev/null || . /lib/net-lib.sh
# Write udev rules
{
# bridge: attempt only the defined interface
- if [ -e /tmp/bridge.info ]; then
- . /tmp/bridge.info
+ for i in /tmp/bridge.*.info; do
+ [ -e "$i" ] || continue
+ unset bridgeslaves
+ unset bridgename
+ . "$i"
IFACES="$IFACES ${bridgeslaves%% *}"
MASTER_IFACES="$MASTER_IFACES $bridgename"
- fi
+ done
# bond: attempt only the defined interface (override bridge defines)
for i in /tmp/bond.*.info; do
@@ -35,11 +38,18 @@ command -v fix_bootif >/dev/null || . /lib/net-lib.sh
MASTER_IFACES="$MASTER_IFACES ${teammaster}"
fi
- if [ -e /tmp/vlan.info ]; then
- . /tmp/vlan.info
- IFACES="$IFACES $phydevice"
- MASTER_IFACES="$MASTER_IFACES ${vlanname}"
- fi
+ for j in /tmp/vlan.*.phy; do
+ [ -e "$j" ] || continue
+ unset phydevice
+ . "$j"
+ for i in /tmp/vlan.*.${phydevice}; do
+ [ -e "$i" ] || continue
+ unset vlanname
+ . "$i"
+ IFACES="$IFACES $phydevice"
+ MASTER_IFACES="$MASTER_IFACES ${vlanname}"
+ done
+ done
if [ -z "$IFACES" ]; then
[ -e /tmp/net.ifaces ] && read IFACES < /tmp/net.ifaces
diff --git a/modules.d/40network/parse-bond.sh b/modules.d/40network/parse-bond.sh
index 25c51b8..80b3b07 100755
--- a/modules.d/40network/parse-bond.sh
+++ b/modules.d/40network/parse-bond.sh
@@ -10,14 +10,6 @@
# bond without parameters assumes bond=bond0:eth0,eth1:mode=balance-rr
#
-# return if bond already parsed
-[ -n "$bondname" ] && return
-
-# Check if bond parameter is valid
-if getarg bond= >/dev/null ; then
- :
-fi
-
# We translate list of slaves to space-separated here to mwke it easier to loop over them in ifup
# Ditto for bonding options
parsebond() {
@@ -28,7 +20,6 @@ parsebond() {
v=${v#*:}
done
- unset bondname bondslaves bondoptions
case $# in
0) bondname=bond0; bondslaves="eth0 eth1" ;;
1) bondname=$1; bondslaves="eth0 eth1" ;;
@@ -38,14 +29,13 @@ parsebond() {
esac
}
-unset bondname bondslaves bondoptions
-
# Parse bond for bondname, bondslaves, bondmode and bondoptions
-if getarg bond >/dev/null; then
- # Read bond= parameters if they exist
- bond="$(getarg bond=)"
- if [ ! "$bond" = "bond" ]; then
- parsebond "$(getarg bond=)"
+for bond in $(getargs bond=); do
+ unset bondname
+ unset bondslaves
+ unset bondoptions
+ if [ "$bond" != "bond" ]; then
+ parsebond "$bond"
fi
# Simple default bond
if [ -z "$bondname" ]; then
@@ -57,5 +47,4 @@ if getarg bond >/dev/null; then
echo "bondname=$bondname" > /tmp/bond.${bondname}.info
echo "bondslaves=\"$bondslaves\"" >> /tmp/bond.${bondname}.info
echo "bondoptions=\"$bondoptions\"" >> /tmp/bond.${bondname}.info
- return
-fi
+done
diff --git a/modules.d/40network/parse-bridge.sh b/modules.d/40network/parse-bridge.sh
index 212f259..5c3af29 100755
--- a/modules.d/40network/parse-bridge.sh
+++ b/modules.d/40network/parse-bridge.sh
@@ -7,14 +7,6 @@
# bridge without parameters assumes bridge=br0:eth0
#
-# return if bridge already parsed
-[ -n "$bridgename" ] && return
-
-# Check if bridge parameter is valid
-if getarg bridge= >/dev/null ; then
- command -v brctl >/dev/null 2>&1 || die "No 'brctl' installed"
-fi
-
parsebridge() {
local v=${1}:
set --
@@ -22,8 +14,6 @@ parsebridge() {
set -- "$@" "${v%%:*}"
v=${v#*:}
done
-
- unset bridgename bridgeslaves
case $# in
0) bridgename=br0; bridgeslaves=$iface ;;
1) die "bridge= requires two parameters" ;;
@@ -32,14 +22,13 @@ parsebridge() {
esac
}
-unset bridgename bridgeslaves
-
-iface=eth0
-
# Parse bridge for bridgename and bridgeslaves
-if bridge="$(getarg bridge)"; then
+for bridge in $(getargs bridge=); do
+ unset bridgename
+ unset bridgeslaves
+ iface=eth0
# Read bridge= parameters if they exist
- if [ -n "$bridge" ]; then
+ if [ "$bridge" != "bridge" ]; then
parsebridge $bridge
fi
# Simple default bridge
@@ -47,7 +36,6 @@ if bridge="$(getarg bridge)"; then
bridgename=br0
bridgeslaves=$iface
fi
- echo "bridgename=$bridgename" > /tmp/bridge.info
- echo "bridgeslaves=\"$bridgeslaves\"" >> /tmp/bridge.info
- return
-fi
+ echo "bridgename=$bridgename" > /tmp/bridge.${bridgename}.info
+ echo "bridgeslaves=\"$bridgeslaves\"" >> /tmp/bridge.${bridgename}.info
+done
diff --git a/modules.d/40network/parse-team.sh b/modules.d/40network/parse-team.sh
index 318c0e1..cc5cba7 100755
--- a/modules.d/40network/parse-team.sh
+++ b/modules.d/40network/parse-team.sh
@@ -6,14 +6,6 @@
# teamslaves is a comma-separated list of physical (ethernet) interfaces
#
-# return if team already parsed
-[ -n "$teammaster" ] && return
-
-# Check if team parameter is valid
-if getarg team= >/dev/null ; then
- :
-fi
-
parseteam() {
local v=${1}:
set --
@@ -22,23 +14,17 @@ parseteam() {
v=${v#*:}
done
- unset teammaster teamslaves
case $# in
2) teammaster=$1; teamslaves=$(str_replace "$2" "," " ") ;;
*) die "team= requires two parameters" ;;
esac
}
-unset teammaster teamslaves
-if getarg team>/dev/null; then
- # Read team= parameters if they exist
- team="$(getarg team=)"
- if [ ! "$team" = "team" ]; then
- parseteam "$(getarg team=)"
- fi
+for team in $(getargs team=); do
+ unset teammaster teamslaves
+ parseteam "$(getarg team=)"
- echo "teammaster=$teammaster" > /tmp/team.info
- echo "teamslaves=\"$teamslaves\"" >> /tmp/team.info
- return
-fi
+ echo "teammaster=$teammaster" > /tmp/team.${teammaster}.info
+ echo "teamslaves=\"$teamslaves\"" >> /tmp/team.${teammaster}.info
+done
diff --git a/modules.d/40network/parse-vlan.sh b/modules.d/40network/parse-vlan.sh
index 3ba2289..b2a9c1c 100755
--- a/modules.d/40network/parse-vlan.sh
+++ b/modules.d/40network/parse-vlan.sh
@@ -36,7 +36,7 @@ if getarg vlan >/dev/null; then
parsevlan "$(getarg vlan=)"
fi
- echo "vlanname=\"$vlanname\"" > /tmp/vlan.info
- echo "phydevice=\"$phydevice\"" >> /tmp/vlan.info
+ echo "$phydevice" > /tmp/vlan.${phydevice}.phy
+ echo "$vlanname" > /tmp/vlan.${vlanname}.${phydevice}
return
fi
diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
index 251d684..c3774ae 100755
--- a/modules.d/45ifcfg/write-ifcfg.sh
+++ b/modules.d/45ifcfg/write-ifcfg.sh
@@ -5,14 +5,6 @@ type is_persistent_ethernet_name >/dev/null 2>&1 || . /lib/net-lib.sh
udevadm settle --timeout=30
-if [ -e /tmp/bridge.info ]; then
- . /tmp/bridge.info
-fi
-
-if [ -e /tmp/vlan.info ]; then
- . /tmp/vlan.info
-fi
-
mkdir -m 0755 -p /tmp/ifcfg/
mkdir -m 0755 -p /tmp/ifcfg-leases/
@@ -129,6 +121,8 @@ for netup in /tmp/net.*.did-setup ; do
unset bondslaves
unset bondname
unset bondoptions
+ unset bridgename
+ unset bridgeslaves
unset uuid
unset ip
unset gw
@@ -140,17 +134,22 @@ for netup in /tmp/net.*.did-setup ; do
unset vlan
[ -e /tmp/bond.${netif}.info ] && . /tmp/bond.${netif}.info
+ [ -e /tmp/bridge.${netif}.info ] && . /tmp/bridge.${netif}.info
uuid=$(cat /proc/sys/kernel/random/uuid)
if [ "$netif" = "$bridgename" ]; then
bridge=yes
elif [ "$netif" = "$bondname" ]; then
- # $netif can't be bridge and bond at the same time
+ # $netif can't be bridge and bond at the same time
bond=yes
fi
- if [ "$netif" = "$vlanname" ]; then
+
+ for i in /tmp/vlan.${netif}.*; do
+ [ ! -e "$i" ] && continue
+ . "$i"
vlan=yes
- fi
+ break
+ done
{
echo "# Generated by dracut initrd"
diff --git a/test/TEST-20-NFS/test.sh b/test/TEST-20-NFS/test.sh
index 61e4c1a..ceca1f0 100755
--- a/test/TEST-20-NFS/test.sh
+++ b/test/TEST-20-NFS/test.sh
@@ -16,8 +16,8 @@ run_server() {
-drive format=raw,index=0,media=disk,file=$TESTDIR/server.ext3 \
-m 256M -smp 2 \
-display none \
- -net nic,macaddr=52:54:00:12:34:56,model=e1000 \
-net socket,listen=127.0.0.1:12320 \
+ -net nic,macaddr=52:54:00:12:34:56,model=e1000 \
-serial ${SERIAL:-null} \
-watchdog i6300esb -watchdog-action poweroff \
-append "rd.debug loglevel=77 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
@@ -134,7 +134,7 @@ test_nfsv3() {
"root=nfs:192.168.50.1:/nfs/client" 192.168.50.1 -wsize=4096 || return 1
client_test "NFSv3 Bridge root=nfs:..." 52:54:00:12:34:04 \
- "root=nfs:192.168.50.1:/nfs/client bridge" 192.168.50.1 -wsize=4096 || return 1
+ "root=nfs:192.168.50.1:/nfs/client bridge net.ifnames=0" 192.168.50.1 -wsize=4096 || return 1
client_test "NFSv3 Legacy root=IP:path" 52:54:00:12:34:04 \
"root=192.168.50.1:/nfs/client" 192.168.50.1 -wsize=4096 || return 1
diff --git a/test/TEST-30-ISCSI/test.sh b/test/TEST-30-ISCSI/test.sh
index fc4bdce..00c1fbd 100755
--- a/test/TEST-30-ISCSI/test.sh
+++ b/test/TEST-30-ISCSI/test.sh
@@ -85,7 +85,7 @@ do_test_run() {
"rd.iscsi.initiator=$initiator" \
|| return 1
- run_client "netroot=iscsi target1 target2 rd.iscsi.waitnet=0" \
+ run_client "FAILME: netroot=iscsi target1 target2 rd.iscsi.waitnet=0" \
"root=LABEL=sysroot" \
"ip=192.168.50.101:::255.255.255.0::ens3:off" \
"ip=192.168.51.101:::255.255.255.0::ens4:off" \
@@ -94,7 +94,7 @@ do_test_run() {
"rd.iscsi.firmware" \
"rd.iscsi.initiator=$initiator" \
"rd.iscsi.waitnet=0" \
- || return 1
+ || return 0
run_client "netroot=iscsi target1 target2 rd.iscsi.waitnet=0 rd.iscsi.testroute=0" \
"root=LABEL=sysroot" \
diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
index fdeb840..484ebee 100755
--- a/test/TEST-50-MULTINIC/test.sh
+++ b/test/TEST-50-MULTINIC/test.sh
@@ -18,7 +18,7 @@ run_server() {
-display none \
-net socket,listen=127.0.0.1:12350 \
-net nic,macaddr=52:54:01:12:34:56,model=e1000 \
- ${SERIAL:+-serial "$SERIAL"} \
+ -serial ${SERIAL:-null} \
-watchdog i6300esb -watchdog-action poweroff \
-append "loglevel=7 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
-initrd "$TESTDIR"/initramfs.server \
@@ -90,7 +90,10 @@ test_run() {
echo "Failed to start server" 1>&2
return 1
fi
- test_client || { kill_server; return 1; }
+ test_client
+ ret=$?
+ kill_server
+ return $ret
}
test_client() {
@@ -133,7 +136,15 @@ test_client() {
"root=dhcp ip=ens3:dhcp ip=ens4:dhcp ip=ens5:dhcp bootdev=ens5" \
"ens3 ens4 ens5" || return 1
- kill_server
+ client_test "MULTINIC bonding" \
+ 00 01 02 \
+ "root=nfs:192.168.50.1:/nfs/client ip=bond0:dhcp bond=bond0:ens3,ens4,ens5:mode=balance-rr" \
+ "bond0" || return 1
+
+ client_test "MULTINIC bridging" \
+ 00 01 02 \
+ "root=nfs:192.168.50.1:/nfs/client ip=bridge0:dhcp bridge=bridge0:ens3,ens4,ens5" \
+ "bridge0" || return 1
return 0
}

View File

@ -1,56 +0,0 @@
From bb1b924792a688ea3da7e7f4503527e5bc0b18fb Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 19 Jan 2016 14:43:43 +0100
Subject: [PATCH] TEST-30-ISCSI: some tests have unknown return code
by design
---
test/TEST-30-ISCSI/test.sh | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/test/TEST-30-ISCSI/test.sh b/test/TEST-30-ISCSI/test.sh
index 00c1fbd..940edb6 100755
--- a/test/TEST-30-ISCSI/test.sh
+++ b/test/TEST-30-ISCSI/test.sh
@@ -85,7 +85,7 @@ do_test_run() {
"rd.iscsi.initiator=$initiator" \
|| return 1
- run_client "FAILME: netroot=iscsi target1 target2 rd.iscsi.waitnet=0" \
+ run_client "netroot=iscsi target1 target2 rd.iscsi.waitnet=0" \
"root=LABEL=sysroot" \
"ip=192.168.50.101:::255.255.255.0::ens3:off" \
"ip=192.168.51.101:::255.255.255.0::ens4:off" \
@@ -94,9 +94,9 @@ do_test_run() {
"rd.iscsi.firmware" \
"rd.iscsi.initiator=$initiator" \
"rd.iscsi.waitnet=0" \
- || return 0
+ || return 1
- run_client "netroot=iscsi target1 target2 rd.iscsi.waitnet=0 rd.iscsi.testroute=0" \
+ run_client "FAILME: netroot=iscsi target1 target2 rd.iscsi.waitnet=0 rd.iscsi.testroute=0" \
"root=LABEL=sysroot" \
"ip=192.168.50.101:::255.255.255.0::ens3:off" \
"ip=192.168.51.101:::255.255.255.0::ens4:off" \
@@ -105,9 +105,9 @@ do_test_run() {
"rd.iscsi.firmware" \
"rd.iscsi.initiator=$initiator" \
"rd.iscsi.waitnet=0 rd.iscsi.testroute=0" \
- || return 1
+ || :
- run_client "netroot=iscsi target1 target2 rd.iscsi.waitnet=0 rd.iscsi.testroute=0 default GW" \
+ run_client "FAILME: netroot=iscsi target1 target2 rd.iscsi.waitnet=0 rd.iscsi.testroute=0 default GW" \
"root=LABEL=sysroot" \
"ip=192.168.50.101::192.168.50.1:255.255.255.0::ens3:off" \
"ip=192.168.51.101::192.168.51.1:255.255.255.0::ens4:off" \
@@ -116,7 +116,7 @@ do_test_run() {
"rd.iscsi.firmware" \
"rd.iscsi.initiator=$initiator" \
"rd.iscsi.waitnet=0 rd.iscsi.testroute=0" \
- || return 1
+ || :
return 0
}

View File

@ -1,22 +0,0 @@
From 9542f2fee4a398ed00730e6ffb7de5fe315aa093 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 19 Jan 2016 15:12:39 +0100
Subject: [PATCH] network: add mtu to list of variables to store in override
---
modules.d/40network/ifup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
index 14ca86d..7c179bd 100755
--- a/modules.d/40network/ifup.sh
+++ b/modules.d/40network/ifup.sh
@@ -362,7 +362,7 @@ for p in $(getargs ip=); do
done
# Store config for later use
- for i in ip srv gw mask hostname macaddr dns1 dns2; do
+ for i in ip srv gw mask hostname macaddr mtu dns1 dns2; do
eval '[ "$'$i'" ] && echo '$i'="$'$i'"'
done > /tmp/net.$netif.override

View File

@ -1,46 +0,0 @@
From 43819af68c7789ec932c25e699c56889fdf7276c Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fvogt@suse.com>
Date: Thu, 21 Jan 2016 17:13:07 +0100
Subject: [PATCH] Correctly handle module aliases
Handle module aliases correctly to not generate unbootable
initrds with different kernel versions when modules were renamed
or replaced.
Signed-off-by: Fabian Vogt <fvogt@suse.com>
---
dracut.sh | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/dracut.sh b/dracut.sh
index 98dbe0b..ae8772b 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -1195,6 +1195,27 @@ if [[ $hostonly ]]; then
while read m rest || [ -n "$m" ]; do
host_modules["$m"]=1
done </proc/modules
+
+ # Explanation of the following section:
+ # Since kernel 4.4, mpt3sas is a complete replacement for mpt2sas.
+ # mpt3sas has an alias to mpt2sas now, but since mpt3sas isn't loaded
+ # when generating the initrd from kernel < 4.4, it's not included.
+ # The other direction has the same issue:
+ # When generating the initrd from kernel >= 4.4, mpt2sas isn't loaded,
+ # so it's not included.
+ # Both ways result in an unbootable initrd.
+
+ # also add aliases of loaded modules
+ for mod in "${!host_modules[@]}"; do
+ aliases=$(modinfo -F alias "$mod" 2>&1)
+ for alias in $aliases; do
+ host_modules["$alias"]=1
+ done
+ # mod might be an alias in the target kernel, find the real module
+ mod_filename=$(modinfo -k "$kernel" "$mod" -F filename)
+ [ $? -ne 0 ] && continue
+ host_modules["$(basename -s .ko "$mod_filename")"]=1
+ done
fi
unset m

View File

@ -1,44 +0,0 @@
From f4f8fb5c10cc8d0047123324197aff25f0a63e04 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 26 Jan 2016 12:26:03 +0100
Subject: [PATCH] network: if rd.neednet=0 we don't need a bootdev
otherwise dracut would wait for the bootdev interface to appear and be
setup
---
modules.d/40network/parse-ip-opts.sh | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/modules.d/40network/parse-ip-opts.sh b/modules.d/40network/parse-ip-opts.sh
index 12f4765..5779ef8 100755
--- a/modules.d/40network/parse-ip-opts.sh
+++ b/modules.d/40network/parse-ip-opts.sh
@@ -40,6 +40,8 @@ if [ -n "$NEEDBOOTDEV" ] && getargbool 1 rd.neednet; then
#[ -z "$BOOTDEV" ] && warn "Please supply bootdev argument for multiple ip= lines"
echo "rd.neednet=1" > /etc/cmdline.d/dracut-neednet.conf
info "Multiple ip= arguments: assuming rd.neednet=1"
+else
+ unset NEEDBOOTDEV
fi
# Check ip= lines
@@ -48,17 +50,14 @@ for p in $(getargs ip=); do
ip_to_var $p
# make first device specified the BOOTDEV
- if [ -z "$BOOTDEV" ] && [ -n "$dev" ]; then
+ if [ -n "$NEEDBOOTDEV" ] && [ -z "$BOOTDEV" ] && [ -n "$dev" ]; then
BOOTDEV="$dev"
- [ -n "$NEEDBOOTDEV" ] && info "Setting bootdev to '$BOOTDEV'"
+ info "Setting bootdev to '$BOOTDEV'"
fi
# skip ibft since we did it above
[ "$autoconf" = "ibft" ] && continue
- # We need to have an ip= line for the specified bootdev
- [ -n "$NEEDBOOTDEV" ] && [ "$dev" = "$BOOTDEV" ] && BOOTDEVOK=1
-
# Empty autoconf defaults to 'dhcp'
if [ -z "$autoconf" ] ; then
warn "Empty autoconf values default to dhcp"

View File

@ -1,25 +0,0 @@
From b4dd861a0b916368bad9413fdc5d90482fcbd65a Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 26 Jan 2016 14:56:05 +0100
Subject: [PATCH] kernel-modules: add usb-storage
To save the rdsosreport.txt to a USB stick, the usb-storage module is
needed
---
modules.d/90kernel-modules/module-setup.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
index c5f2397..13f48c9 100755
--- a/modules.d/90kernel-modules/module-setup.sh
+++ b/modules.d/90kernel-modules/module-setup.sh
@@ -47,7 +47,8 @@ installkernel() {
"=drivers/input/keyboard"
instmods yenta_socket scsi_dh_rdac scsi_dh_emc scsi_dh_alua \
- atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus
+ atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus \
+ usb-storage
if [[ "$(uname -p)" == arm* ]]; then
# arm specific modules

View File

@ -1,48 +0,0 @@
From 6bc2096cf58c4b52f23ecc1bf8dc301d6122dfb5 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 26 Jan 2016 14:59:28 +0100
Subject: [PATCH] kernel-modules: join instmods and install all usb/storage
---
modules.d/90kernel-modules/module-setup.sh | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
index 13f48c9..300adc7 100755
--- a/modules.d/90kernel-modules/module-setup.sh
+++ b/modules.d/90kernel-modules/module-setup.sh
@@ -39,16 +39,17 @@ installkernel() {
ehci-hcd ehci-pci ehci-platform \
ohci-hcd ohci-pci \
uhci-hcd \
- xhci-hcd xhci-pci xhci-plat-hcd
-
- hostonly='' instmods \
+ xhci-hcd xhci-pci xhci-plat-hcd \
"=drivers/hid" \
"=drivers/input/serio" \
- "=drivers/input/keyboard"
+ "=drivers/input/keyboard" \
+ "=drivers/usb/storage"
- instmods yenta_socket scsi_dh_rdac scsi_dh_emc scsi_dh_alua \
- atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus \
- usb-storage
+ instmods \
+ yenta_socket scsi_dh_rdac scsi_dh_emc scsi_dh_alua \
+ atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus \
+ virtio virtio_blk virtio_ring virtio_pci virtio_scsi \
+ "=drivers/pcmcia" =ide
if [[ "$(uname -p)" == arm* ]]; then
# arm specific modules
@@ -61,9 +62,6 @@ installkernel() {
${NULL}
fi
- # install virtual machine support
- instmods virtio virtio_blk virtio_ring virtio_pci virtio_scsi \
- "=drivers/pcmcia" =ide "=drivers/usb/storage"
find_kernel_modules | block_module_filter | instmods

View File

@ -1,54 +0,0 @@
From eddca3c9c24e4cb9c5def0b98920e36b16fafaac Mon Sep 17 00:00:00 2001
From: Evgeny Vereshchagin <evvers@ya.ru>
Date: Mon, 15 Feb 2016 08:29:40 +0000
Subject: [PATCH] dracut-systemd/dracut-cmdline-ask: fix dracut
--kernel-cmdline=rd.cmdline=ask
How to reproduce:
host# dracut --kernel-cmdline='rd.cmdline=ask' initramfs.img
host# qemu-system-x86_64 -initrd initramfs.img ... -append root=/dev/sda1 ...
...
qemu-host# journalctl -b | grep dracut-cmdline-ask
...
Feb 15 08:45:36 localhost systemd[1]: dracut-cmdline-ask.service: Installed new job dracut-cmdline-ask.service/start as 42
Feb 15 08:45:36 localhost systemd[1]: dracut-cmdline-ask.service: ConditionKernelCommandLine=rd.cmdline=ask failed.
Feb 15 08:45:36 localhost systemd[1]: dracut-cmdline-ask.service: Starting requested but condition failed. Not starting unit.
Feb 15 08:45:36 localhost systemd[1]: dracut-cmdline-ask.service: Job dracut-cmdline-ask.service/start finished, result=done
...
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
---
modules.d/98dracut-systemd/dracut-cmdline-ask.service | 3 ++-
modules.d/98dracut-systemd/dracut-cmdline-ask.sh | 4 ++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/modules.d/98dracut-systemd/dracut-cmdline-ask.service b/modules.d/98dracut-systemd/dracut-cmdline-ask.service
index 9a34b35..8bc7d80 100644
--- a/modules.d/98dracut-systemd/dracut-cmdline-ask.service
+++ b/modules.d/98dracut-systemd/dracut-cmdline-ask.service
@@ -14,7 +14,8 @@ Before=dracut-cmdline.service
After=systemd-journald.socket
Wants=systemd-journald.socket
ConditionPathExists=/usr/lib/initrd-release
-ConditionKernelCommandLine=rd.cmdline=ask
+ConditionKernelCommandLine=|rd.cmdline=ask
+ConditionPathExistsGlob=|/etc/cmdline.d/*.conf
[Service]
Environment=DRACUT_SYSTEMD=1
diff --git a/modules.d/98dracut-systemd/dracut-cmdline-ask.sh b/modules.d/98dracut-systemd/dracut-cmdline-ask.sh
index ab8933a..f410f46 100755
--- a/modules.d/98dracut-systemd/dracut-cmdline-ask.sh
+++ b/modules.d/98dracut-systemd/dracut-cmdline-ask.sh
@@ -1,5 +1,9 @@
#!/bin/bash
+type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+getarg "rd.cmdline=ask" || exit 0
+
sleep 0.5
echo
sleep 0.5

View File

@ -1,39 +0,0 @@
From 4ab6447c2a9ed105e7fba26ded2b3f3b725de8e9 Mon Sep 17 00:00:00 2001
From: Evgeny Vereshchagin <evvers@ya.ru>
Date: Mon, 15 Feb 2016 13:47:18 +0000
Subject: [PATCH] base/init.sh: don't remove 99-cmdline-ask on 'hostonly'
cleanup
How to reproduce:
host# ./dracut.sh -o 'dracut-systemd systemd systemd-initrd' --local -f ./initramfs.img
host# qemu-system-x86_64 -initrd ./initramfs.img \
-append 'root=/dev/sda1 rd.cmdline=ask rd.hostonly=0' \
...
Enter additional kernel command line parameter (end with ctrl-d or .)
> rd.break
> .
...
There is no "Break before switch_root"
...
Signed-off-by: Evgeny Vereshchagin <evvers@ya.ru>
---
modules.d/99base/init.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index e2e4029..bd7ef70 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -120,7 +120,9 @@ if getarg "rd.cmdline=ask"; then
fi
if ! getargbool 1 'rd.hostonly'; then
+ [ -f /etc/cmdline.d/99-cmdline-ask.conf ] && mv /etc/cmdline.d/99-cmdline-ask.conf /tmp/99-cmdline-ask.conf
remove_hostonly_files
+ [ -f /tmp/99-cmdline-ask.conf ] && mv /tmp/99-cmdline-ask.conf /etc/cmdline.d/99-cmdline-ask.conf
fi
# run scriptlets to parse the command line

View File

@ -1,42 +0,0 @@
From fe6455a6e8f4b070ffa8116ef26d423a25d56049 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 29 Feb 2016 13:12:02 +0100
Subject: [PATCH] documentation: "--hostonly-i18n" "--no-hostonly-i18n"
"i18n_install_all"
---
dracut.8.asc | 6 ++++++
dracut.conf.5.asc | 3 +++
2 files changed, 9 insertions(+)
diff --git a/dracut.8.asc b/dracut.8.asc
index aee84c4..3b80000 100644
--- a/dracut.8.asc
+++ b/dracut.8.asc
@@ -323,6 +323,12 @@ provide a valid _/etc/fstab_.
**--no-hostonly-cmdline**:
Do not store kernel command line arguments needed in the initramfs
+**--hostonly-i18n**:
+ Install only needed keyboard and font files according to the host configuration (default).
+
+**--no-hostonly-i18n**:
+ Install all keyboard and font files available.
+
**--persistent-policy** _<policy>_::
Use _<policy>_ to address disks and partitions.
_<policy>_ can be any directory name found in /dev/disk.
diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc
index 0460d4f..e07c247 100644
--- a/dracut.conf.5.asc
+++ b/dracut.conf.5.asc
@@ -99,6 +99,9 @@ Configuration files must have the extension .conf; other extensions are ignored.
*hostonly_cmdline=*"__{yes|no}__"::
If set, store the kernel command line arguments needed in the initramfs
+*i18n_install_all=*"__{yes|no}__"::
+ If set to yes, install all available fonts and keyboard files.
+
*persistent_policy=*"__<policy>__"::
Use _<policy>_ to address disks and partitions.
_<policy>_ can be any directory name found in /dev/disk.

View File

@ -1,91 +0,0 @@
From caf12d6717379769e4f12296405edc4d547d46f8 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 29 Feb 2016 14:52:16 +0100
Subject: [PATCH] network/dhclient-script.sh: add classless-static-routes
support
https://bugzilla.redhat.com/show_bug.cgi?id=1260955
(cherry picked from commit a48ea27debb926a30810c9f1a42f096494c727e2)
---
modules.d/40network/dhclient-script.sh | 48 ++++++++++++++++++++++++++++++++++
modules.d/40network/dhclient.conf | 5 +++-
2 files changed, 52 insertions(+), 1 deletion(-)
diff --git a/modules.d/40network/dhclient-script.sh b/modules.d/40network/dhclient-script.sh
index 9aac2b1..13d2dc2 100755
--- a/modules.d/40network/dhclient-script.sh
+++ b/modules.d/40network/dhclient-script.sh
@@ -95,6 +95,51 @@ setup_interface6() {
[ -n "$hostname" ] && echo "echo ${hostname%.$domain}${domain:+.$domain} > /proc/sys/kernel/hostname" > /tmp/net.$netif.hostname
}
+function parse_option_121() {
+ while [ $# -ne 0 ]; do
+ mask="$1"
+ shift
+
+ # Is the destination a multicast group?
+ if [ $1 -ge 224 -a $1 -lt 240 ]; then
+ multicast=1
+ else
+ multicast=0
+ fi
+
+ # Parse the arguments into a CIDR net/mask string
+ if [ $mask -gt 24 ]; then
+ destination="$1.$2.$3.$4/$mask"
+ shift; shift; shift; shift
+ elif [ $mask -gt 16 ]; then
+ destination="$1.$2.$3.0/$mask"
+ shift; shift; shift
+ elif [ $mask -gt 8 ]; then
+ destination="$1.$2.0.0/$mask"
+ shift; shift
+ else
+ destination="$1.0.0.0/$mask"
+ shift
+ fi
+
+ # Read the gateway
+ gateway="$1.$2.$3.$4"
+ shift; shift; shift; shift
+
+ # Multicast routing on Linux
+ # - If you set a next-hop address for a multicast group, this breaks with Cisco switches
+ # - If you simply leave it link-local and attach it to an interface, it works fine.
+ if [ $multicast -eq 1 ]; then
+ temp_result="$destination dev $interface"
+ else
+ temp_result="$destination via $gateway dev $interface"
+ fi
+
+ echo "/sbin/ip route add $temp_result"
+ done
+}
+
+
case $reason in
PREINIT)
echo "dhcp: PREINIT $netif up"
@@ -129,6 +174,9 @@ case $reason in
{
echo '. /lib/net-lib.sh'
echo "setup_net $netif"
+ if [ -n "$new_classless_static_routes" ]; then
+ modify_routes add "$(parse_option_121 $new_classless_static_routes)"
+ fi
echo "source_hook initqueue/online $netif"
[ -e /tmp/net.$netif.manualup ] || echo "/sbin/netroot $netif"
echo "rm -f -- $hookdir/initqueue/setup_net_$netif.sh"
diff --git a/modules.d/40network/dhclient.conf b/modules.d/40network/dhclient.conf
index dbf5882..7b06763 100644
--- a/modules.d/40network/dhclient.conf
+++ b/modules.d/40network/dhclient.conf
@@ -1,3 +1,6 @@
+
+option classless-routes code 121 = array of unsigned integer 8;
+
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
- root-path, interface-mtu;
+ root-path, interface-mtu classless-routes;

View File

@ -1,29 +0,0 @@
From 556ff7c76a5c365889ea9972c1878eaf7073bde8 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 7 Mar 2016 12:38:23 +0100
Subject: [PATCH] dracut-systemd/dracut-pre-pivot.sh: Break at switch_root only
for bare rd.break
similar to commit ddfea6b54cfa8f8f6c970d970318568c8a8a4c78
Previously, any rd.break=breakpoint would cause a break at the
given breakpoint and also at switch_root.
---
modules.d/98dracut-systemd/dracut-pre-pivot.sh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/modules.d/98dracut-systemd/dracut-pre-pivot.sh b/modules.d/98dracut-systemd/dracut-pre-pivot.sh
index a07cf3e..cc70e3c 100755
--- a/modules.d/98dracut-systemd/dracut-pre-pivot.sh
+++ b/modules.d/98dracut-systemd/dracut-pre-pivot.sh
@@ -18,7 +18,9 @@ source_hook pre-pivot
getarg 'rd.break=cleanup' 'rdbreak=cleanup' && emergency_shell -n cleanup "Break cleanup"
source_hook cleanup
-getarg rd.break -d rdbreak && emergency_shell -n switch_root "Break before switch_root"
+_bv=$(getarg rd.break -d rdbreak) && [ -z "$_bv" ] &&
+ emergency_shell -n switch_root "Break before switch_root"
+unset _bv
# remove helper symlink
[ -h /dev/root ] && rm -f -- /dev/root

View File

@ -1,24 +0,0 @@
From b127294def5efecc27fac730f784f8bf03a5e52d Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 14 Mar 2016 10:59:29 +0100
Subject: [PATCH] dracut-install: catch ldd message "cannot execute binary
file"
---
install/dracut-install.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/install/dracut-install.c b/install/dracut-install.c
index a7bfdb8..8f65d8d 100644
--- a/install/dracut-install.c
+++ b/install/dracut-install.c
@@ -393,6 +393,9 @@ static int resolve_deps(const char *src)
break;
/* glibc */
+ if (strstr(buf, "cannot execute binary file"))
+ break;
+
if (strstr(buf, "not a dynamic executable"))
break;

View File

@ -1,22 +0,0 @@
From 472928ec3dcbfcc7ea0c1fd7e821843739f03bfc Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 14 Mar 2016 14:16:12 +0100
Subject: [PATCH] dracut.conf.5.asc: fix bold
---
dracut.conf.5.asc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc
index e07c247..8f362b2 100644
--- a/dracut.conf.5.asc
+++ b/dracut.conf.5.asc
@@ -187,7 +187,7 @@ provide a valid _/etc/fstab_.
*show_modules=*"__{yes|no}__"::
Print the name of the included modules to standard output during build.
-*i18n_vars="__<variable mapping>__"::
+*i18n_vars=*"__<variable mapping>__"::
Distribution specific variable mapping.
See dracut/modules.d/10i18n/README for a detailed description.

View File

@ -1,31 +0,0 @@
From 89da227de991ef3c1bb9ad3dc4f23d07535317d2 Mon Sep 17 00:00:00 2001
From: Pratyush Anand <panand@redhat.com>
Date: Wed, 16 Mar 2016 09:09:09 +0530
Subject: [PATCH] watchdog: Do not add hooks if systemd module is included
When systemd is present, let it manage watchdog feed.
Signed-off-by: Pratyush Anand <panand@redhat.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Harald Hoyer <harald@redhat.com>
---
modules.d/04watchdog/module-setup.sh | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/modules.d/04watchdog/module-setup.sh b/modules.d/04watchdog/module-setup.sh
index 576c589..7ec757a 100755
--- a/modules.d/04watchdog/module-setup.sh
+++ b/modules.d/04watchdog/module-setup.sh
@@ -12,6 +12,11 @@ depends() {
# called by dracut
install() {
+ # Do not add watchdog hooks if systemd module is included
+ # In that case, systemd will manage watchdog kick
+ if dracut_module_included "systemd"; then
+ return
+ fi
inst_hook cmdline 00 "$moddir/watchdog.sh"
inst_hook cmdline 50 "$moddir/watchdog.sh"
inst_hook pre-trigger 00 "$moddir/watchdog.sh"

View File

@ -1,94 +0,0 @@
From 3aac6827444c897aab59d7638aa191d510fd4758 Mon Sep 17 00:00:00 2001
From: Pratyush Anand <panand@redhat.com>
Date: Wed, 16 Mar 2016 09:09:10 +0530
Subject: [PATCH] watchdog: install module for active watchdog
Recently following patches have been added in upstream Linux kernel, which
(1) fixes parent of watchdog_device so that
/sys/class/watchdog/watchdogn/device is populated. (2) adds some sysfs
device attributes so that different watchdog status can be read.
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6551881c86c791237a3bebf11eb3bd70b60ea782
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=906d7a5cfeda508e7361f021605579a00cd82815
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=33b711269ade3f6bc9d9d15e4343e6fa922d999b
With the above support, now we can find out whether a watchdog is active or
not. We can also find out the driver/module responsible for that watchdog
device.
Proposed patch uses above support and then adds module of active watchdog
in initramfs generated by dracut for hostonly mode. Kernel module for
inactive watchdog will be added as well for none hostonly mode.
When an user does not want to add kernel module, then one should exclude
complete dracut watchdog module with --omit.
Testing:
-- When watchdog is active watchdog modules were added
# cat /sys/class/watchdog/watchdog0/identity
iTCO_wdt
# cat /sys/class/watchdog/watchdog0/state
active
# dracut --hostonly initramfs-test.img -a watchdog
# lsinitrd initramfs-test.img | grep iTCO
-rw-r--r-- 1 root root 9100 Feb 24 09:19 usr/lib/modules/.../kernel/drivers/watchdog/iTCO_vendor_support.ko
-rw-r--r-- 1 root root 19252 Feb 24 09:19 usr/lib/modules/.../kernel/drivers/watchdog/iTCO_wdt.ko
-- When watchdog is inactive then watchdog modules were not added
# cat /sys/class/watchdog/watchdog0/state
inactive
# dracut --hostonly initramfs-test.img -a watchdog
# lsinitrd initramfs-test.img | grep iTCO
-- When watchdog is inactive, but no hostonly mode, watchdog modules were added
# cat /sys/class/watchdog/watchdog0/state
inactive
# dracut --no-hostonly initramfs-test.img -a watchdog
# lsinitrd initramfs-test.img | grep iTCO
-rw-r--r-- 1 root root 9100 Feb 24 09:19 usr/lib/modules/.../kernel/drivers/watchdog/iTCO_vendor_support.ko
-rw-r--r-- 1 root root 19252 Feb 24 09:19 usr/lib/modules/.../kernel/drivers/watchdog/iTCO_wdt.ko
Signed-off-by: Pratyush Anand <panand@redhat.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Harald Hoyer <harald@redhat.com>
---
modules.d/04watchdog/module-setup.sh | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/modules.d/04watchdog/module-setup.sh b/modules.d/04watchdog/module-setup.sh
index 7ec757a..0ffaa96 100755
--- a/modules.d/04watchdog/module-setup.sh
+++ b/modules.d/04watchdog/module-setup.sh
@@ -32,3 +32,31 @@ install() {
inst_multiple -o wdctl
}
+installkernel() {
+ [[ -d /sys/class/watchdog/ ]] || return
+ for dir in /sys/class/watchdog/*; do
+ [[ -d "$dir" ]] || continue
+ [[ -f "$dir/state" ]] || continue
+ active=$(< "$dir/state")
+ ! [[ $hostonly ]] || [[ "$active" = "active" ]] || continue
+ # device/modalias will return driver of this device
+ wdtdrv=$(< "$dir/device/modalias")
+ # There can be more than one module represented by same
+ # modalias. Currently load all of them.
+ # TODO: Need to find a way to avoid any unwanted module
+ # represented by modalias
+ wdtdrv=$(modprobe -R $wdtdrv)
+ instmods $wdtdrv
+ # however in some cases, we also need to check that if there is
+ # a specific driver for the parent bus/device. In such cases
+ # we also need to enable driver for parent bus/device.
+ wdtppath=$(readlink -f "$dir/device/..")
+ while [ -f "$wdtppath/modalias" ]
+ do
+ wdtpdrv=$(< "$wdtppath/modalias")
+ wdtpdrv=$(modprobe -R $wdtpdrv)
+ instmods $wdtpdrv
+ wdtppath=$(readlink -f "$wdtppath/..")
+ done
+ done
+}

View File

@ -1,56 +0,0 @@
From e343c85763e7b981a5e9b53b04f90f0d83bffaaf Mon Sep 17 00:00:00 2001
From: Pratyush Anand <panand@redhat.com>
Date: Wed, 16 Mar 2016 09:16:24 +0530
Subject: [PATCH] watchdog: ensure that module is loaded as early as possible
It is expected that a watchdog module will disable an active watchdog when
its probe is called ie, when it is loaded. So an early load of the module
will help to disable it earlier.
This can be helpful in some corner cases where kdump and watchdog daemon
both are active.
Testing:
-- When watchdog kernel modules were added
# dracut --no-hostonly initramfs-test.img -a watchdog
# lsinitrd initramfs-test.img -f etc/cmdline.d/00-watchdog.conf
rd.driver.pre=iTCO_wdt,lpc_ich,
Signed-off-by: Pratyush Anand <panand@redhat.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Harald Hoyer <harald@redhat.com>
---
modules.d/04watchdog/module-setup.sh | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/modules.d/04watchdog/module-setup.sh b/modules.d/04watchdog/module-setup.sh
index 0ffaa96..c9da148 100755
--- a/modules.d/04watchdog/module-setup.sh
+++ b/modules.d/04watchdog/module-setup.sh
@@ -34,6 +34,7 @@ install() {
installkernel() {
[[ -d /sys/class/watchdog/ ]] || return
+ wdtcmdline=""
for dir in /sys/class/watchdog/*; do
[[ -d "$dir" ]] || continue
[[ -f "$dir/state" ]] || continue
@@ -47,6 +48,7 @@ installkernel() {
# represented by modalias
wdtdrv=$(modprobe -R $wdtdrv)
instmods $wdtdrv
+ wdtcmdline="$wdtcmdline$(echo $wdtdrv | tr " " ","),"
# however in some cases, we also need to check that if there is
# a specific driver for the parent bus/device. In such cases
# we also need to enable driver for parent bus/device.
@@ -56,7 +58,10 @@ installkernel() {
wdtpdrv=$(< "$wdtppath/modalias")
wdtpdrv=$(modprobe -R $wdtpdrv)
instmods $wdtpdrv
+ wdtcmdline="$wdtcmdline$(echo $wdtpdrv | tr " " ","),"
wdtppath=$(readlink -f "$wdtppath/..")
done
done
+ # ensure that watchdog module is loaded as early as possible
+ [[ $wdtcmdline = "" ]] || echo "rd.driver.pre=$wdtcmdline" > ${initdir}/etc/cmdline.d/00-watchdog.conf
}

View File

@ -1,130 +0,0 @@
From 97bbba6938fc22605026b4cff3c5cc524c7bdf38 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 17 Mar 2016 14:45:24 +0100
Subject: [PATCH] lsinitrd: add "--unpack" to lsinitrd
also "--unpackearly" and "--verbose"
---
lsinitrd.1.asc | 9 +++++++++
lsinitrd.sh | 43 ++++++++++++++++++++++++++++++++-----------
2 files changed, 41 insertions(+), 11 deletions(-)
diff --git a/lsinitrd.1.asc b/lsinitrd.1.asc
index 4293910..b6a704c 100644
--- a/lsinitrd.1.asc
+++ b/lsinitrd.1.asc
@@ -34,6 +34,15 @@ OPTIONS
**-k, --kver** _<kernel version>_::
inspect the initramfs of <kernel version>.
+**--unpack**::
+ unpack the initramfs to the current directory, instead of displaying the contents.
+
+**--unpackearly**::
+ unpack the early microcode initramfs to the current directory, instead of displaying the contents.
+
+**-v, --verbose**::
+ unpack verbosely
+
AVAILABILITY
------------
The lsinitrd command is part of the dracut package and is available from
diff --git a/lsinitrd.sh b/lsinitrd.sh
index 441fb92..224b9c1 100755
--- a/lsinitrd.sh
+++ b/lsinitrd.sh
@@ -27,6 +27,9 @@ usage()
echo "-s, --size sort the contents of the initramfs by size."
echo "-m, --mod list modules."
echo "-f, --file <filename> print the contents of <filename>."
+ echo "--unpack unpack the initramfs, instead of displaying the contents."
+ echo "--unpackearly unpack the early microcode part of the initramfs."
+ echo "-v, --verbose unpack verbosely."
echo "-k, --kver <kernel version> inspect the initramfs of <kernel version>."
echo
} >&2
@@ -37,16 +40,21 @@ usage()
sorted=0
modules=0
+unpack=0
+unset verbose
declare -A filenames
unset POSIXLY_CORRECT
TEMP=$(getopt \
- -o "shmf:k:" \
+ -o "vshmf:k:" \
--long kver: \
--long file: \
--long mod \
--long help \
--long size \
+ --long unpack \
+ --long unpackearly \
+ --long verbose \
-- "$@")
if (( $? != 0 )); then
@@ -58,13 +66,16 @@ eval set -- "$TEMP"
while (($# > 0)); do
case $1 in
- -k|--kver) KERNEL_VERSION="$2"; shift;;
- -f|--file) filenames[${2#/}]=1; shift;;
- -s|--size) sorted=1;;
- -h|--help) usage; exit 0;;
- -m|--mod) modules=1;;
- --) shift;break;;
- *) usage; exit 1;;
+ -k|--kver) KERNEL_VERSION="$2"; shift;;
+ -f|--file) filenames[${2#/}]=1; shift;;
+ -s|--size) sorted=1;;
+ -h|--help) usage; exit 0;;
+ -m|--mod) modules=1;;
+ -v|--verbose) verbose="--verbose";;
+ --unpack) unpack=1;;
+ --unpackearly) unpackearly=1;;
+ --) shift;break;;
+ *) usage; exit 1;;
esac
shift
done
@@ -147,8 +158,14 @@ list_files()
echo "========================================================================"
}
+unpack_files()
+{
+ $CAT "$image" | cpio -id --quiet $verbose
+ ((ret+=$?))
+}
+
-if (( ${#filenames[@]} <= 0 )); then
+if (( ${#filenames[@]} <= 0 )) && [[ -z "$unpack" ]] && [[ -z "$unpackearly" ]]; then
echo "Image: $image: $(du -h $image | while read a b || [ -n "$a" ]; do echo $a;done)"
echo "========================================================================"
fi
@@ -159,7 +176,9 @@ case $bin in
CAT="cat --"
is_early=$(cpio --extract --verbose --quiet --to-stdout -- 'early_cpio' < "$image" 2>/dev/null)
if [[ "$is_early" ]]; then
- if (( ${#filenames[@]} > 0 )); then
+ if [[ -n "$unpackearly" ]]; then
+ unpack_files
+ elif (( ${#filenames[@]} > 0 )); then
extract_files
else
echo "Early CPIO image"
@@ -218,7 +237,9 @@ fi
ret=0
-if (( ${#filenames[@]} > 0 )); then
+if [[ -n "$unpack" ]]; then
+ unpack_files
+elif (( ${#filenames[@]} > 0 )); then
extract_files
else
version=$($CAT "$image" | cpio --extract --verbose --quiet --to-stdout -- \

View File

@ -1,172 +0,0 @@
From 9430ae301e3599d355e8b128a7faffa81dade6ff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ville=20Skytt=C3=A4?= <ville.skytta@iki.fi>
Date: Mon, 28 Mar 2016 11:38:34 +0300
Subject: [PATCH] Do not use deprecated egrep/fgrep
---
dracut-init.sh | 8 ++++----
install/dracut-install.c | 2 +-
modules.d/00systemd/module-setup.sh | 10 +++++-----
modules.d/02systemd-networkd/module-setup.sh | 8 ++++----
modules.d/95debug/module-setup.sh | 2 +-
modules.d/95nfs/module-setup.sh | 8 ++++----
modules.d/95udev-rules/module-setup.sh | 4 ++--
modules.d/99base/module-setup.sh | 4 ++--
test/TEST-04-FULL-SYSTEMD/test.sh | 2 +-
9 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/dracut-init.sh b/dracut-init.sh
index fc35d7b..a67aca2 100644
--- a/dracut-init.sh
+++ b/dracut-init.sh
@@ -328,15 +328,15 @@ inst_rule_group_owner() {
if grep -qE 'OWNER=?"[^ "]+' "$1"; then
for i in $(grep -E 'OWNER=?"[^ "]+' "$1" | sed -r 's/.*OWNER=?"([^ "]+).*/\1/'); do
- if ! egrep -q "^$i:" "$initdir/etc/passwd" 2>/dev/null; then
- egrep "^$i:" /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
+ if ! grep -Eq "^$i:" "$initdir/etc/passwd" 2>/dev/null; then
+ grep -E "^$i:" /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
fi
done
fi
if grep -qE 'GROUP=?"[^ "]+' "$1"; then
for i in $(grep -E 'GROUP=?"[^ "]+' "$1" | sed -r 's/.*GROUP=?"([^ "]+).*/\1/'); do
- if ! egrep -q "^$i:" "$initdir/etc/group" 2>/dev/null; then
- egrep "^$i:" /etc/group 2>/dev/null >> "$initdir/etc/group"
+ if ! grep -Eq "^$i:" "$initdir/etc/group" 2>/dev/null; then
+ grep -E "^$i:" /etc/group 2>/dev/null >> "$initdir/etc/group"
fi
done
fi
diff --git a/install/dracut-install.c b/install/dracut-install.c
index 8f65d8d..3b48ba8 100644
--- a/install/dracut-install.c
+++ b/install/dracut-install.c
@@ -287,7 +287,7 @@ static int library_install(const char *src, const char *lib)
/* Also try to install the same library from one directory above.
This fixes the case, where only the HWCAP lib would be installed
- # ldconfig -p|fgrep libc.so
+ # ldconfig -p|grep -F libc.so
libc.so.6 (libc6,64bit, hwcap: 0x0000001000000000, OS ABI: Linux 2.6.32) => /lib64/power6/libc.so.6
libc.so.6 (libc6,64bit, hwcap: 0x0000000000000200, OS ABI: Linux 2.6.32) => /lib64/power6x/libc.so.6
libc.so.6 (libc6,64bit, OS ABI: Linux 2.6.32) => /lib64/libc.so.6
diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh
index ed59beb..deb5e06 100755
--- a/modules.d/00systemd/module-setup.sh
+++ b/modules.d/00systemd/module-setup.sh
@@ -179,11 +179,11 @@ install() {
# install adm user/group for journald
inst_multiple nologin
- egrep '^systemd-journal:' /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
- egrep '^adm:' /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
- egrep '^systemd-journal:' /etc/group >> "$initdir/etc/group"
- egrep '^wheel:' /etc/group >> "$initdir/etc/group"
- egrep '^adm:' /etc/group >> "$initdir/etc/group"
+ grep '^systemd-journal:' /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
+ grep '^adm:' /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
+ grep '^systemd-journal:' /etc/group >> "$initdir/etc/group"
+ grep '^wheel:' /etc/group >> "$initdir/etc/group"
+ grep '^adm:' /etc/group >> "$initdir/etc/group"
ln_r $systemdutildir/systemd "/init"
ln_r $systemdutildir/systemd "/sbin/init"
diff --git a/modules.d/02systemd-networkd/module-setup.sh b/modules.d/02systemd-networkd/module-setup.sh
index 58842c0..b86751e 100755
--- a/modules.d/02systemd-networkd/module-setup.sh
+++ b/modules.d/02systemd-networkd/module-setup.sh
@@ -48,10 +48,10 @@ install() {
# inst_dir /var/lib/systemd/clock
- egrep '^systemd-network:' /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
- egrep '^systemd-network:' /etc/group >> "$initdir/etc/group"
- # egrep '^systemd-timesync:' /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
- # egrep '^systemd-timesync:' /etc/group >> "$initdir/etc/group"
+ grep '^systemd-network:' /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
+ grep '^systemd-network:' /etc/group >> "$initdir/etc/group"
+ # grep '^systemd-timesync:' /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
+ # grep '^systemd-timesync:' /etc/group >> "$initdir/etc/group"
_arch=$(uname -m)
inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_dns.so.*" \
diff --git a/modules.d/95debug/module-setup.sh b/modules.d/95debug/module-setup.sh
index ce5e8e8..97b2a30 100755
--- a/modules.d/95debug/module-setup.sh
+++ b/modules.d/95debug/module-setup.sh
@@ -18,6 +18,6 @@ install() {
tcpdump cp less hostname mkdir \
fsck fsck.ext2 fsck.ext4 fsck.ext3 fsck.ext4dev fsck.vfat e2fsck
- egrep '^tcpdump:' /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
+ grep '^tcpdump:' /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
}
diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
index 9b5b8c8..aefbc2a 100755
--- a/modules.d/95nfs/module-setup.sh
+++ b/modules.d/95nfs/module-setup.sh
@@ -105,14 +105,14 @@ install() {
# Rather than copy the passwd file in, just set a user for rpcbind
# We'll save the state and restart the daemon from the root anyway
- egrep '^nfsnobody:|^rpc:|^rpcuser:' /etc/passwd >> "$initdir/etc/passwd"
- egrep '^nogroup:|^rpc:|^nobody:' /etc/group >> "$initdir/etc/group"
+ grep -E '^nfsnobody:|^rpc:|^rpcuser:' /etc/passwd >> "$initdir/etc/passwd"
+ grep -E '^nogroup:|^rpc:|^nobody:' /etc/group >> "$initdir/etc/group"
# rpc user needs to be able to write to this directory to save the warmstart
# file
chmod 770 "$initdir/var/lib/rpcbind"
- egrep -q '^rpc:' /etc/passwd \
- && egrep -q '^rpc:' /etc/group \
+ grep -q '^rpc:' /etc/passwd \
+ && grep -q '^rpc:' /etc/group \
&& chown rpc.rpc "$initdir/var/lib/rpcbind"
dracut_need_initqueue
}
diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh
index 6a0625a..a59eca2 100755
--- a/modules.d/95udev-rules/module-setup.sh
+++ b/modules.d/95udev-rules/module-setup.sh
@@ -63,8 +63,8 @@ install() {
{
for i in cdrom tape dialout floppy; do
- if ! egrep -q "^$i:" "$initdir/etc/group" 2>/dev/null; then
- if ! egrep "^$i:" /etc/group 2>/dev/null; then
+ if ! grep -q "^$i:" "$initdir/etc/group" 2>/dev/null; then
+ if ! grep "^$i:" /etc/group 2>/dev/null; then
case $i in
cdrom) echo "$i:x:11:";;
dialout) echo "$i:x:18:";;
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
index cc94d00..5fbf6f7 100755
--- a/modules.d/99base/module-setup.sh
+++ b/modules.d/99base/module-setup.sh
@@ -27,8 +27,8 @@ install() {
fi
#add common users in /etc/passwd, it will be used by nfs/ssh currently
- egrep '^root:' "$initdir/etc/passwd" 2>/dev/null || echo 'root:x:0:0::/root:/bin/sh' >> "$initdir/etc/passwd"
- egrep '^nobody:' /etc/passwd >> "$initdir/etc/passwd"
+ grep '^root:' "$initdir/etc/passwd" 2>/dev/null || echo 'root:x:0:0::/root:/bin/sh' >> "$initdir/etc/passwd"
+ grep '^nobody:' /etc/passwd >> "$initdir/etc/passwd"
# install our scripts and hooks
inst_script "$moddir/init.sh" "/init"
diff --git a/test/TEST-04-FULL-SYSTEMD/test.sh b/test/TEST-04-FULL-SYSTEMD/test.sh
index f5a9d48..c7e08bf 100755
--- a/test/TEST-04-FULL-SYSTEMD/test.sh
+++ b/test/TEST-04-FULL-SYSTEMD/test.sh
@@ -197,7 +197,7 @@ EOF
ln -fs /proc/self/mounts $initdir/etc/mtab
# install any Execs from the service files
- egrep -ho '^Exec[^ ]*=[^ ]+' $initdir/lib/systemd/system/*.service \
+ grep -Eho '^Exec[^ ]*=[^ ]+' $initdir/lib/systemd/system/*.service \
| while read i || [ -n "$i" ]; do
i=${i##Exec*=}; i=${i##-}
inst_multiple -o $i

View File

@ -1,22 +0,0 @@
From dec3dfa4b3215e08581794bd76591023ed7984c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ville=20Skytt=C3=A4?= <ville.skytta@iki.fi>
Date: Mon, 28 Mar 2016 11:39:36 +0300
Subject: [PATCH] nfs/module-setup.sh: Use colon instead of dot for chown
user/group separator
---
modules.d/95nfs/module-setup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
index aefbc2a..6f039bd 100755
--- a/modules.d/95nfs/module-setup.sh
+++ b/modules.d/95nfs/module-setup.sh
@@ -113,6 +113,6 @@ install() {
chmod 770 "$initdir/var/lib/rpcbind"
grep -q '^rpc:' /etc/passwd \
&& grep -q '^rpc:' /etc/group \
- && chown rpc.rpc "$initdir/var/lib/rpcbind"
+ && chown rpc:rpc "$initdir/var/lib/rpcbind"
dracut_need_initqueue
}

View File

@ -1,64 +0,0 @@
From bcabe0fe2570d8cd39ab6af380bce44f13092450 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ville=20Skytt=C3=A4?= <ville.skytta@iki.fi>
Date: Mon, 28 Mar 2016 11:52:14 +0300
Subject: [PATCH] Clean up some bashisms from /bin/sh scripts
---
modules.d/40network/dhclient-script.sh | 2 +-
modules.d/40network/ifup.sh | 2 +-
modules.d/95fcoe/fcoe-edd.sh | 2 +-
modules.d/95nfs/nfs-lib.sh | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/modules.d/40network/dhclient-script.sh b/modules.d/40network/dhclient-script.sh
index 13d2dc2..94ee9d1 100755
--- a/modules.d/40network/dhclient-script.sh
+++ b/modules.d/40network/dhclient-script.sh
@@ -95,7 +95,7 @@ setup_interface6() {
[ -n "$hostname" ] && echo "echo ${hostname%.$domain}${domain:+.$domain} > /proc/sys/kernel/hostname" > /tmp/net.$netif.hostname
}
-function parse_option_121() {
+parse_option_121() {
while [ $# -ne 0 ]; do
mask="$1"
shift
diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
index 7c179bd..1185523 100755
--- a/modules.d/40network/ifup.sh
+++ b/modules.d/40network/ifup.sh
@@ -277,7 +277,7 @@ if [ -z "$NO_TEAM_MASTER" ]; then
for slave in $teamslaves ; do
ip link set $slave up 2>/dev/null
if wait_for_if_up $slave; then
- working_slaves+="$slave "
+ working_slaves="$working_slaves$slave "
fi
done
# Do not add slaves now
diff --git a/modules.d/95fcoe/fcoe-edd.sh b/modules.d/95fcoe/fcoe-edd.sh
index 3b07ad3..1e002d3 100755
--- a/modules.d/95fcoe/fcoe-edd.sh
+++ b/modules.d/95fcoe/fcoe-edd.sh
@@ -29,7 +29,7 @@ for disk in /sys/firmware/edd/int13_*; do
driver=${driver##*/}
fi
# i40e uses dev_port 1 for a virtual fcoe function
- if [ "${driver}" == "i40e" ]; then
+ if [ "${driver}" = "i40e" ]; then
dev_port=1
fi
for nic in "${disk}"/pci_dev/net/*; do
diff --git a/modules.d/95nfs/nfs-lib.sh b/modules.d/95nfs/nfs-lib.sh
index 58aa7e3..67608b1 100755
--- a/modules.d/95nfs/nfs-lib.sh
+++ b/modules.d/95nfs/nfs-lib.sh
@@ -110,7 +110,7 @@ nfsroot_from_dhcp() {
[ -f $f ] && . $f
done
[ -n "$new_root_path" ] && nfsroot_to_var "$nfs:$new_root_path"
- [ -z "$path" ] && [ "$(getarg root=)" == "/dev/nfs" ] && path=/tftpboot/%s
+ [ -z "$path" ] && [ "$(getarg root=)" = "/dev/nfs" ] && path=/tftpboot/%s
[ -z "$server" ] && server=$srv
[ -z "$server" ] && server=$new_dhcp_server_identifier
[ -z "$server" ] && server=$new_next_server

View File

@ -1,131 +0,0 @@
From 06a1d0769055f437c938edd40bd9fbd622475864 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ville=20Skytt=C3=A4?= <ville.skytta@iki.fi>
Date: Mon, 28 Mar 2016 12:09:06 +0300
Subject: [PATCH] dracut-init.sh: Simplify udev rule grepping
---
dracut-init.sh | 102 ++++++++++++++++++++++++++-------------------------------
1 file changed, 46 insertions(+), 56 deletions(-)
diff --git a/dracut-init.sh b/dracut-init.sh
index a67aca2..b176421 100644
--- a/dracut-init.sh
+++ b/dracut-init.sh
@@ -275,71 +275,61 @@ rev_lib_symlinks() {
inst_rule_programs() {
local _prog _bin
- if grep -qE 'PROGRAM==?"[^ "]+' "$1"; then
- for _prog in $(grep -E 'PROGRAM==?"[^ "]+' "$1" | sed -r 's/.*PROGRAM==?"([^ "]+).*/\1/'); do
- _bin=""
- if [ -x ${udevdir}/$_prog ]; then
- _bin=${udevdir}/$_prog
- elif [[ "${_prog/\$env\{/}" == "$_prog" ]]; then
- _bin=$(find_binary "$_prog") || {
- dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
- continue;
- }
- fi
+ for _prog in $(sed -nr 's/.*PROGRAM==?"([^ "]+).*/\1/p'); do
+ _bin=""
+ if [ -x ${udevdir}/$_prog ]; then
+ _bin=${udevdir}/$_prog
+ elif [[ "${_prog/\$env\{/}" == "$_prog" ]]; then
+ _bin=$(find_binary "$_prog") || {
+ dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
+ continue;
+ }
+ fi
- [[ $_bin ]] && inst_binary "$_bin"
- done
- fi
- if grep -qE 'RUN[+=]=?"[^ "]+' "$1"; then
- for _prog in $(grep -E 'RUN[+=]=?"[^ "]+' "$1" | sed -r 's/.*RUN[+=]=?"([^ "]+).*/\1/'); do
- _bin=""
- if [ -x ${udevdir}/$_prog ]; then
- _bin=${udevdir}/$_prog
- elif [[ "${_prog/\$env\{/}" == "$_prog" ]] && [[ "${_prog}" != "/sbin/initqueue" ]]; then
- _bin=$(find_binary "$_prog") || {
- dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
- continue;
- }
- fi
+ [[ $_bin ]] && inst_binary "$_bin"
+ done
+ for _prog in $(sed -nr 's/.*RUN[+=]=?"([^ "]+).*/\1/p'); do
+ _bin=""
+ if [ -x ${udevdir}/$_prog ]; then
+ _bin=${udevdir}/$_prog
+ elif [[ "${_prog/\$env\{/}" == "$_prog" ]] && [[ "${_prog}" != "/sbin/initqueue" ]]; then
+ _bin=$(find_binary "$_prog") || {
+ dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
+ continue;
+ }
+ fi
- [[ $_bin ]] && inst_binary "$_bin"
- done
- fi
- if grep -qE 'IMPORT\{program\}==?"[^ "]+' "$1"; then
- for _prog in $(grep -E 'IMPORT\{program\}==?"[^ "]+' "$1" | sed -r 's/.*IMPORT\{program\}==?"([^ "]+).*/\1/'); do
- _bin=""
- if [ -x ${udevdir}/$_prog ]; then
- _bin=${udevdir}/$_prog
- elif [[ "${_prog/\$env\{/}" == "$_prog" ]]; then
- _bin=$(find_binary "$_prog") || {
- dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
- continue;
- }
- fi
+ [[ $_bin ]] && inst_binary "$_bin"
+ done
+ for _prog in $(sed -nr 's/.*IMPORT\{program\}==?"([^ "]+).*/\1/p'); do
+ _bin=""
+ if [ -x ${udevdir}/$_prog ]; then
+ _bin=${udevdir}/$_prog
+ elif [[ "${_prog/\$env\{/}" == "$_prog" ]]; then
+ _bin=$(find_binary "$_prog") || {
+ dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
+ continue;
+ }
+ fi
- [[ $_bin ]] && dracut_install "$_bin"
- done
- fi
+ [[ $_bin ]] && dracut_install "$_bin"
+ done
}
# attempt to install any programs specified in a udev rule
inst_rule_group_owner() {
local i
- if grep -qE 'OWNER=?"[^ "]+' "$1"; then
- for i in $(grep -E 'OWNER=?"[^ "]+' "$1" | sed -r 's/.*OWNER=?"([^ "]+).*/\1/'); do
- if ! grep -Eq "^$i:" "$initdir/etc/passwd" 2>/dev/null; then
- grep -E "^$i:" /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
- fi
- done
- fi
- if grep -qE 'GROUP=?"[^ "]+' "$1"; then
- for i in $(grep -E 'GROUP=?"[^ "]+' "$1" | sed -r 's/.*GROUP=?"([^ "]+).*/\1/'); do
- if ! grep -Eq "^$i:" "$initdir/etc/group" 2>/dev/null; then
- grep -E "^$i:" /etc/group 2>/dev/null >> "$initdir/etc/group"
- fi
- done
- fi
+ for i in $(sed -nr 's/.*OWNER=?"([^ "]+).*/\1/p'); do
+ if ! grep -Eq "^$i:" "$initdir/etc/passwd" 2>/dev/null; then
+ grep -E "^$i:" /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
+ fi
+ done
+ for i in $(sed -nr 's/.*GROUP=?"([^ "]+).*/\1/p' "$1"); do
+ if ! grep -Eq "^$i:" "$initdir/etc/group" 2>/dev/null; then
+ grep -E "^$i:" /etc/group 2>/dev/null >> "$initdir/etc/group"
+ fi
+ done
}
inst_rule_initqueue() {

View File

@ -1,26 +0,0 @@
From f7f5b82b4323210efc343132e3ae8fa91b26a68d Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 21 Mar 2016 11:56:50 +0100
Subject: [PATCH] dracut.sh: call dracut-install with "-f" in FIPS mode
in fips mode, dracut-install was called with "-H" instead of "-f" in
FIPS mode
missed conversion of commit 26cd262a6a575a50ea384a2ceac6a6829efe8106
---
dracut.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut.sh b/dracut.sh
index 98dbe0b..37ae350 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -1496,7 +1496,7 @@ if [[ $kernel_only != yes ]]; then
if [[ $DRACUT_RESOLVE_LAZY ]] && [[ $DRACUT_INSTALL ]]; then
dinfo "*** Resolving executable dependencies ***"
find "$initdir" -type f -perm /0111 -not -path '*.ko' -print0 \
- | xargs -r -0 $DRACUT_INSTALL ${initdir:+-D "$initdir"} -R ${DRACUT_FIPS_MODE:+-H} --
+ | xargs -r -0 $DRACUT_INSTALL ${initdir:+-D "$initdir"} -R ${DRACUT_FIPS_MODE:+-f} --
dinfo "*** Resolving executable dependencies done***"
fi

View File

@ -1,50 +0,0 @@
From 374ef3ed2bff30db35126dd694b4234709398a2f Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 11 Apr 2016 13:36:06 +0200
Subject: [PATCH] dracut-init.sh: Add file argument to sed's
fixup for 06a1d0769055f437c938edd40bd9fbd622475864
---
dracut-init.sh | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/dracut-init.sh b/dracut-init.sh
index b176421..2431171 100644
--- a/dracut-init.sh
+++ b/dracut-init.sh
@@ -275,7 +275,7 @@ rev_lib_symlinks() {
inst_rule_programs() {
local _prog _bin
- for _prog in $(sed -nr 's/.*PROGRAM==?"([^ "]+).*/\1/p'); do
+ for _prog in $(sed -nr 's/.*PROGRAM==?"([^ "]+).*/\1/p' "$1"); do
_bin=""
if [ -x ${udevdir}/$_prog ]; then
_bin=${udevdir}/$_prog
@@ -288,7 +288,7 @@ inst_rule_programs() {
[[ $_bin ]] && inst_binary "$_bin"
done
- for _prog in $(sed -nr 's/.*RUN[+=]=?"([^ "]+).*/\1/p'); do
+ for _prog in $(sed -nr 's/.*RUN[+=]=?"([^ "]+).*/\1/p' "$1"); do
_bin=""
if [ -x ${udevdir}/$_prog ]; then
_bin=${udevdir}/$_prog
@@ -301,7 +301,7 @@ inst_rule_programs() {
[[ $_bin ]] && inst_binary "$_bin"
done
- for _prog in $(sed -nr 's/.*IMPORT\{program\}==?"([^ "]+).*/\1/p'); do
+ for _prog in $(sed -nr 's/.*IMPORT\{program\}==?"([^ "]+).*/\1/p' "$1"); do
_bin=""
if [ -x ${udevdir}/$_prog ]; then
_bin=${udevdir}/$_prog
@@ -320,7 +320,7 @@ inst_rule_programs() {
inst_rule_group_owner() {
local i
- for i in $(sed -nr 's/.*OWNER=?"([^ "]+).*/\1/p'); do
+ for i in $(sed -nr 's/.*OWNER=?"([^ "]+).*/\1/p' "$1"); do
if ! grep -Eq "^$i:" "$initdir/etc/passwd" 2>/dev/null; then
grep -E "^$i:" /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
fi

View File

@ -1,34 +0,0 @@
From 98fd06934c9e10567b4755714191cd2aee8822ac Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 11 Apr 2016 15:22:11 +0200
Subject: [PATCH] lsinitrd.sh: fixed unpack and skipcpio search
---
lsinitrd.sh | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/lsinitrd.sh b/lsinitrd.sh
index 224b9c1..b19a66a 100755
--- a/lsinitrd.sh
+++ b/lsinitrd.sh
@@ -40,7 +40,6 @@ usage()
sorted=0
modules=0
-unpack=0
unset verbose
declare -A filenames
@@ -184,7 +183,11 @@ case $bin in
echo "Early CPIO image"
list_files
fi
- SKIP="$dracutbasedir/skipcpio"
+ if [[ -d "$dracutbasedir/skipcpio" ]]; then
+ SKIP="$dracutbasedir/skipcpio/skipcpio"
+ else
+ SKIP="$dracutbasedir/skipcpio"
+ fi
if ! [[ -x $SKIP ]]; then
echo
echo "'$SKIP' not found, cannot display remaining contents!" >&2

View File

@ -1,78 +0,0 @@
From ff8f7026897edf1d0aa9c73b9f7a3d21b1b51da3 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 11 Apr 2016 15:22:56 +0200
Subject: [PATCH] dracut-init.sh: mark error messages with FAILED
---
dracut-init.sh | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/dracut-init.sh b/dracut-init.sh
index 2431171..a8b78ce 100644
--- a/dracut-init.sh
+++ b/dracut-init.sh
@@ -168,7 +168,7 @@ fi
inst_dir() {
[[ -e ${initdir}/"$1" ]] && return 0 # already there
$DRACUT_INSTALL ${initdir:+-D "$initdir"} -d "$@"
- (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} -d "$@" || :
+ (($? != 0)) && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} -d "$@" || :
}
inst() {
@@ -179,7 +179,7 @@ inst() {
fi
[[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@"
- (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
+ (($? != 0)) && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
}
inst_simple() {
@@ -191,7 +191,7 @@ inst_simple() {
[[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
[[ -e $1 ]] || return 1 # no source
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${_hostonly_install:+-H} "$@"
- (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${_hostonly_install:+-H} "$@" || :
+ (($? != 0)) && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${_hostonly_install:+-H} "$@" || :
}
inst_symlink() {
@@ -203,14 +203,14 @@ inst_symlink() {
[[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
[[ -L $1 ]] || return 1
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@"
- (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
+ (($? != 0)) && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
}
inst_multiple() {
local _ret
$DRACUT_INSTALL ${initdir:+-D "$initdir"} -a ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
_ret=$?
- (($_ret != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} -a ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
+ (($_ret != 0)) && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} -a ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
return $_ret
}
@@ -227,17 +227,17 @@ inst_library() {
[[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
[[ -e $1 ]] || return 1 # no source
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@"
- (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
+ (($? != 0)) && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
}
inst_binary() {
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
- (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
+ (($? != 0)) && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
}
inst_script() {
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
- (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
+ (($? != 0)) && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
}
mark_hostonly() {

File diff suppressed because it is too large Load Diff

View File

@ -1,94 +0,0 @@
From 607fec3e7965e3d38d764008e2b0c29757d90777 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 13 Apr 2016 11:13:32 +0200
Subject: [PATCH] Use pkg-config for libkmod CFLAGS and LIBS
---
Makefile | 4 ++--
configure | 7 +++++++
dracut.spec | 9 ++++++---
3 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/Makefile b/Makefile
index 0a1ae6c..d28e4cf 100644
--- a/Makefile
+++ b/Makefile
@@ -12,7 +12,7 @@ pkglibdir ?= ${libdir}/dracut
sysconfdir ?= ${prefix}/etc
bindir ?= ${prefix}/bin
mandir ?= ${prefix}/share/man
-CFLAGS ?= -O2 -g -Wall
+CFLAGS ?= -O2 -g -Wall $(KMOD_CFLAGS)
CFLAGS += -std=gnu99 -D_FILE_OFFSET_BITS=64 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
bashcompletiondir ?= ${datadir}/bash-completion/completions
pkgconfigdatadir ?= $(datadir)/pkgconfig
@@ -61,7 +61,7 @@ install/util.o: install/util.c install/util.h install/macro.h install/log.h
install/strv.o: install/strv.c install/strv.h install/util.h install/macro.h install/log.h
install/dracut-install: $(DRACUT_INSTALL_OBJECTS)
- $(CC) $(LDFLAGS) -o $@ $(DRACUT_INSTALL_OBJECTS) $(LDLIBS) -lkmod
+ $(CC) $(LDFLAGS) -o $@ $(DRACUT_INSTALL_OBJECTS) $(LDLIBS) $(KMOD_LIBS)
dracut-install: install/dracut-install
ln -fs $< $@
diff --git a/configure b/configure
index 0bd3d2d..c92cb99 100755
--- a/configure
+++ b/configure
@@ -50,6 +50,11 @@ while (($# > 0)); do
shift
done
+if ! pkg-config --exists --print-errors " libkmod >= 15 "; then
+ echo "dracut needs pkg-config and libkmod >= 15." >&2
+ exit 1
+fi
+
cat > Makefile.inc.$$ <<EOF
prefix ?= ${prefix}
libdir ?= ${libdir:-${prefix}/lib}
@@ -59,6 +64,8 @@ sbindir ?= ${sbindir:-${prefix}/sbin}
mandir ?= ${mandir:-${prefix}/share/man}
enable_documentation ?= ${enable_documentation:-yes}
bindir ?= ${bindir:-${prefix}/bin}
+KMOD_CFLAGS ?= $(pkg-config --cflags " libkmod >= 15 ")
+KMOD_LIBS ?= $(pkg-config --libs " libkmod >= 15 ")
EOF
{
diff --git a/dracut.spec b/dracut.spec
index 9e19fcc..7b9d675 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -39,6 +39,7 @@ Source1: https://www.gnu.org/licenses/lgpl-2.1.txt
BuildRequires: bash git
+BuildRequires: kmod-devel >= 15
%if 0%{?fedora} || 0%{?rhel}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -46,7 +47,6 @@ BuildRequires: pkgconfig
%endif
%if 0%{?fedora}
BuildRequires: bash-completion
-BuildRequires: pkgconfig
%endif
%if 0%{?suse_version}
@@ -223,10 +223,13 @@ This package contains tools to assemble the local initrd and host configuration.
cp %{SOURCE1} .
%build
-%configure --systemdsystemunitdir=%{_unitdir} --bashcompletiondir=$(pkg-config --variable=completionsdir bash-completion) --libdir=%{_prefix}/lib \
+%configure --systemdsystemunitdir=%{_unitdir} \
+ --bashcompletiondir=$(pkg-config --variable=completionsdir bash-completion) \
+ --libdir=%{_prefix}/lib \
%if %{without doc}
- --disable-documentation
+ --disable-documentation \
%endif
+ ${NULL}
make %{?_smp_mflags}

View File

@ -1,162 +0,0 @@
From 8d9ab2755d1341904ca7889f4e05b2151848a759 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 13 Apr 2016 11:47:20 +0200
Subject: [PATCH] Fix regressions with dracut-install with kernel modules
Make sure, the same modules are installed as before.
---
install/dracut-install.c | 9 +++++----
modules.d/50drm/module-setup.sh | 4 ++--
modules.d/90kernel-modules/module-setup.sh | 15 ++++++++-------
modules.d/90kernel-network-modules/module-setup.sh | 2 +-
modules.d/90multipath/module-setup.sh | 2 +-
modules.d/95iscsi/module-setup.sh | 2 +-
6 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/install/dracut-install.c b/install/dracut-install.c
index a20e06c..c246201 100644
--- a/install/dracut-install.c
+++ b/install/dracut-install.c
@@ -1202,6 +1202,7 @@ static int install_module(struct kmod_module *mod)
if (!check_module_path(path) || !check_module_symbols(mod)) {
log_debug("No symbol or patch match for '%s'", path);
return 0;
+ //return -ENOENT;
}
log_debug("dracut_install '%s'", path);
@@ -1295,7 +1296,7 @@ static int install_modules(int argc, char **argv)
}
kmod_list_foreach(itr, modlist) {
mod = kmod_module_get_module(itr);
- ret = install_module(mod);
+ ret += install_module(mod);
}
kmod_module_unref_list(modlist);
modlist = 0;
@@ -1364,13 +1365,13 @@ static int install_modules(int argc, char **argv)
}
kmod_list_foreach(itr, modlist) {
mod = kmod_module_get_module(itr);
- ret = install_module(mod);
+ ret += install_module(mod);
kmod_module_unref(mod);
}
kmod_module_unref_list(modlist);
modlist = 0;
#else
- ret = install_module(mod_o);
+ ret += install_module(mod_o);
kmod_module_unref(mod_o);
#endif
@@ -1413,7 +1414,7 @@ static int install_modules(int argc, char **argv)
}
kmod_list_foreach(itr, modlist) {
mod = kmod_module_get_module(itr);
- ret = install_module(mod);
+ ret += install_module(mod);
kmod_module_unref(mod);
}
kmod_module_unref_list(modlist);
diff --git a/modules.d/50drm/module-setup.sh b/modules.d/50drm/module-setup.sh
index e0b2959..661dde9 100755
--- a/modules.d/50drm/module-setup.sh
+++ b/modules.d/50drm/module-setup.sh
@@ -34,8 +34,8 @@ installkernel() {
if [[ $hostonly ]]; then
for i in /sys/bus/{pci/devices,soc/devices/soc?}/*/modalias; do
[[ -e $i ]] || continue
- if hostonly="" dracut_instmods -s "drm_crtc_init" $(<$i) 2>/dev/null; then
- if strstr $(modinfo -F filename $(<$i) 2>/dev/null) radeon.ko; then
+ if hostonly="" dracut_instmods -s "drm_crtc_init" -S "iw_handler_get_spy" $(<$i) 2>/dev/null; then
+ if strstr "$(modinfo -F filename $(<$i) 2>/dev/null)" radeon.ko; then
hostonly='' instmods amdkfd
fi
fi
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
index e97d598..c30715d 100755
--- a/modules.d/90kernel-modules/module-setup.sh
+++ b/modules.d/90kernel-modules/module-setup.sh
@@ -7,20 +7,21 @@ installkernel() {
if [[ -z $drivers ]]; then
hostonly='' instmods \
sr_mod sd_mod scsi_dh ata_piix hid_generic unix \
- ehci-hcd ehci-pci \
+ ehci-hcd ehci-pci ehci-platform \
ohci-hcd ohci-pci \
uhci-hcd \
xhci-hcd xhci-pci xhci-plat-hcd \
- ehci-platform
-
- instmods \
"=drivers/hid" \
"=drivers/input/serio" \
"=drivers/input/keyboard" \
+ "=drivers/usb/storage" \
+ ${NULL}
+
+ instmods \
yenta_socket scsi_dh_rdac scsi_dh_emc scsi_dh_alua \
atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus \
virtio virtio_blk virtio_ring virtio_pci virtio_scsi \
- "=drivers/pcmcia" =ide "=drivers/usb/storage"
+ "=drivers/pcmcia" =ide
if [[ "$(uname -p)" == arm* ]]; then
# arm specific modules
@@ -33,13 +34,13 @@ installkernel() {
${NULL}
fi
- dracut_instmods -s "${_blockfuncs}" "=drivers"
+ dracut_instmods -o -s "${_blockfuncs}" "=drivers"
# if not on hostonly mode, install all known filesystems,
# if the required list is not set via the filesystems variable
if ! [[ $hostonly ]]; then
if [[ -z $filesystems ]]; then
- dracut_instmods -P ".*/(kernel/fs/nfs|kernel/fs/nfsd|kernel/fs/lockd)/.*" '=fs'
+ dracut_instmods -o -P ".*/(kernel/fs/nfs|kernel/fs/nfsd|kernel/fs/lockd)/.*" '=fs'
fi
else
hostonly='' instmods "${host_fs_types[@]}"
diff --git a/modules.d/90kernel-network-modules/module-setup.sh b/modules.d/90kernel-network-modules/module-setup.sh
index c004ff8..11fbab9 100755
--- a/modules.d/90kernel-network-modules/module-setup.sh
+++ b/modules.d/90kernel-network-modules/module-setup.sh
@@ -21,7 +21,7 @@ installkernel() {
_s390drivers="=drivers/s390/net"
fi
- dracut_instmods -P ".*${_unwanted_drivers}.*" -s "$_net_drivers" "=drivers/net" ${_s390drivers:+"$_s390drivers"}
+ dracut_instmods -o -P ".*${_unwanted_drivers}.*" -s "$_net_drivers" "=drivers/net" ${_s390drivers:+"$_s390drivers"}
#instmods() will take care of hostonly
instmods \
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
index 27817bd..0af777d 100755
--- a/modules.d/90multipath/module-setup.sh
+++ b/modules.d/90multipath/module-setup.sh
@@ -58,7 +58,7 @@ installkernel() {
_s390drivers="=drivers/s390/scsi"
fi
- hostonly='' dracut_instmods -s "$_funcs" "=drivers/scsi" "=drivers/md" ${_s390drivers:+"$_s390drivers"}
+ hostonly='' dracut_instmods -o -s "$_funcs" "=drivers/scsi" "=drivers/md" ${_s390drivers:+"$_s390drivers"}
}
# called by dracut
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
index 203e313..04937b5 100755
--- a/modules.d/95iscsi/module-setup.sh
+++ b/modules.d/95iscsi/module-setup.sh
@@ -166,7 +166,7 @@ installkernel() {
_s390drivers="=drivers/s390/scsi"
fi
- dracut_instmods -s "$_funcs" "=drivers/scsi" ${_s390drivers:+"$_s390drivers"}
+ dracut_instmods -o -s "$_funcs" "=drivers/scsi" ${_s390drivers:+"$_s390drivers"}
}

View File

@ -1,159 +0,0 @@
From fe6e0c23adbdafc4fc371107534b3b2681c96393 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 13 Apr 2016 13:28:29 +0200
Subject: [PATCH] dracut-install: simplify error logic
error out early, if "--optional" is not set
---
install/dracut-install.c | 64 +++++++++++++++++++++++++++++++++++-------------
1 file changed, 47 insertions(+), 17 deletions(-)
diff --git a/install/dracut-install.c b/install/dracut-install.c
index c246201..f414f30 100644
--- a/install/dracut-install.c
+++ b/install/dracut-install.c
@@ -1181,8 +1181,10 @@ static int install_module(struct kmod_module *mod)
state = kmod_module_get_initstate(mod);
name = kmod_module_get_name(mod);
- if (arg_mod_filter_noname && (regexec(&mod_filter_noname, name, 0, NULL, 0) == 0))
+ if (arg_mod_filter_noname && (regexec(&mod_filter_noname, name, 0, NULL, 0) == 0)) {
+ log_debug("dracut_install '%s' is excluded", name);
return 0;
+ }
if (arg_hostonly && (state != KMOD_MODULE_BUILTIN) && (state != KMOD_MODULE_LIVE)) {
log_debug("dracut_install '%s' not hostonly", name);
@@ -1194,15 +1196,14 @@ static int install_module(struct kmod_module *mod)
return -ENOENT;
if (check_hashmap(items_failed, path))
- return 1;
+ return -1;
if (check_hashmap(items, path))
return 0;
if (!check_module_path(path) || !check_module_symbols(mod)) {
log_debug("No symbol or patch match for '%s'", path);
- return 0;
- //return -ENOENT;
+ return 1;
}
log_debug("dracut_install '%s'", path);
@@ -1252,7 +1253,7 @@ static int install_modules(int argc, char **argv)
for (i = 0; i < argc; i++) {
int r = 0;
- int ret = 0;
+ int ret = -1;
log_debug("Handle module '%s'", argv[i]);
if (argv[i][0] == '/') {
@@ -1296,7 +1297,14 @@ static int install_modules(int argc, char **argv)
}
kmod_list_foreach(itr, modlist) {
mod = kmod_module_get_module(itr);
- ret += install_module(mod);
+ r = install_module(mod);
+ kmod_module_unref(mod);
+ if ((r < 0) && !arg_optional) {
+ if (!arg_silent)
+ log_error("ERROR: installing module '%s'", modname);
+ return -ENOENT;
+ };
+ ret = ( ret == 0 ? 0 : r );
}
kmod_module_unref_list(modlist);
modlist = 0;
@@ -1341,40 +1349,55 @@ static int install_modules(int argc, char **argv)
log_debug("Handling %s", ftsent->fts_accpath);
r = kmod_module_new_from_path(ctx, ftsent->fts_accpath, &mod_o);
if (r < 0) {
- log_debug("Failed to lookup modules path '%s': %m", ftsent->fts_accpath);
+ log_debug("Failed to lookup modules path '%s': %m",
+ ftsent->fts_accpath);
+ if (!arg_optional) {
+ return -ENOENT;
+ }
continue;
}
-#if 1
+
/* Check, if we have to load another module with that name instead */
modname = kmod_module_get_name(mod_o);
if (!modname) {
log_error("Failed to get name for module '%s'", ftsent->fts_accpath);
+ if (!arg_optional) {
+ return -ENOENT;
+ }
continue;
}
r = kmod_module_new_from_lookup(ctx, modname, &modlist);
kmod_module_unref(mod_o);
if (r < 0) {
- log_error("2 Failed to lookup alias '%s': %m", modname);
+ log_error("Failed to lookup alias '%s': %m", modname);
kmod_module_unref_list(modlist);
+ if (!arg_optional) {
+ return -ENOENT;
+ }
continue;
}
if (!modlist) {
- log_error("Failed to find module '%s' %s", modname, ftsent->fts_accpath);
+ log_error("Failed to find module '%s' %s", modname,
+ ftsent->fts_accpath);
kmod_module_unref_list(modlist);
+ if (!arg_optional) {
+ return -ENOENT;
+ }
continue;
}
kmod_list_foreach(itr, modlist) {
mod = kmod_module_get_module(itr);
- ret += install_module(mod);
+ r = install_module(mod);
kmod_module_unref(mod);
+ if ((r < 0) && !arg_optional) {
+ if (!arg_silent)
+ log_error("ERROR: installing module '%s'", modname);
+ return -ENOENT;
+ };
+ ret = ( ret == 0 ? 0 : r );
}
kmod_module_unref_list(modlist);
modlist = 0;
-#else
- ret += install_module(mod_o);
- kmod_module_unref(mod_o);
-#endif
-
}
if (errno) {
log_error("FTS ERROR: %m");
@@ -1414,8 +1437,14 @@ static int install_modules(int argc, char **argv)
}
kmod_list_foreach(itr, modlist) {
mod = kmod_module_get_module(itr);
- ret += install_module(mod);
+ r = install_module(mod);
kmod_module_unref(mod);
+ if ((r < 0) && !arg_optional) {
+ if (!arg_silent)
+ log_error("ERROR: installing '%s'", argv[i]);
+ return -ENOENT;
+ };
+ ret = ( ret == 0 ? 0 : r );
}
kmod_module_unref_list(modlist);
modlist = 0;
@@ -1427,6 +1456,7 @@ static int install_modules(int argc, char **argv)
return EXIT_FAILURE;
}
}
+
return EXIT_SUCCESS;
}

View File

@ -1,64 +0,0 @@
From 9bb030c5d8189f42eef3a0a881a361ce811414b0 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 13 Apr 2016 13:57:03 +0200
Subject: [PATCH] dracut-init.sh: beautify instmods()
---
dracut-init.sh | 31 ++++++++++++++++++++++++++++---
1 file changed, 28 insertions(+), 3 deletions(-)
diff --git a/dracut-init.sh b/dracut-init.sh
index e26d97a..8d1d9fa 100644
--- a/dracut-init.sh
+++ b/dracut-init.sh
@@ -1001,22 +1001,47 @@ instmods() {
local _optional="-o"
local _silent
local _ret
+
[[ $no_kernel = yes ]] && return
+
if [[ $1 = '-c' ]]; then
- _optional=""
+ unset _optional
shift
fi
if [[ $1 = '-s' ]]; then
_silent=1
shift
fi
+
if (($# == 0)); then
read -r -d '' -a args
set -- "${args[@]}"
fi
- $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${hostonly:+-H} ${omit_drivers:+-N "$omit_drivers"} ${_optional:+-o} ${_silent:+--silent} ${srcmods:+--kerneldir "$srcmods"} -m "$@"
+
+ $DRACUT_INSTALL \
+ ${initdir:+-D "$initdir"} \
+ ${loginstall:+-L "$loginstall"} \
+ ${hostonly:+-H} \
+ ${omit_drivers:+-N "$omit_drivers"} \
+ ${srcmods:+--kerneldir "$srcmods"} \
+ ${_optional:+-o} \
+ ${_silent:+--silent} \
+ -m "$@"
_ret=$?
- (($_ret != 0)) && [[ -z "$_silent" ]] && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${hostonly:+-H} ${omit_drivers:+-N "$omit_drivers"} ${_optional:+-o} ${_silent:+--silent} ${srcmods:+--kerneldir "$srcmods"} -m "$@" || :
+
+ if (($_ret != 0)) && [[ -z "$_silent" ]]; then
+ derror "FAILED: " \
+ $DRACUT_INSTALL \
+ ${initdir:+-D "$initdir"} \
+ ${loginstall:+-L "$loginstall"} \
+ ${hostonly:+-H} \
+ ${omit_drivers:+-N "$omit_drivers"} \
+ ${srcmods:+--kerneldir "$srcmods"} \
+ ${_optional:+-o} \
+ ${_silent:+--silent} \
+ -m "$@"
+ fi
+
[[ "$optional" ]] && return 0
return $_ret
}

View File

@ -1,37 +0,0 @@
From 7ef36aef28eb8f770f3c104d8e88b3b991170f3a Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 6 Apr 2016 10:24:58 +0200
Subject: [PATCH] plymouth/plymouth-pretrigger.sh: also trigger acpi subsystem
Trigger the acpi subsystem. This will ensure hv_vmbus gets loaded before
plymouth is started, which will make the graphics device become
available before plymouth is started too (and the keyboard ! which might
also be important for plymouth in some setups).
https://bugzilla.redhat.com/show_bug.cgi?id=1218130
(cherry picked from commit d2846fdcce9b8de0edecdf0e06a4b86fc8de542c)
---
modules.d/50plymouth/plymouth-pretrigger.sh | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/modules.d/50plymouth/plymouth-pretrigger.sh b/modules.d/50plymouth/plymouth-pretrigger.sh
index c3a97f2..6458d78 100755
--- a/modules.d/50plymouth/plymouth-pretrigger.sh
+++ b/modules.d/50plymouth/plymouth-pretrigger.sh
@@ -5,9 +5,14 @@ if type plymouthd >/dev/null 2>&1 && [ -z "$DRACUT_SYSTEMD" ]; then
# first trigger graphics subsystem
udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1
# first trigger graphics and tty subsystem
- udevadm trigger --action=add --subsystem-match=graphics --subsystem-match=drm --subsystem-match=tty >/dev/null 2>&1
+ udevadm trigger --action=add \
+ --subsystem-match=graphics \
+ --subsystem-match=drm \
+ --subsystem-match=tty \
+ --subsystem-match=acpi \
+ >/dev/null 2>&1
- udevadm settle --timeout=30 2>&1 | vinfo
+ udevadm settle --timeout=180 2>&1 | vinfo
info "Starting plymouth daemon"
mkdir -m 0755 /run/plymouth

View File

@ -1,106 +0,0 @@
From b14b039e9066f51c3c4cee2123f23f7822dd8e13 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 14 Apr 2016 11:47:50 +0200
Subject: [PATCH] dracut-install: add --help documentation
---
install/dracut-install.c | 73 +++++++++++++++++++++++-------------------------
1 file changed, 35 insertions(+), 38 deletions(-)
diff --git a/install/dracut-install.c b/install/dracut-install.c
index f414f30..bef08da 100644
--- a/install/dracut-install.c
+++ b/install/dracut-install.c
@@ -17,7 +17,7 @@
along with this program; If not, see <http://www.gnu.org/licenses/>.
*/
-#define PROGRAM_VERSION_STRING "1"
+#define PROGRAM_VERSION_STRING "2"
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
@@ -719,49 +719,46 @@ static void item_free(char *i)
static void usage(int status)
{
- /* */
+ /* */
printf("Usage: %s -D DESTROOTDIR [OPTION]... -a SOURCE...\n"
"or: %s -D DESTROOTDIR [OPTION]... SOURCE DEST\n"
+ "or: %s -D DESTROOTDIR [OPTION]... -m KERNELMODULE [KERNELMODULE …]\n"
"\n"
"Install SOURCE to DEST in DESTROOTDIR with all needed dependencies.\n"
"\n"
- " -D --destrootdir Install all files to DESTROOTDIR as the root\n"
- " -a --all Install all SOURCE arguments to DESTROOTDIR\n"
- " -o --optional If SOURCE does not exist, do not fail\n"
- " -d --dir SOURCE is a directory\n"
- " -l --ldd Also install shebang executables and libraries\n"
- " -L --logdir <DIR> Log files, which were installed from the host to <DIR>\n"
- " -R --resolvelazy Only install shebang executables and libraries\n"
- " for all SOURCE files\n"
- " -H --hostonly Mark all SOURCE files as hostonly\n\n"
- " -f --fips Also install all '.SOURCE.hmac' files\n"
- " -v --verbose Show more output\n"
- " --debug Show debug output\n"
- " --version Show package version\n"
- " -h --help Show this help\n"
+ " KERNELMODULE can have the format:\n"
+ " <absolute path> with a leading /\n"
+ " =<kernel subdir>[/<kernel subdir>…] like '=drivers/hid'\n"
+ " <module name>\n"
"\n"
- "Example:\n"
- "# mkdir -p /var/tmp/test-root\n"
- "# %s -D /var/tmp/test-root --ldd -a sh tr\n"
- "# tree /var/tmp/test-root\n"
- "/var/tmp/test-root\n"
- "|-- lib64 -> usr/lib64\n"
- "`-- usr\n"
- " |-- bin\n"
- " | |-- bash\n"
- " | |-- sh -> bash\n"
- " | `-- tr\n"
- " `-- lib64\n"
- " |-- ld-2.15.90.so\n"
- " |-- ld-linux-x86-64.so.2 -> ld-2.15.90.so\n"
- " |-- libc-2.15.90.so\n"
- " |-- libc.so\n"
- " |-- libc.so.6 -> libc-2.15.90.so\n"
- " |-- libdl-2.15.90.so\n"
- " |-- libdl.so -> libdl-2.15.90.so\n"
- " |-- libdl.so.2 -> libdl-2.15.90.so\n"
- " |-- libtinfo.so.5 -> libtinfo.so.5.9\n"
- " `-- libtinfo.so.5.9\n", program_invocation_short_name, program_invocation_short_name,
+ " -D --destrootdir Install all files to DESTROOTDIR as the root\n"
+ " -a --all Install all SOURCE arguments to DESTROOTDIR\n"
+ " -o --optional If SOURCE does not exist, do not fail\n"
+ " -d --dir SOURCE is a directory\n"
+ " -l --ldd Also install shebang executables and libraries\n"
+ " -L --logdir <DIR> Log files, which were installed from the host to <DIR>\n"
+ " -R --resolvelazy Only install shebang executables and libraries\n"
+ " for all SOURCE files\n"
+ " -H --hostonly Mark all SOURCE files as hostonly\n\n"
+ " -f --fips Also install all '.SOURCE.hmac' files\n"
+ "\n"
+ " --module,-m Install kernel modules, instead of files\n"
+ " --kerneldir Specify the kernel module directory\n"
+ " --firmwaredirs Specify the firmware directory search path with : separation\n"
+ " --silent Don't display error messages for kernel module install\n"
+ " -o --optional If kernel module does not exist, do not fail\n"
+ " -p --mod-filter-path Filter kernel modules by path regexp\n"
+ " -P --mod-filter-nopath Exclude kernel modules by path regexp\n"
+ " -s --mod-filter-symbol Filter kernel modules by symbol regexp\n"
+ " -S --mod-filter-nosymbol Exclude kernel modules by symbol regexp\n"
+ " -N --mod-filter-noname Exclude kernel modules by name regexp\n"
+ "\n"
+ " -v --verbose Show more output\n"
+ " --debug Show debug output\n"
+ " --version Show package version\n"
+ " -h --help Show this help\n"
+ "\n",
+ program_invocation_short_name, program_invocation_short_name,
program_invocation_short_name);
exit(status);
}

View File

@ -1,101 +0,0 @@
From 6fcd5c8e3b539de4eeccddab2e5da6ee260fbf0b Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 14 Apr 2016 11:53:14 +0200
Subject: [PATCH] NEWS: update for 045
---
NEWS | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 84 insertions(+)
diff --git a/NEWS b/NEWS
index ca68302..6d1cd0a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,87 @@
+dracut-045
+==========
+
+dracut now requires libkmod for the dracut-install binary helper.
+
+dracut.sh:
+- restorecon final image file
+- fail hard, if we find modules and modules.dep is missing
+
+dracut-functions.sh:
+- fix check_vol_slaves() volume group name stripping
+
+dracut-install:
+- catch ldd message "cannot execute binary file"
+- added kernel module handling with libkmod
+ Added parameters:
+ --module,-m
+ --mod-filter-path, -p
+ --mod-filter-nopath, -P
+ --mod-filter-symbol, -s
+ --mod-filter-nosymbol, -S
+ --mod-filter-noname, -N
+ --silent
+ --kerneldir
+ --firmwaredirs
+
+lsinitrd:
+- new option "--unpack"
+- new option "--unpackearly"
+- and "--verbose"
+
+general initramfs fixes:
+- don't remove 99-cmdline-ask on 'hostonly' cleanup
+- call dracut-cmdline-ask.service, if /etc/cmdline.d/*.conf exists
+- break at switch_root only for bare rd.break
+
+dmsquash-live:
+- fixed livenet-generator execution flag
+ and include only, if systemd is used
+- fixed dmsquash-live-root.sh for cases where the fstype of the liveimage is squashfs
+- fixed typo for rootfs.img
+
+dmraid:
+- added "nowatch" option in udev rule, otherwise udev would reread partitions for raid members
+
+shutdown:
+- handle readonly /run on shutdown
+
+kernel-modules:
+- add all HID drivers, regardless of hostonly mode
+ people swap keyboards sometimes and should be able to enter their disk password
+- add usb-storage
+ To save the rdsosreport.txt to a USB stick, the usb-storage module is needed.
+
+systemd:
+- add /etc/machine-info
+- fixed systemd-escape call for names beginning with "-"
+
+network:
+- fix carrier detection
+- correctly set mac address for ip=...:<mtu>:<mac>
+- fixed vlan, bonding, bridging, team logic
+ call ifup for the slaves and assemble afterwards
+- add mtu to list of variables to store in override
+- for rd.neednet=0 a bootdev is not needed anymore
+- dhclient-script.sh: add classless-static-routes support
+
+nbd:
+- add systemd generator
+- use export names instead of port numbers, because port number based
+ exports are deprecated and were removed.
+
+fcoe:
+- no more /dev/shm state copying
+
+multipath:
+- check all /dev/mapper devices if they are multipath devices, not only mpath*
+
+fips:
+- fixed .hmac installation in FIPS mode
+
+plymouth:
+- also trigger the acpi subsystem
+
dracut-044
==========
creation:

View File

@ -1,32 +0,0 @@
From b99e72427b517dea0d91d15fe43cf0a37420af36 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 14 Apr 2016 13:38:24 +0200
Subject: [PATCH] Revert "fcoe: no need to copy lldpad state"
This reverts commit e93ff1cf9aac8f97131b3101a5da240ce5f45239.
seems like the file has to be copied back in the real root.
https://bugzilla.redhat.com/show_bug.cgi?id=1246217
---
modules.d/95fcoe/cleanup-fcoe.sh | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/modules.d/95fcoe/cleanup-fcoe.sh b/modules.d/95fcoe/cleanup-fcoe.sh
index 856e2d9..5ff4d05 100644
--- a/modules.d/95fcoe/cleanup-fcoe.sh
+++ b/modules.d/95fcoe/cleanup-fcoe.sh
@@ -2,8 +2,9 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if [ -z "$DRACUT_SYSTEMD" ]; then
- if [ -e /var/run/lldpad.pid ]; then
- lldpad -k
- fi
+if [ -e /var/run/lldpad.pid ]; then
+ lldpad -k
+ mkdir -m 0755 -p /run/initramfs/state/dev/shm
+ cp /dev/shm/lldpad.state /run/initramfs/state/dev/shm/ > /dev/null 2>&1
+ echo "files /dev/shm/lldpad.state" >> /run/initramfs/rwtab
fi

View File

@ -1,32 +0,0 @@
From db7d61cff7f5a5be3a56cff39dc278f004b9c461 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 14 Apr 2016 14:56:37 +0200
Subject: [PATCH] base/init.sh: don't mount /run with noexec, if the initramfs
lives there
If the initramfs was built with prefix=/run/... /run can't be mounted
with noexec, otherwise no binary can be run.
Guard against it by looking where /bin/sh is really located.
---
modules.d/99base/init.sh | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index bd7ef70..a563393 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -64,7 +64,12 @@ fi
if ! ismounted /run; then
mkdir -m 0755 /newrun
- mount -t tmpfs -o mode=0755,noexec,nosuid,nodev,strictatime tmpfs /newrun >/dev/null
+ if ! str_starts "$(readlink -f /bin/sh)" "/run/"; then
+ mount -t tmpfs -o mode=0755,noexec,nosuid,nodev,strictatime tmpfs /newrun >/dev/null
+ else
+ # the initramfs binaries are located in /run, so don't mount it with noexec
+ mount -t tmpfs -o mode=0755,nosuid,nodev,strictatime tmpfs /newrun >/dev/null
+ fi
cp -a /run/* /newrun >/dev/null 2>&1
mount --move /newrun /run
rm -fr -- /newrun

View File

@ -1,24 +0,0 @@
From 2db14045c143e7b0709bed78483a208d2df69ab3 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 15 Apr 2016 10:27:48 +0200
Subject: [PATCH] kate config
---
.kateproject | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.kateproject b/.kateproject
index 7a84755..0a0d5da 100644
--- a/.kateproject
+++ b/.kateproject
@@ -1,8 +1,8 @@
{
- "name": "Kate"
+ "name": "Dracut"
, "files": [ { "git": 1 } ]
, "build": {
- "directory": "build"
+ "directory": "./"
, "build": "make -j $(getconf _NPROCESSORS_ONLN) all"
, "clean": "make clean"
}

View File

@ -1,24 +0,0 @@
From f3f019d9471bfc93ce8979c6cdcc0de81d0941e2 Mon Sep 17 00:00:00 2001
From: Guido Trentalancia <guido@trentalancia.net>
Date: Fri, 15 Apr 2016 10:38:04 +0200
Subject: [PATCH] 95resume: avoid possible symbolic link creation error on
bootup
Avoid symbolic link creation error.
---
modules.d/95resume/parse-resume.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/95resume/parse-resume.sh b/modules.d/95resume/parse-resume.sh
index 3b97e51..a3beb95 100755
--- a/modules.d/95resume/parse-resume.sh
+++ b/modules.d/95resume/parse-resume.sh
@@ -67,7 +67,7 @@ if ! getarg noresume; then
printf -- '%s\n' ' RUN+="/sbin/initqueue --finished --unique --name 00resume echo %M:%m > /sys/power/resume"'
} >> /etc/udev/rules.d/99-resume.rules
- printf '[ -e "%s" ] && { ln -s "%s" /dev/resume 2> /dev/null; rm -f -- "$job" "%s/initqueue/timeout/resume.sh"; }\n' \
+ printf '[ -e "%s" ] && { ln -fs "%s" /dev/resume 2> /dev/null; rm -f -- "$job" "%s/initqueue/timeout/resume.sh"; }\n' \
"$resume" "$resume" "$hookdir" >> $hookdir/initqueue/settled/resume.sh
{

View File

@ -1,124 +0,0 @@
From 74e2d1e69f5527ab31b01fc19f67143d1f091980 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 15 Apr 2016 11:27:20 +0200
Subject: [PATCH] watchdog/module-setup.sh: rewrite
- use local variables with _
- use associative array for the kernel modules
- install emergency hook even in the systemd case
- follow device path until /sys is reached
- set kernel version for modprobe checking
---
modules.d/04watchdog/module-setup.sh | 92 ++++++++++++++++++++----------------
1 file changed, 51 insertions(+), 41 deletions(-)
diff --git a/modules.d/04watchdog/module-setup.sh b/modules.d/04watchdog/module-setup.sh
index c9da148..04686f6 100755
--- a/modules.d/04watchdog/module-setup.sh
+++ b/modules.d/04watchdog/module-setup.sh
@@ -14,54 +14,64 @@ depends() {
install() {
# Do not add watchdog hooks if systemd module is included
# In that case, systemd will manage watchdog kick
- if dracut_module_included "systemd"; then
- return
+ if ! dracut_module_included "systemd"; then
+ inst_hook cmdline 00 "$moddir/watchdog.sh"
+ inst_hook cmdline 50 "$moddir/watchdog.sh"
+ inst_hook pre-trigger 00 "$moddir/watchdog.sh"
+ inst_hook initqueue 00 "$moddir/watchdog.sh"
+ inst_hook mount 00 "$moddir/watchdog.sh"
+ inst_hook mount 50 "$moddir/watchdog.sh"
+ inst_hook mount 99 "$moddir/watchdog.sh"
+ inst_hook pre-pivot 00 "$moddir/watchdog.sh"
+ inst_hook pre-pivot 99 "$moddir/watchdog.sh"
+ inst_hook cleanup 00 "$moddir/watchdog.sh"
+ inst_hook cleanup 99 "$moddir/watchdog.sh"
fi
- inst_hook cmdline 00 "$moddir/watchdog.sh"
- inst_hook cmdline 50 "$moddir/watchdog.sh"
- inst_hook pre-trigger 00 "$moddir/watchdog.sh"
- inst_hook initqueue 00 "$moddir/watchdog.sh"
- inst_hook mount 00 "$moddir/watchdog.sh"
- inst_hook mount 50 "$moddir/watchdog.sh"
- inst_hook mount 99 "$moddir/watchdog.sh"
- inst_hook pre-pivot 00 "$moddir/watchdog.sh"
- inst_hook pre-pivot 99 "$moddir/watchdog.sh"
- inst_hook cleanup 00 "$moddir/watchdog.sh"
- inst_hook cleanup 99 "$moddir/watchdog.sh"
inst_hook emergency 02 "$moddir/watchdog-stop.sh"
inst_multiple -o wdctl
}
installkernel() {
+ local -A _drivers
+ local _alldrivers _active _wdtdrv _wdtppath _dir
[[ -d /sys/class/watchdog/ ]] || return
- wdtcmdline=""
- for dir in /sys/class/watchdog/*; do
- [[ -d "$dir" ]] || continue
- [[ -f "$dir/state" ]] || continue
- active=$(< "$dir/state")
- ! [[ $hostonly ]] || [[ "$active" = "active" ]] || continue
- # device/modalias will return driver of this device
- wdtdrv=$(< "$dir/device/modalias")
- # There can be more than one module represented by same
- # modalias. Currently load all of them.
- # TODO: Need to find a way to avoid any unwanted module
- # represented by modalias
- wdtdrv=$(modprobe -R $wdtdrv)
- instmods $wdtdrv
- wdtcmdline="$wdtcmdline$(echo $wdtdrv | tr " " ","),"
- # however in some cases, we also need to check that if there is
- # a specific driver for the parent bus/device. In such cases
- # we also need to enable driver for parent bus/device.
- wdtppath=$(readlink -f "$dir/device/..")
- while [ -f "$wdtppath/modalias" ]
- do
- wdtpdrv=$(< "$wdtppath/modalias")
- wdtpdrv=$(modprobe -R $wdtpdrv)
- instmods $wdtpdrv
- wdtcmdline="$wdtcmdline$(echo $wdtpdrv | tr " " ","),"
- wdtppath=$(readlink -f "$wdtppath/..")
- done
+ for _dir in /sys/class/watchdog/*; do
+ [[ -d "$_dir" ]] || continue
+ [[ -f "$_dir/state" ]] || continue
+ _active=$(< "$_dir/state")
+ ! [[ $hostonly ]] || [[ "$_active" = "active" ]] || continue
+ # device/modalias will return driver of this device
+ _wdtdrv=$(< "$_dir/device/modalias")
+ # There can be more than one module represented by same
+ # modalias. Currently load all of them.
+ # TODO: Need to find a way to avoid any unwanted module
+ # represented by modalias
+ _wdtdrv=$(modprobe --set-version "$kernel" -R $_wdtdrv 2>/dev/null)
+ if [[ $_wdtdrv ]]; then
+ instmods $_wdtdrv
+ for i in $_wdtdrv; do
+ _drivers[$i]=1
+ done
+ fi
+ # however in some cases, we also need to check that if there is
+ # a specific driver for the parent bus/device. In such cases
+ # we also need to enable driver for parent bus/device.
+ _wdtppath=$(readlink -f "$_dir/device/..")
+ while [[ -d "$_wdtppath" ]] && [[ "$_wdtppath" != "/sys" ]]; do
+ _wdtppath=$(readlink -f "$_wdtppath/..")
+ [[ -f "$_wdtppath/modalias" ]] || continue
+
+ _wdtdrv=$(< "$_wdtppath/modalias")
+ _wdtdrv=$(modprobe --set-version "$kernel" -R $_wdtdrv 2>/dev/null)
+ if [[ $_wdtdrv ]]; then
+ instmods $_wdtdrv
+ for i in $_wdtdrv; do
+ _drivers[$i]=1
+ done
+ fi
+ done
done
# ensure that watchdog module is loaded as early as possible
- [[ $wdtcmdline = "" ]] || echo "rd.driver.pre=$wdtcmdline" > ${initdir}/etc/cmdline.d/00-watchdog.conf
+ _alldrivers="${!_drivers[*]}"
+ [[ $_alldrivers ]] && echo "rd.driver.pre=${_alldrivers// /,}" > ${initdir}/etc/cmdline.d/00-watchdog.conf
}

View File

@ -1,22 +0,0 @@
From 9d74747f926d038f2e149d70a9c8f955861ab354 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 15 Apr 2016 12:03:03 +0200
Subject: [PATCH] drop to shell on die() if rd.shell=1 is set explicitly
---
modules.d/99base/dracut-lib.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
index 0a0b1b9..48fc83d 100755
--- a/modules.d/99base/dracut-lib.sh
+++ b/modules.d/99base/dracut-lib.sh
@@ -457,7 +457,7 @@ die() {
> /run/initramfs/.die
- getargbool 0 "rd.debug=" && emergency_shell
+ getargbool 0 "rd.shell=" && emergency_shell
if [ -n "$DRACUT_SYSTEMD" ]; then
systemctl --no-block --force halt

View File

@ -1,45 +0,0 @@
From fa295f0bcde8c8d1205cf53ebe6e5dc46629200a Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 15 Apr 2016 15:25:27 +0200
Subject: [PATCH] dracut_install: honor --silent flag
---
dracut-init.sh | 8 +++++++-
modules.d/50drm/module-setup.sh | 2 +-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/dracut-init.sh b/dracut-init.sh
index 8d1d9fa..1056a31 100644
--- a/dracut-init.sh
+++ b/dracut-init.sh
@@ -219,10 +219,16 @@ dracut_install() {
}
dracut_instmods() {
+ local _silent=0;
+ local i;
[[ $no_kernel = yes ]] && return
+ for i in "$@"; do
+ [[ $i == "--silent" ]] && silent=1
+ done
+
$DRACUT_INSTALL \
${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${hostonly:+-H} ${omit_drivers:+-N "$omit_drivers"} ${srcmods:+--kerneldir "$srcmods"} -m "$@"
- (($? != 0)) && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${hostonly:+-H} ${omit_drivers:+-N "$omit_drivers"} ${srcmods:+--kerneldir "$srcmods"} -m "$@" || :
+ (($? != 0)) && (($silent == 0)) && derror FAILED: $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${hostonly:+-H} ${omit_drivers:+-N "$omit_drivers"} ${srcmods:+--kerneldir "$srcmods"} -m "$@" || :
}
inst_library() {
diff --git a/modules.d/50drm/module-setup.sh b/modules.d/50drm/module-setup.sh
index 661dde9..6106d8c 100755
--- a/modules.d/50drm/module-setup.sh
+++ b/modules.d/50drm/module-setup.sh
@@ -34,7 +34,7 @@ installkernel() {
if [[ $hostonly ]]; then
for i in /sys/bus/{pci/devices,soc/devices/soc?}/*/modalias; do
[[ -e $i ]] || continue
- if hostonly="" dracut_instmods -s "drm_crtc_init" -S "iw_handler_get_spy" $(<$i) 2>/dev/null; then
+ if hostonly="" dracut_instmods --silent -s "drm_crtc_init" -S "iw_handler_get_spy" $(<$i); then
if strstr "$(modinfo -F filename $(<$i) 2>/dev/null)" radeon.ko; then
hostonly='' instmods amdkfd
fi

View File

@ -1,418 +0,0 @@
From eab32bda801e539c276f1b18e7c2b691eeab3d14 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 15 Apr 2016 15:29:52 +0200
Subject: [PATCH] dracut-install: make use of _cleanup_ macros and improve
hostonly check
If a module is renamed or another module takes care of the old one,
all of the alias strings have to be checked against the current set of
loaded modules.
This is still incomplete, because to be absolutely correct, all the
/sys/*...*/modalias files would have to be checked, if they match the
modules alias strings.
---
install/dracut-install.c | 180 ++++++++++++++++++++++++++++++++++-------------
1 file changed, 131 insertions(+), 49 deletions(-)
diff --git a/install/dracut-install.c b/install/dracut-install.c
index bef08da..9a0d53f 100644
--- a/install/dracut-install.c
+++ b/install/dracut-install.c
@@ -66,6 +66,7 @@ static char *logfile = NULL;
FILE *logfile_f = NULL;
static Hashmap *items = NULL;
static Hashmap *items_failed = NULL;
+static Hashmap *modules_loaded = NULL;
static regex_t mod_filter_path;
static regex_t mod_filter_nopath;
static regex_t mod_filter_symbol;
@@ -79,6 +80,39 @@ static bool arg_mod_filter_noname = false;
static int dracut_install(const char *src, const char *dst, bool isdir, bool resolvedeps, bool hashdst);
+
+
+static inline void kmod_module_unref_listp(struct kmod_list **p) {
+ if (*p)
+ kmod_module_unref_list(*p);
+}
+#define _cleanup_kmod_module_unref_list_ _cleanup_(kmod_module_unref_listp)
+
+static inline void kmod_module_info_free_listp(struct kmod_list **p) {
+ if (*p)
+ kmod_module_info_free_list(*p);
+}
+#define _cleanup_kmod_module_info_free_list_ _cleanup_(kmod_module_info_free_listp)
+
+static inline void kmod_unrefp(struct kmod_ctx **p) {
+ kmod_unref(*p);
+}
+#define _cleanup_kmod_unref_ _cleanup_(kmod_unrefp)
+
+static inline void kmod_module_dependency_symbols_free_listp(struct kmod_list **p) {
+ if (*p)
+ kmod_module_dependency_symbols_free_list(*p);
+}
+#define _cleanup_kmod_module_dependency_symbols_free_list_ _cleanup_(kmod_module_dependency_symbols_free_listp)
+
+static inline void fts_closep(FTS **p) {
+ if (*p)
+ fts_close(*p);
+}
+#define _cleanup_fts_close_ _cleanup_(fts_closep)
+
+
+
static size_t dir_len(char const *file)
{
size_t length;
@@ -1058,7 +1092,8 @@ static int install_all(int argc, char **argv)
static int install_firmware(struct kmod_module *mod)
{
- struct kmod_list *l, *list = NULL;
+ struct kmod_list *l;
+ _cleanup_kmod_module_info_free_list_ struct kmod_list *list = NULL;
int ret;
char **q;
@@ -1072,7 +1107,6 @@ static int install_firmware(struct kmod_module *mod)
kmod_list_foreach(l, list) {
const char *key = kmod_module_info_get_key(l);
const char *value = NULL;
- char *fwpath = NULL;
if (!streq("firmware", key))
continue;
@@ -1081,6 +1115,7 @@ static int install_firmware(struct kmod_module *mod)
log_debug("Firmware %s", value);
ret = -1;
STRV_FOREACH(q, firmwaredirs) {
+ _cleanup_free_ char *fwpath = NULL;
struct stat sb;
int r;
@@ -1092,8 +1127,6 @@ static int install_firmware(struct kmod_module *mod)
if (stat(fwpath, &sb) != 0) {
log_debug("stat(%s) != 0", fwpath);
- free(fwpath);
- fwpath = NULL;
continue;
}
@@ -1111,7 +1144,8 @@ static int install_firmware(struct kmod_module *mod)
static bool check_module_symbols(struct kmod_module *mod)
{
- struct kmod_list *itr, *deplist = NULL;
+ struct kmod_list *itr;
+ _cleanup_kmod_module_dependency_symbols_free_list_ struct kmod_list *deplist = NULL;
if (!arg_mod_filter_symbol && !arg_mod_filter_nosymbol)
return true;
@@ -1128,7 +1162,6 @@ static bool check_module_symbols(struct kmod_module *mod)
const char *symbol = kmod_module_symbol_get_symbol(itr);
// log_debug("Checking symbol %s", symbol);
if (regexec(&mod_filter_nosymbol, symbol, 0, NULL, 0) == 0) {
- kmod_module_dependency_symbols_free_list(deplist);
log_debug("Module %s: symbol %s matched exclusion filter", kmod_module_get_name(mod), symbol);
return false;
}
@@ -1140,20 +1173,16 @@ static bool check_module_symbols(struct kmod_module *mod)
const char *symbol = kmod_module_dependency_symbol_get_symbol(itr);
// log_debug("Checking symbol %s", symbol);
if (regexec(&mod_filter_symbol, symbol, 0, NULL, 0) == 0) {
- kmod_module_dependency_symbols_free_list(deplist);
log_debug("Module %s: symbol %s matched inclusion filter", kmod_module_get_name(mod), symbol);
return true;
}
}
- kmod_module_dependency_symbols_free_list(deplist);
return false;
}
- kmod_module_dependency_symbols_free_list(deplist);
return true;
}
-
static bool check_module_path(const char *path)
{
if (arg_mod_filter_nopath && (regexec(&mod_filter_nopath, path, 0, NULL, 0) == 0)) {
@@ -1168,14 +1197,23 @@ static bool check_module_path(const char *path)
return true;
}
+static bool check_module_hostonly(struct kmod_module *mod)
+{
+ const char *name = kmod_module_get_name(mod);
+
+ if (check_hashmap(modules_loaded, name))
+ return true;
+
+ return false;
+}
+
static int install_module(struct kmod_module *mod)
{
int ret = 0;
- int state;
- struct kmod_list *itr, *modlist = NULL;
+ struct kmod_list *itr;
+ _cleanup_kmod_module_unref_list_ struct kmod_list *modlist = NULL;
const char *path = NULL;
const char *name = NULL;
- state = kmod_module_get_initstate(mod);
name = kmod_module_get_name(mod);
if (arg_mod_filter_noname && (regexec(&mod_filter_noname, name, 0, NULL, 0) == 0)) {
@@ -1183,7 +1221,7 @@ static int install_module(struct kmod_module *mod)
return 0;
}
- if (arg_hostonly && (state != KMOD_MODULE_BUILTIN) && (state != KMOD_MODULE_LIVE)) {
+ if (arg_hostonly && ! check_module_hostonly(mod)) {
log_debug("dracut_install '%s' not hostonly", name);
return 0;
}
@@ -1232,15 +1270,17 @@ static int install_module(struct kmod_module *mod)
}
kmod_module_unref(mod);
}
- kmod_module_unref_list(modlist);
return ret;
}
static int install_modules(int argc, char **argv)
{
- struct kmod_ctx *ctx = NULL;
- struct kmod_list *itr, *modlist = NULL;
+ _cleanup_kmod_unref_ struct kmod_ctx *ctx = NULL;
+ struct kmod_list *loaded_list = NULL;
+ struct kmod_list *itr, *l;
+ int err;
+
struct kmod_module *mod = NULL, *mod_o = NULL;
const char *modname = NULL;
@@ -1248,12 +1288,48 @@ static int install_modules(int argc, char **argv)
ctx = kmod_new(kerneldir, NULL);
+ err = kmod_module_new_from_loaded(ctx, &loaded_list);
+ if (err < 0) {
+ errno = err;
+ log_error("Could not get list of loaded modules: %m");
+ return err;
+ }
+
+ kmod_list_foreach(itr, loaded_list) {
+ _cleanup_kmod_module_unref_list_ struct kmod_list *modlist = NULL;
+
+ struct kmod_module *mod = kmod_module_get_module(itr);
+ char *name = strdup(kmod_module_get_name(mod));
+ hashmap_put(modules_loaded, name, name);
+ kmod_module_unref(mod);
+
+ /* also put the modules from the new kernel in the hashmap,
+ * which resolve the name as an alias, in case a kernel module is
+ * renamed.
+ */
+ err = kmod_module_new_from_lookup(ctx, name, &modlist);
+ if (err < 0)
+ continue;
+ if (!modlist)
+ continue;
+ kmod_list_foreach(l, modlist) {
+ mod = kmod_module_get_module(l);
+ char *name = strdup(kmod_module_get_name(mod));
+ hashmap_put(modules_loaded, name, name);
+ kmod_module_unref(mod);
+ }
+ }
+ kmod_module_unref_list(loaded_list);
+
for (i = 0; i < argc; i++) {
int r = 0;
int ret = -1;
+
log_debug("Handle module '%s'", argv[i]);
if (argv[i][0] == '/') {
+ _cleanup_kmod_module_unref_list_ struct kmod_list *modlist = NULL;
+
r = kmod_module_new_from_path(ctx, argv[i], &mod_o);
if (r < 0) {
log_debug("Failed to lookup modules path '%s': %m", argv[i]);
@@ -1263,6 +1339,7 @@ static int install_modules(int argc, char **argv)
}
/* Check, if we have to load another module with that name instead */
modname = kmod_module_get_name(mod_o);
+
if (!modname) {
if (!arg_optional) {
if (!arg_silent)
@@ -1272,8 +1349,11 @@ static int install_modules(int argc, char **argv)
log_info("Failed to get name for module '%s'", argv[i]);
continue;
}
+
r = kmod_module_new_from_lookup(ctx, modname, &modlist);
kmod_module_unref(mod_o);
+ mod_o = NULL;
+
if (r < 0) {
if (!arg_optional) {
if (!arg_silent)
@@ -1303,37 +1383,38 @@ static int install_modules(int argc, char **argv)
};
ret = ( ret == 0 ? 0 : r );
}
- kmod_module_unref_list(modlist);
- modlist = 0;
} else if (argv[i][0] == '=') {
- char *path1, *path2, *path3;
- FTS *fts;
+ _cleanup_free_ char *path1 = NULL, *path2 = NULL, *path3 = NULL;
+ _cleanup_fts_close_ FTS *fts = NULL;
+
log_debug("Handling =%s", &argv[i][1]);
/* FIXME and add more paths*/
- {
- int r;
- r = asprintf(&path2, "%s/kernel/%s", kerneldir, &argv[i][1]);
- if (r < 0) {
- log_error("Out of memory!");
- exit(EXIT_FAILURE);
- }
+ r = asprintf(&path2, "%s/kernel/%s", kerneldir, &argv[i][1]);
+ if (r < 0) {
+ log_error("Out of memory!");
+ exit(EXIT_FAILURE);
+ }
- r = asprintf(&path1, "%s/extra/%s", kerneldir, &argv[i][1]);
- if (r < 0) {
- log_error("Out of memory!");
- exit(EXIT_FAILURE);
- }
+ r = asprintf(&path1, "%s/extra/%s", kerneldir, &argv[i][1]);
+ if (r < 0) {
+ log_error("Out of memory!");
+ exit(EXIT_FAILURE);
+ }
- r = asprintf(&path3, "%s/updates/%s", kerneldir, &argv[i][1]);
- if (r < 0) {
- log_error("Out of memory!");
- exit(EXIT_FAILURE);
- }
+ r = asprintf(&path3, "%s/updates/%s", kerneldir, &argv[i][1]);
+ if (r < 0) {
+ log_error("Out of memory!");
+ exit(EXIT_FAILURE);
+ }
+ {
char *paths[] = { path1, path2, path3, NULL };
fts = fts_open(paths, FTS_COMFOLLOW|FTS_NOCHDIR|FTS_NOSTAT|FTS_LOGICAL, NULL);
}
+
for (FTSENT *ftsent = fts_read(fts); ftsent != NULL; ftsent = fts_read(fts)) {
+ _cleanup_kmod_module_unref_list_ struct kmod_list *modlist = NULL;
+
if((ftsent->fts_info == FTS_D) && !check_module_path(ftsent->fts_accpath)) {
fts_set(fts, ftsent, FTS_SKIP);
log_debug("Skipping %s", ftsent->fts_accpath);
@@ -1356,6 +1437,7 @@ static int install_modules(int argc, char **argv)
/* Check, if we have to load another module with that name instead */
modname = kmod_module_get_name(mod_o);
+
if (!modname) {
log_error("Failed to get name for module '%s'", ftsent->fts_accpath);
if (!arg_optional) {
@@ -1365,18 +1447,19 @@ static int install_modules(int argc, char **argv)
}
r = kmod_module_new_from_lookup(ctx, modname, &modlist);
kmod_module_unref(mod_o);
+ mod_o = NULL;
+
if (r < 0) {
log_error("Failed to lookup alias '%s': %m", modname);
- kmod_module_unref_list(modlist);
if (!arg_optional) {
return -ENOENT;
}
continue;
}
+
if (!modlist) {
log_error("Failed to find module '%s' %s", modname,
ftsent->fts_accpath);
- kmod_module_unref_list(modlist);
if (!arg_optional) {
return -ENOENT;
}
@@ -1393,18 +1476,14 @@ static int install_modules(int argc, char **argv)
};
ret = ( ret == 0 ? 0 : r );
}
- kmod_module_unref_list(modlist);
- modlist = 0;
}
if (errno) {
log_error("FTS ERROR: %m");
}
- fts_close(fts);
- free(path1); path1 = NULL;
- free(path2); path2 = NULL;
- free(path3); path3 = NULL;
} else {
+ _cleanup_kmod_module_unref_list_ struct kmod_list *modlist = NULL;
char *modname = argv[i];
+
if (endswith(modname, ".ko")) {
int len = strlen(modname);
modname[len-3]=0;
@@ -1443,8 +1522,6 @@ static int install_modules(int argc, char **argv)
};
ret = ( ret == 0 ? 0 : r );
}
- kmod_module_unref_list(modlist);
- modlist = 0;
}
if ((ret != 0) && (!arg_optional)) {
@@ -1513,8 +1590,9 @@ int main(int argc, char **argv)
items = hashmap_new(string_hash_func, string_compare_func);
items_failed = hashmap_new(string_hash_func, string_compare_func);
+ modules_loaded = hashmap_new(string_hash_func, string_compare_func);
- if (!items || !items_failed) {
+ if (!items || !items_failed || !modules_loaded) {
log_error("Out of memory");
r = EXIT_FAILURE;
goto finish;
@@ -1570,6 +1648,9 @@ int main(int argc, char **argv)
if (logfile_f)
fclose(logfile_f);
+ while ((i = hashmap_steal_first(modules_loaded)))
+ item_free(i);
+
while ((i = hashmap_steal_first(items)))
item_free(i);
@@ -1578,6 +1659,7 @@ int main(int argc, char **argv)
hashmap_free(items);
hashmap_free(items_failed);
+ hashmap_free(modules_loaded);
free(destrootdir);
strv_free(firmwaredirs);

View File

@ -1,148 +0,0 @@
From 3f60444ec1bff8a57a2cf4ada238e782928890eb Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 15 Apr 2016 16:25:59 +0200
Subject: [PATCH] removed obsolete kernel module functions and host_modules
variable
module_is_host_only()
find_kernel_modules_by_path()
find_kernel_modules()
---
dracut-init.sh | 54 -----------------------------------
dracut.sh | 30 +------------------
modules.d/90multipath/module-setup.sh | 2 +-
3 files changed, 2 insertions(+), 84 deletions(-)
diff --git a/dracut-init.sh b/dracut-init.sh
index 1056a31..a195c32 100644
--- a/dracut-init.sh
+++ b/dracut-init.sh
@@ -943,60 +943,6 @@ dracut_kernel_post() {
}
-[[ "$kernel_current" ]] || export kernel_current=$(uname -r)
-
-module_is_host_only() {
- local _mod=$1
- local _modenc a i _k _s _v _aliases
- _mod=${_mod##*/}
- _mod=${_mod%.ko*}
- _modenc=${_mod//-/_}
-
- [[ " $add_drivers " == *\ ${_mod}\ * ]] && return 0
-
- # check if module is loaded
- [[ ${host_modules["$_modenc"]} ]] && return 0
-
- [[ "$kernel_current" ]] || export kernel_current=$(uname -r)
-
- if [[ "$kernel_current" != "$kernel" ]]; then
- # check if module is loadable on the current kernel
- # this covers the case, where a new module is introduced
- # or a module was renamed
- # or a module changed from builtin to a module
-
- if [[ -d /lib/modules/$kernel_current ]]; then
- # if the modinfo can be parsed, but the module
- # is not loaded, then we can safely return 1
- modinfo -F filename "$_mod" &>/dev/null && return 1
- fi
-
- # just install the module, better safe than sorry
- return 0
- fi
-
- return 1
-}
-
-find_kernel_modules_by_path () {
- local _OLDIFS
-
- [[ -f "$srcmods/modules.dep" ]] || return 0
-
- _OLDIFS=$IFS
- IFS=:
- while read a rest || [ -n "$a" ]; do
- [[ $a = */$1/* ]] || [[ $a = updates/* ]] || continue
- printf "%s\n" "$srcmods/$a"
- done < "$srcmods/modules.dep"
- IFS=$_OLDIFS
- return 0
-}
-
-find_kernel_modules () {
- find_kernel_modules_by_path drivers
-}
-
instmods() {
# instmods [-c [-s]] <kernel module> [<kernel module> ... ]
# instmods [-c [-s]] <kernel subsystem>
diff --git a/dracut.sh b/dracut.sh
index aaeb0dc..8232fa4 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -1101,8 +1101,6 @@ if (( ${#add_device_l[@]} )); then
push_host_devs "${add_device_l[@]}"
fi
-declare -A host_modules
-
if [[ $hostonly ]]; then
# in hostonly mode, determine all devices, which have to be accessed
# and examine them for filesystem types
@@ -1190,32 +1188,6 @@ if [[ $hostonly ]]; then
fi
done < /etc/fstab
fi
-
- # check /proc/modules
- while read m rest || [ -n "$m" ]; do
- host_modules["$m"]=1
- done </proc/modules
-
- # Explanation of the following section:
- # Since kernel 4.4, mpt3sas is a complete replacement for mpt2sas.
- # mpt3sas has an alias to mpt2sas now, but since mpt3sas isn't loaded
- # when generating the initrd from kernel < 4.4, it's not included.
- # The other direction has the same issue:
- # When generating the initrd from kernel >= 4.4, mpt2sas isn't loaded,
- # so it's not included.
- # Both ways result in an unbootable initrd.
-
- # also add aliases of loaded modules
- for mod in "${!host_modules[@]}"; do
- aliases=$(modinfo -F alias "$mod" 2>&1)
- for alias in $aliases; do
- host_modules["$alias"]=1
- done
- # mod might be an alias in the target kernel, find the real module
- mod_filename=$(modinfo -k "$kernel" "$mod" -F filename)
- [ $? -ne 0 ] && continue
- host_modules["$(basename -s .ko "$mod_filename")"]=1
- done
fi
unset m
@@ -1302,7 +1274,7 @@ export initdir dracutbasedir \
debug host_fs_types host_devs swap_devs sshkey add_fstab \
DRACUT_VERSION udevdir prefix filesystems drivers \
systemdutildir systemdsystemunitdir systemdsystemconfdir \
- host_modules hostonly_cmdline loginstall \
+ hostonly_cmdline loginstall \
tmpfilesdir
mods_to_load=""
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
index 0af777d..1676798 100755
--- a/modules.d/90multipath/module-setup.sh
+++ b/modules.d/90multipath/module-setup.sh
@@ -41,7 +41,7 @@ depends() {
# called by dracut
cmdline() {
for m in scsi_dh_alua scsi_dh_emc scsi_dh_rdac ; do
- if module_is_host_only $m ; then
+ if grep -m 1 -q "$m" /proc/modules ; then
printf 'rd.driver.pre=%s ' "$m"
fi
done

View File

@ -1,21 +0,0 @@
From fe83231e30d5bc94e090d02e65f0e3cbef20c6ac Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 18 Apr 2016 15:49:06 +0200
Subject: [PATCH] watchdog: clean return of installkernel()
return 0, otherwise if _alldrivers is empty, the return code is fail
---
modules.d/04watchdog/module-setup.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/modules.d/04watchdog/module-setup.sh b/modules.d/04watchdog/module-setup.sh
index 04686f6..7b2685d 100755
--- a/modules.d/04watchdog/module-setup.sh
+++ b/modules.d/04watchdog/module-setup.sh
@@ -74,4 +74,6 @@ installkernel() {
# ensure that watchdog module is loaded as early as possible
_alldrivers="${!_drivers[*]}"
[[ $_alldrivers ]] && echo "rd.driver.pre=${_alldrivers// /,}" > ${initdir}/etc/cmdline.d/00-watchdog.conf
+
+ return 0
}

View File

@ -1,24 +0,0 @@
From bf75218e45180b957192f08c3fa5d5b147b66c31 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 18 Apr 2016 15:50:42 +0200
Subject: [PATCH] watchdog: start traversing the device tree from the right
directory
start with the device subtree, not with the parent of it
---
modules.d/04watchdog/module-setup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/04watchdog/module-setup.sh b/modules.d/04watchdog/module-setup.sh
index 7b2685d..7566d65 100755
--- a/modules.d/04watchdog/module-setup.sh
+++ b/modules.d/04watchdog/module-setup.sh
@@ -56,7 +56,7 @@ installkernel() {
# however in some cases, we also need to check that if there is
# a specific driver for the parent bus/device. In such cases
# we also need to enable driver for parent bus/device.
- _wdtppath=$(readlink -f "$_dir/device/..")
+ _wdtppath=$(readlink -f "$_dir/device")
while [[ -d "$_wdtppath" ]] && [[ "$_wdtppath" != "/sys" ]]; do
_wdtppath=$(readlink -f "$_wdtppath/..")
[[ -f "$_wdtppath/modalias" ]] || continue

View File

@ -1,32 +0,0 @@
From 5f91ed0b5345e132d9fe1fa815bfd968778df5ea Mon Sep 17 00:00:00 2001
From: Guido Trentalancia <guido@trentalancia.net>
Date: Fri, 15 Apr 2016 13:06:45 +0200
Subject: [PATCH] dracut: 10i18n: support default loadkeys/setfont data paths
using symbolic links
Avoid keymap/font not found error when loadkeys/setfont
are compiled with the default data directory path.
Signed-off-by: Guido Trentalancia <guido@trentalancia.net>
---
modules.d/10i18n/module-setup.sh | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh
index 9439875..9618aa7 100755
--- a/modules.d/10i18n/module-setup.sh
+++ b/modules.d/10i18n/module-setup.sh
@@ -100,6 +100,13 @@ install() {
inst_rules ${moddir}/10-console.rules
inst_hook cmdline 20 "${moddir}/parse-i18n.sh"
fi
+
+ if [[ ${kbddir} != "/usr/share" ]]; then
+ inst_dir /usr/share
+ for _src in $(eval echo {${KBDSUBDIRS}}); do
+ [ ! -e "${initdir}/usr/share/${_src}" ] && ln -s "${kbddir}/${_src}" "${initdir}/usr/share/${_src}"
+ done
+ fi
}
install_all_kbd() {

View File

@ -1,86 +0,0 @@
From cf376023e6d0d4abd9816fa954bb917fc2557713 Mon Sep 17 00:00:00 2001
From: Xunlei Pang <xlpang@redhat.com>
Date: Tue, 26 Apr 2016 18:05:10 +0800
Subject: [PATCH] network: dhcp before parsing specified dns through cmdline
I met a problem when passing kdump dns to dracut via "nameserver=x.x.x.x",
the dns I provided didn't appear in the "/etc/resolv.conf".
After some debugging, found that when setup dhcp DNS, in setup_interface()
and setup_interface6(), it has:
echo "search $search $domain" > /tmp/net.$netif.resolv.conf
So if "$search $domain" isn't NULL(this is ture in my kdump environment),
the dns contents(that is, dns1, dns2, nameserver) in "ifup" before dhcp
will be discarded.
This patch addresses it by handling dhcp first. In fact this is also the
way the NetworkManager in 1st kernel works.
Signed-off-by: Xunlei Pang <xlpang@redhat.com>
---
modules.d/40network/ifup.sh | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
index 1185523..41282e7 100755
--- a/modules.d/40network/ifup.sh
+++ b/modules.d/40network/ifup.sh
@@ -321,16 +321,16 @@ fi
ip=$(getarg ip)
if [ -z "$NO_AUTO_DHCP" ] && [ -z "$ip" ]; then
- for s in $(getargs nameserver); do
- [ -n "$s" ] || continue
- echo nameserver $s >> /tmp/net.$netif.resolv.conf
- done
-
if [ "$netroot" = "dhcp6" ]; then
do_dhcp -6
else
do_dhcp -4
fi
+
+ for s in $(getargs nameserver); do
+ [ -n "$s" ] || continue
+ echo nameserver $s >> /tmp/net.$netif.resolv.conf
+ done
fi
@@ -355,17 +355,6 @@ for p in $(getargs ip=); do
# If this option isn't directed at our interface, skip it
[ -n "$dev" ] && [ "$dev" != "$netif" ] && continue
- # setup nameserver
- for s in "$dns1" "$dns2" $(getargs nameserver); do
- [ -n "$s" ] || continue
- echo nameserver $s >> /tmp/net.$netif.resolv.conf
- done
-
- # Store config for later use
- for i in ip srv gw mask hostname macaddr mtu dns1 dns2; do
- eval '[ "$'$i'" ] && echo '$i'="$'$i'"'
- done > /tmp/net.$netif.override
-
for autoopt in $(str_replace "$autoconf" "," " "); do
case $autoopt in
dhcp|on|any)
@@ -381,6 +370,17 @@ for p in $(getargs ip=); do
done
ret=$?
+ # setup nameserver
+ for s in "$dns1" "$dns2" $(getargs nameserver); do
+ [ -n "$s" ] || continue
+ echo nameserver $s >> /tmp/net.$netif.resolv.conf
+ done
+
+ # Store config for later use
+ for i in ip srv gw mask hostname macaddr mtu dns1 dns2; do
+ eval '[ "$'$i'" ] && echo '$i'="$'$i'"'
+ done > /tmp/net.$netif.override
+
if [ $ret -eq 0 ]; then
> /tmp/net.${netif}.up

View File

@ -1,46 +0,0 @@
From 4fa5c235a76c085f5958002826436ed9c40e5034 Mon Sep 17 00:00:00 2001
From: Xunlei Pang <xlpang@redhat.com>
Date: Tue, 26 Apr 2016 18:05:11 +0800
Subject: [PATCH] network/net-lib.sh: delete duplicated DNS items from
"/etc/resolv.conf"
Users can pass the DNS information throught "nameserver=" cmdline,
there maybe duplicated inputs.
"/etc/resolv.conf" have some restrictions on the number of DNS items
effective, so make sure that this file contains no duplicated items.
We achieve this by simply making the file have no duplicated lines.
Signed-off-by: Xunlei Pang <xlpang@redhat.com>
---
modules.d/40network/module-setup.sh | 2 +-
modules.d/40network/net-lib.sh | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
index 4bf93cc..53b4b60 100755
--- a/modules.d/40network/module-setup.sh
+++ b/modules.d/40network/module-setup.sh
@@ -23,7 +23,7 @@ installkernel() {
# called by dracut
install() {
local _arch _i _dir
- inst_multiple ip arping dhclient sed
+ inst_multiple ip arping dhclient sed awk
inst_multiple -o ping ping6
inst_multiple -o brctl
inst_multiple -o teamd teamdctl teamnl
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index 31f1a56..005ad1b 100755
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -120,7 +120,7 @@ setup_net() {
[ -e /tmp/dhclient.$netif.dhcpopts ] && . /tmp/dhclient.$netif.dhcpopts
# set up resolv.conf
[ -e /tmp/net.$netif.resolv.conf ] && \
- cp -f /tmp/net.$netif.resolv.conf /etc/resolv.conf
+ awk '!array[$0]++' /tmp/net.$netif.resolv.conf > /etc/resolv.conf
[ -e /tmp/net.$netif.gw ] && . /tmp/net.$netif.gw
# add static route

View File

@ -1,21 +0,0 @@
From bb44294b62b9469aebaeac8533569ac24b208a45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= <glen@delfi.ee>
Date: Wed, 27 Apr 2016 13:08:42 +0300
Subject: [PATCH] ensure parent dir for /usr/lib/initrd-release exists
---
modules.d/99base/module-setup.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
index 5fbf6f7..b03772e 100755
--- a/modules.d/99base/module-setup.sh
+++ b/modules.d/99base/module-setup.sh
@@ -77,6 +77,7 @@ install() {
VERSION_ID=$DRACUT_VERSION
ANSI_COLOR="0;34"
+ [ -e "${initdir}/usr/lib" ] || mkdir -m 0755 -p ${initdir}/usr/lib
{
echo NAME=\"$NAME\"
echo VERSION=\"$VERSION\"

View File

@ -1,22 +0,0 @@
From ae753baec0ae5b3c3eeabbe4f70c54cc3c24c292 Mon Sep 17 00:00:00 2001
From: Ruben Kerkhof <ruben@rubenkerkhof.com>
Date: Fri, 29 Apr 2016 15:34:47 +0200
Subject: [PATCH] Fix small typo in dracut.cmdline(7)
---
dracut.cmdline.7.asc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
index c4c5588..bf00719 100644
--- a/dracut.cmdline.7.asc
+++ b/dracut.cmdline.7.asc
@@ -32,7 +32,7 @@ line is the value, which is honored.
Standard
~~~~~~~~
**init=**__<path to real init>__::
- specify the path to the init programm to be started after the initramfs has
+ specify the path to the init program to be started after the initramfs has
finished
**root=**__<path to blockdevice>__::

View File

@ -1,30 +0,0 @@
From 5dea430e087ec7749080547a6a6fe5b152f665ef Mon Sep 17 00:00:00 2001
From: Michael Chapman <mike@very.puzzling.org>
Date: Wed, 4 May 2016 10:49:56 +1000
Subject: [PATCH] systemd: ensure journal is volatile
If journald.conf already contains Storage=persistent, journald will
write to /var/log/journal/, which ends up at /run/initramfs/log/journal/
after switching root. We want to make sure early boot logs are written
to /run/log/journal/ so they can be flushed to /var/log/journal/ after
switching root.
---
modules.d/00systemd/module-setup.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh
index deb5e06..951a5be 100755
--- a/modules.d/00systemd/module-setup.sh
+++ b/modules.d/00systemd/module-setup.sh
@@ -210,9 +210,10 @@ install() {
done
mkdir -p "$initdir/etc/systemd"
- # turn off RateLimit for journal
+ # We must use a volatile journal, and we don't want rate-limiting
{
echo "[Journal]"
+ echo "Storage=volatile"
echo "RateLimitInterval=0"
echo "RateLimitBurst=0"
} >> "$initdir/etc/systemd/journald.conf"

View File

@ -1,43 +0,0 @@
From 699414f5a518f039fa74fd314d21994849a90625 Mon Sep 17 00:00:00 2001
From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
Date: Wed, 4 May 2016 10:18:54 +0200
Subject: [PATCH] configure: don't hardcode pkg-config
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
---
configure | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/configure b/configure
index c92cb99..2368680 100755
--- a/configure
+++ b/configure
@@ -7,6 +7,8 @@ prefix=/usr
enable_documentation=yes
+PKG_CONFIG="${PKG_CONFIG:-pkg-config}"
+
# 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.
@@ -50,7 +52,7 @@ while (($# > 0)); do
shift
done
-if ! pkg-config --exists --print-errors " libkmod >= 15 "; then
+if ! ${PKG_CONFIG} --exists --print-errors " libkmod >= 15 "; then
echo "dracut needs pkg-config and libkmod >= 15." >&2
exit 1
fi
@@ -64,8 +66,8 @@ sbindir ?= ${sbindir:-${prefix}/sbin}
mandir ?= ${mandir:-${prefix}/share/man}
enable_documentation ?= ${enable_documentation:-yes}
bindir ?= ${bindir:-${prefix}/bin}
-KMOD_CFLAGS ?= $(pkg-config --cflags " libkmod >= 15 ")
-KMOD_LIBS ?= $(pkg-config --libs " libkmod >= 15 ")
+KMOD_CFLAGS ?= $(${PKG_CONFIG} --cflags " libkmod >= 15 ")
+KMOD_LIBS ?= $(${PKG_CONFIG} --libs " libkmod >= 15 ")
EOF
{

View File

@ -1,54 +0,0 @@
From 016613c774baf3d30c6425a65ead05d8b55d6279 Mon Sep 17 00:00:00 2001
From: Alexander Kurtz <alexander@kurtz.be>
Date: Fri, 6 May 2016 17:25:37 +0200
Subject: [PATCH] dracut-systemd/dracut-cmdline.sh: Don't error out if there is
no root= argument.
Thanks to systemd's gpt-auto-generator [0] (which implements the Discoverable
Partitions Specification [1]), it is no longer necessary to always specify the
root= argument.
However, dracut would still refuse to boot if there was no root= argument (or
if it was set to the special value "gpt-auto" [2]). This commit stops dracut
from aborting the boot process in these cases and simply lets systemd do its
magic.
[0] https://github.com/systemd/systemd/blob/v229/src/gpt-auto-generator
[1] https://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/
[2] https://github.com/systemd/systemd/blob/v229/src/gpt-auto-generator/gpt-auto-generator.c#L928
---
modules.d/98dracut-systemd/dracut-cmdline.sh | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/modules.d/98dracut-systemd/dracut-cmdline.sh b/modules.d/98dracut-systemd/dracut-cmdline.sh
index a1dcf84..ccf24fb 100755
--- a/modules.d/98dracut-systemd/dracut-cmdline.sh
+++ b/modules.d/98dracut-systemd/dracut-cmdline.sh
@@ -21,7 +21,12 @@ getargbool 0 rd.udev.log-priority=debug -d rd.udev.debug -d -n -y rdudevdebug &&
source_conf /etc/conf.d
-root=$(getarg root=)
+# Get the "root=" parameter from the kernel command line, but differentiate
+# between the case where it was set to the empty string and the case where it
+# wasn't specified at all.
+if ! root="$(getarg root=)"; then
+ root='UNSET'
+fi
rflags="$(getarg rootflags=)"
getargbool 0 ro && rflags="${rflags},ro"
@@ -65,9 +70,12 @@ case "$root" in
/dev/*)
root="block:${root}"
rootok=1 ;;
+ UNSET|gpt-auto)
+ # systemd's gpt-auto-generator handles this case.
+ rootok=1 ;;
esac
-[ -z "$root" ] && die "No or empty root= argument"
+[ -z "$root" ] && die "Empty root= argument"
[ -z "$rootok" ] && die "Don't know how to handle 'root=$root'"
export root rflags fstype netroot NEWROOT

View File

@ -1,54 +0,0 @@
From 190150018798f88107fba119e92bd32e2a8d4b0b Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 2 May 2016 12:48:12 +0200
Subject: [PATCH] move ln_r() to dracut-init.sh
---
dracut-functions.sh | 12 ------------
dracut-init.sh | 13 +++++++++++++
2 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index c7ea9f5..4496bfe 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -167,18 +167,6 @@ convert_abs_rel() {
printf "%s\n" "$__newpath"
}
-if [[ "$(ln --help)" == *--relative* ]]; then
- ln_r() {
- ln -sfnr "${initdir}/$1" "${initdir}/$2"
- }
-else
- ln_r() {
- local _source=$1
- local _dest=$2
- [[ -d "${_dest%/*}" ]] && _dest=$(readlink -f "${_dest%/*}")/${_dest##*/}
- ln -sfn -- "$(convert_abs_rel "${_dest}" "${_source}")" "${initdir}/${_dest}"
- }
-fi
# get_fs_env <device>
# Get and the ID_FS_TYPE variable from udev for a device.
diff --git a/dracut-init.sh b/dracut-init.sh
index a195c32..d2bb845 100644
--- a/dracut-init.sh
+++ b/dracut-init.sh
@@ -997,3 +997,16 @@ instmods() {
[[ "$optional" ]] && return 0
return $_ret
}
+
+if [[ "$(ln --help)" == *--relative* ]]; then
+ ln_r() {
+ ln -sfnr "${initdir}/$1" "${initdir}/$2"
+ }
+else
+ ln_r() {
+ local _source=$1
+ local _dest=$2
+ [[ -d "${_dest%/*}" ]] && _dest=$(readlink -f "${_dest%/*}")/${_dest##*/}
+ ln -sfn -- "$(convert_abs_rel "${_dest}" "${_source}")" "${initdir}/${_dest}"
+ }
+fi

View File

@ -1,21 +0,0 @@
From d4efc0aeeecc470d9a267b7f3c130f472488905c Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 25 May 2016 15:06:29 +0200
Subject: [PATCH] systemd-initrd: add initrd-root-device.target
---
modules.d/01systemd-initrd/module-setup.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/modules.d/01systemd-initrd/module-setup.sh b/modules.d/01systemd-initrd/module-setup.sh
index fb6a9ea..c1ccd2a 100755
--- a/modules.d/01systemd-initrd/module-setup.sh
+++ b/modules.d/01systemd-initrd/module-setup.sh
@@ -28,6 +28,7 @@ install() {
inst_multiple -o \
$systemdsystemunitdir/initrd.target \
$systemdsystemunitdir/initrd-fs.target \
+ $systemdsystemunitdir/initrd-root-device.target \
$systemdsystemunitdir/initrd-root-fs.target \
$systemdsystemunitdir/initrd-switch-root.target \
$systemdsystemunitdir/initrd-switch-root.service \

View File

@ -1,26 +0,0 @@
From 55b99a0e4c37b3b7ee58e1369ab00430795acdc6 Mon Sep 17 00:00:00 2001
From: Colin Guthrie <colin@mageia.org>
Date: Tue, 7 Jun 2016 09:16:05 +0100
Subject: [PATCH] dracut.sh: fix $tmpfilesdir fallback when systemd-devel is
not installed.
Bug introduced in 3a04bddeed in Dec 2014.
---
dracut.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dracut.sh b/dracut.sh
index 8232fa4..a50eaff 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -1260,8 +1260,8 @@ fi
|| tmpfilesdir=$(pkg-config systemd --variable=tmpfilesdir 2>/dev/null)
if ! [[ -d "$tmpfilesdir" ]]; then
- [[ -f /lib/tmpfiles.d ]] && tmpfilesdir=/lib/tmpfiles.d
- [[ -f /usr/lib/tmpfiles.d ]] && tmpfilesdir=/usr/lib/tmpfiles.d
+ [[ -d /lib/tmpfiles.d ]] && tmpfilesdir=/lib/tmpfiles.d
+ [[ -d /usr/lib/tmpfiles.d ]] && tmpfilesdir=/usr/lib/tmpfiles.d
fi
export initdir dracutbasedir \

View File

@ -1,30 +0,0 @@
From 2602a74edf543f98f2aa1eb79db3de3a1cda13f0 Mon Sep 17 00:00:00 2001
From: Nicolas Chauvet <kwizart@gmail.com>
Date: Thu, 12 May 2016 17:28:21 +0200
Subject: [PATCH] dracut: Add drivers/clk by default on arm
This will bundle clock drivers into the initramfs on arm
Tested on ti dm8148-t410 where adpll is needed on 4.6+ kernel
This will avoid to rely on (maybe broken) bootloader clocks.
Theses modules are also usually loaded early. Having them bundled into
the initramfs will avoid lot of deferred probes and others delay.
Signed-off-by: Nicolas Chauvet <kwizart@gmail.com>
---
modules.d/90kernel-modules/module-setup.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
index c30715d..7904c02 100755
--- a/modules.d/90kernel-modules/module-setup.sh
+++ b/modules.d/90kernel-modules/module-setup.sh
@@ -26,6 +26,7 @@ installkernel() {
if [[ "$(uname -p)" == arm* ]]; then
# arm specific modules
instmods \
+ "=drivers/clk" \
"=drivers/i2c/busses" \
"=drivers/regulator" \
"=drivers/rtc" \

View File

@ -1,59 +0,0 @@
From 71867b665cea6b4d9814ea0386baf0500db06806 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 7 Jun 2016 11:11:58 +0200
Subject: [PATCH] network: remove awk call and replace it with a shell function
changes commit 4fa5c235a76c085f5958002826436ed9c40e5034
---
dracut-functions.sh | 10 ++++++++++
modules.d/40network/module-setup.sh | 2 +-
modules.d/40network/net-lib.sh | 2 +-
3 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 4496bfe..146dbea 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -37,6 +37,16 @@ str_starts() { [ "${1#"$2"*}" != "$1" ]; }
# returns OK if $1 contains literal string $2 at the end, and isn't empty
str_ends() { [ "${1%*"$2"}" != "$1" ]; }
+uniq_lines() {
+ local -A lines
+ while read -r line; do
+ if ! [[ ${lines[$line]} ]]; then
+ echo "$line"
+ lines[$line]=1
+ fi
+ done
+}
+
# find a binary. If we were not passed the full path directly,
# search in the usual places to find the binary.
find_binary() {
diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
index 53b4b60..4bf93cc 100755
--- a/modules.d/40network/module-setup.sh
+++ b/modules.d/40network/module-setup.sh
@@ -23,7 +23,7 @@ installkernel() {
# called by dracut
install() {
local _arch _i _dir
- inst_multiple ip arping dhclient sed awk
+ inst_multiple ip arping dhclient sed
inst_multiple -o ping ping6
inst_multiple -o brctl
inst_multiple -o teamd teamdctl teamnl
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index 005ad1b..4fd274e 100755
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -120,7 +120,7 @@ setup_net() {
[ -e /tmp/dhclient.$netif.dhcpopts ] && . /tmp/dhclient.$netif.dhcpopts
# set up resolv.conf
[ -e /tmp/net.$netif.resolv.conf ] && \
- awk '!array[$0]++' /tmp/net.$netif.resolv.conf > /etc/resolv.conf
+ uniq_lines < /tmp/net.$netif.resolv.conf > /etc/resolv.conf
[ -e /tmp/net.$netif.gw ] && . /tmp/net.$netif.gw
# add static route

View File

@ -1,22 +0,0 @@
From 8e010957557621c1a71d7289c4210d3ad5932893 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 25 May 2016 17:05:03 +0200
Subject: [PATCH] dracut-init.sh: set default firmware path, if not specified
---
dracut-init.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/dracut-init.sh b/dracut-init.sh
index d2bb845..7f628ce 100644
--- a/dracut-init.sh
+++ b/dracut-init.sh
@@ -69,6 +69,8 @@ srcmods="/lib/modules/$kernel/"
}
export srcmods
+[[ $DRACUT_FIRMWARE_PATH ]] || export DRACUT_FIRMWARE_PATH="/lib/firmware/updates:/lib/firmware:/lib/firmware/$kernel"
+
# export standard hookdirs
[[ $hookdirs ]] || {
hookdirs="cmdline pre-udev pre-trigger netroot "

View File

@ -1,269 +0,0 @@
From 4e882b8090e82b0f0ffabfb45f0a2cd69768ef53 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 27 May 2016 10:52:28 +0200
Subject: [PATCH] use shutdown-emergency hook in testsuite to poweroff the
machine
---
modules.d/99base/dracut-lib.sh | 6 +++++-
test/TEST-01-BASIC/test.sh | 2 +-
test/TEST-02-SYSTEMD/test.sh | 2 +-
test/TEST-03-USR-MOUNT/test.sh | 2 +-
test/TEST-04-FULL-SYSTEMD/test.sh | 2 +-
test/TEST-10-RAID/test.sh | 2 +-
test/TEST-11-LVM/test.sh | 2 +-
test/TEST-12-RAID-DEG/test.sh | 2 +-
test/TEST-13-ENC-RAID-LVM/test.sh | 2 +-
test/TEST-14-IMSM/test.sh | 2 +-
test/TEST-15-BTRFSRAID/test.sh | 2 +-
test/TEST-16-DMSQUASH/test.sh | 2 +-
test/TEST-17-LVM-THIN/test.sh | 2 +-
test/TEST-20-NFS/test.sh | 4 ++--
test/TEST-30-ISCSI/test.sh | 2 +-
test/TEST-40-NBD/test.sh | 4 ++--
test/TEST-50-MULTINIC/test.sh | 2 +-
17 files changed, 23 insertions(+), 19 deletions(-)
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
index 48fc83d..94e4614 100755
--- a/modules.d/99base/dracut-lib.sh
+++ b/modules.d/99base/dracut-lib.sh
@@ -457,7 +457,11 @@ die() {
> /run/initramfs/.die
- getargbool 0 "rd.shell=" && emergency_shell
+ if getargbool 0 "rd.shell"; then
+ emergency_shell
+ else
+ source_hook "shutdown-emergency"
+ fi
if [ -n "$DRACUT_SYSTEMD" ]; then
systemctl --no-block --force halt
diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh
index 83320e2..959ac05 100755
--- a/test/TEST-01-BASIC/test.sh
+++ b/test/TEST-01-BASIC/test.sh
@@ -89,7 +89,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
diff --git a/test/TEST-02-SYSTEMD/test.sh b/test/TEST-02-SYSTEMD/test.sh
index 16f5c26..6dc6f42 100755
--- a/test/TEST-02-SYSTEMD/test.sh
+++ b/test/TEST-02-SYSTEMD/test.sh
@@ -86,7 +86,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
diff --git a/test/TEST-03-USR-MOUNT/test.sh b/test/TEST-03-USR-MOUNT/test.sh
index 61063fd..0aca8cf 100755
--- a/test/TEST-03-USR-MOUNT/test.sh
+++ b/test/TEST-03-USR-MOUNT/test.sh
@@ -124,7 +124,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
diff --git a/test/TEST-04-FULL-SYSTEMD/test.sh b/test/TEST-04-FULL-SYSTEMD/test.sh
index c7e08bf..884f441 100755
--- a/test/TEST-04-FULL-SYSTEMD/test.sh
+++ b/test/TEST-04-FULL-SYSTEMD/test.sh
@@ -261,7 +261,7 @@ EOF
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
diff --git a/test/TEST-10-RAID/test.sh b/test/TEST-10-RAID/test.sh
index 523b61a..6ec77a6 100755
--- a/test/TEST-10-RAID/test.sh
+++ b/test/TEST-10-RAID/test.sh
@@ -86,7 +86,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst ./cryptroot-ask.sh /sbin/cryptroot-ask
mkdir -p $initdir/etc
echo "testluks UUID=$ID_FS_UUID /etc/key" > $initdir/etc/crypttab
diff --git a/test/TEST-11-LVM/test.sh b/test/TEST-11-LVM/test.sh
index 34c7736..412a065 100755
--- a/test/TEST-11-LVM/test.sh
+++ b/test/TEST-11-LVM/test.sh
@@ -79,7 +79,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
diff --git a/test/TEST-12-RAID-DEG/test.sh b/test/TEST-12-RAID-DEG/test.sh
index f4ec2d0..444dca6 100755
--- a/test/TEST-12-RAID-DEG/test.sh
+++ b/test/TEST-12-RAID-DEG/test.sh
@@ -129,7 +129,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
inst ./cryptroot-ask.sh /sbin/cryptroot-ask
mkdir -p $initdir/etc
diff --git a/test/TEST-13-ENC-RAID-LVM/test.sh b/test/TEST-13-ENC-RAID-LVM/test.sh
index ea81697..2a814f8 100755
--- a/test/TEST-13-ENC-RAID-LVM/test.sh
+++ b/test/TEST-13-ENC-RAID-LVM/test.sh
@@ -123,7 +123,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
inst ./cryptroot-ask.sh /sbin/cryptroot-ask
mkdir -p $initdir/etc
diff --git a/test/TEST-14-IMSM/test.sh b/test/TEST-14-IMSM/test.sh
index f4ea7ae..315bc5a 100755
--- a/test/TEST-14-IMSM/test.sh
+++ b/test/TEST-14-IMSM/test.sh
@@ -113,7 +113,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
diff --git a/test/TEST-15-BTRFSRAID/test.sh b/test/TEST-15-BTRFSRAID/test.sh
index 5a9b6e1..8e2ea49 100755
--- a/test/TEST-15-BTRFSRAID/test.sh
+++ b/test/TEST-15-BTRFSRAID/test.sh
@@ -87,7 +87,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
diff --git a/test/TEST-16-DMSQUASH/test.sh b/test/TEST-16-DMSQUASH/test.sh
index 53a45d6..b255492 100755
--- a/test/TEST-16-DMSQUASH/test.sh
+++ b/test/TEST-16-DMSQUASH/test.sh
@@ -43,7 +43,7 @@ test_setup() {
export initdir="$TESTDIR"/overlay
. "$basedir"/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
diff --git a/test/TEST-17-LVM-THIN/test.sh b/test/TEST-17-LVM-THIN/test.sh
index 859d4dc..e337591 100755
--- a/test/TEST-17-LVM-THIN/test.sh
+++ b/test/TEST-17-LVM-THIN/test.sh
@@ -79,7 +79,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
diff --git a/test/TEST-20-NFS/test.sh b/test/TEST-20-NFS/test.sh
index ceca1f0..1dfdfc4 100755
--- a/test/TEST-20-NFS/test.sh
+++ b/test/TEST-20-NFS/test.sh
@@ -141,7 +141,7 @@ test_nfsv3() {
# This test must fail: nfsroot= requires root=/dev/nfs
client_test "NFSv3 Invalid root=dhcp nfsroot=/nfs/client" 52:54:00:12:34:04 \
- "root=dhcp nfsroot=/nfs/client failme" 192.168.50.1 -wsize=4096 && return 1
+ "root=dhcp nfsroot=/nfs/client failme rd.debug" 192.168.50.1 -wsize=4096 && return 1
client_test "NFSv3 root=dhcp DHCP path,options" \
52:54:00:12:34:05 "root=dhcp" 192.168.50.1 wsize=4096 || return 1
@@ -334,7 +334,7 @@ test_setup() {
. $basedir/dracut-init.sh
mkdir $TESTDIR/overlay
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
diff --git a/test/TEST-30-ISCSI/test.sh b/test/TEST-30-ISCSI/test.sh
index 940edb6..1c06b06 100755
--- a/test/TEST-30-ISCSI/test.sh
+++ b/test/TEST-30-ISCSI/test.sh
@@ -213,7 +213,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)
sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
diff --git a/test/TEST-40-NBD/test.sh b/test/TEST-40-NBD/test.sh
index 28ba6aa..2061392 100755
--- a/test/TEST-40-NBD/test.sh
+++ b/test/TEST-40-NBD/test.sh
@@ -226,7 +226,7 @@ make_encrypted_root() {
done
)
inst_multiple mke2fs poweroff cp umount tune2fs
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_hook initqueue 01 ./create-root.sh
inst_hook initqueue/finished 01 ./finished-false.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
@@ -362,7 +362,7 @@ test_setup() {
export initdir=$TESTDIR/overlay
. $basedir/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
inst ./cryptroot-ask.sh /sbin/cryptroot-ask
diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
index 484ebee..e0bf7d2 100755
--- a/test/TEST-50-MULTINIC/test.sh
+++ b/test/TEST-50-MULTINIC/test.sh
@@ -269,7 +269,7 @@ test_setup() {
export initdir="$TESTDIR"/overlay
. "$basedir"/dracut-init.sh
inst_multiple poweroff shutdown
- inst_hook emergency 000 ./hard-off.sh
+ inst_hook shutdown-emergency 000 ./hard-off.sh
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
)

View File

@ -1,62 +0,0 @@
From 9e19c0512d12be15d02125bce0e25d6b9bb2b333 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 7 Jun 2016 13:24:47 +0200
Subject: [PATCH] Revert "network: remove awk call and replace it with a shell
function"
This reverts commit 71867b665cea6b4d9814ea0386baf0500db06806.
network needs posix shell
---
dracut-functions.sh | 10 ----------
modules.d/40network/module-setup.sh | 2 +-
modules.d/40network/net-lib.sh | 2 +-
3 files changed, 2 insertions(+), 12 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 146dbea..4496bfe 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -37,16 +37,6 @@ str_starts() { [ "${1#"$2"*}" != "$1" ]; }
# returns OK if $1 contains literal string $2 at the end, and isn't empty
str_ends() { [ "${1%*"$2"}" != "$1" ]; }
-uniq_lines() {
- local -A lines
- while read -r line; do
- if ! [[ ${lines[$line]} ]]; then
- echo "$line"
- lines[$line]=1
- fi
- done
-}
-
# find a binary. If we were not passed the full path directly,
# search in the usual places to find the binary.
find_binary() {
diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
index 4bf93cc..53b4b60 100755
--- a/modules.d/40network/module-setup.sh
+++ b/modules.d/40network/module-setup.sh
@@ -23,7 +23,7 @@ installkernel() {
# called by dracut
install() {
local _arch _i _dir
- inst_multiple ip arping dhclient sed
+ inst_multiple ip arping dhclient sed awk
inst_multiple -o ping ping6
inst_multiple -o brctl
inst_multiple -o teamd teamdctl teamnl
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index 4fd274e..005ad1b 100755
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -120,7 +120,7 @@ setup_net() {
[ -e /tmp/dhclient.$netif.dhcpopts ] && . /tmp/dhclient.$netif.dhcpopts
# set up resolv.conf
[ -e /tmp/net.$netif.resolv.conf ] && \
- uniq_lines < /tmp/net.$netif.resolv.conf > /etc/resolv.conf
+ awk '!array[$0]++' /tmp/net.$netif.resolv.conf > /etc/resolv.conf
[ -e /tmp/net.$netif.gw ] && . /tmp/net.$netif.gw
# add static route

Some files were not shown because too many files have changed in this diff Show More