From 308914b60e6809c6b644ba4d11eb11a769491019 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Fri, 29 May 2020 20:27:25 +0200 Subject: [PATCH] dracut - 050-61.git20200529 - git snapshot (cherry picked from commit 0738a697c9202eb36911f02b0829bcaf3a224687) --- 0025.patch | 1 + 0026.patch | 32 ++++ 0027.patch | 50 +++++++ 0028.patch | 25 ++++ 0029.patch | 35 +++++ 0030.patch | 33 ++++ 0031.patch | 35 +++++ 0032.patch | 33 ++++ 0033.patch | 100 +++++++++++++ 0034.patch | 24 +++ 0035.patch | 23 +++ 0036.patch | 60 ++++++++ 0037.patch | 22 +++ 0038.patch | 109 ++++++++++++++ 0039.patch | 50 +++++++ 0040.patch | 23 +++ 0041.patch | 29 ++++ 0042.patch | 422 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 0043.patch | 316 +++++++++++++++++++++++++++++++++++++++ 0044.patch | 29 ++++ 0045.patch | 66 ++++++++ 0046.patch | 53 +++++++ 0047.patch | 24 +++ 0048.patch | 26 ++++ 0049.patch | 25 ++++ 0050.patch | 43 ++++++ 0051.patch | 25 ++++ 0052.patch | 34 +++++ 0053.patch | 39 +++++ 0054.patch | 60 ++++++++ 0055.patch | 38 +++++ 0056.patch | 52 +++++++ 0057.patch | 34 +++++ 0058.patch | 31 ++++ 0059.patch | 38 +++++ 0060.patch | 59 ++++++++ dracut.spec | 44 +++++- 37 files changed, 2140 insertions(+), 2 deletions(-) create mode 100644 0026.patch create mode 100644 0027.patch create mode 100644 0028.patch create mode 100644 0029.patch create mode 100644 0030.patch create mode 100644 0031.patch create mode 100644 0032.patch create mode 100644 0033.patch create mode 100644 0034.patch create mode 100644 0035.patch create mode 100644 0036.patch create mode 100644 0037.patch create mode 100644 0038.patch create mode 100644 0039.patch create mode 100644 0040.patch create mode 100644 0041.patch create mode 100644 0042.patch create mode 100644 0043.patch create mode 100644 0044.patch create mode 100644 0045.patch create mode 100644 0046.patch create mode 100644 0047.patch create mode 100644 0048.patch create mode 100644 0049.patch create mode 100644 0050.patch create mode 100644 0051.patch create mode 100644 0052.patch create mode 100644 0053.patch create mode 100644 0054.patch create mode 100644 0055.patch create mode 100644 0056.patch create mode 100644 0057.patch create mode 100644 0058.patch create mode 100644 0059.patch create mode 100644 0060.patch diff --git a/0025.patch b/0025.patch index a221b3e..f1a6c78 100644 --- a/0025.patch +++ b/0025.patch @@ -24,3 +24,4 @@ index ab82cbc9..39fa3692 100755 [[ $tmpdir ]] || tmpdir=$dracutsysrootdir/var/tmp [[ $INITRD_COMPRESS ]] && compress=$INITRD_COMPRESS [[ $compress_l ]] && compress=$compress_l + diff --git a/0026.patch b/0026.patch new file mode 100644 index 0000000..551c1b7 --- /dev/null +++ b/0026.patch @@ -0,0 +1,32 @@ +From 17d62d12065c264d899609cf69e8d913fc84460d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= + +Date: Sat, 14 Mar 2020 11:44:47 +0700 +Subject: [PATCH] cryptroot-ask: no warn if /run/cryptsetup exist + +In either case: +- encrypted device is decrypted, udev will trigger device changes again, +- multiple encrypted device, + +cryptroot-ask will run multiple time, then report: +> mkdir: cannot create directory '/run/cryptsetup': File exists + +Pass `-p` into mkdir to ignore that warning. +--- + modules.d/90crypt/cryptroot-ask.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/90crypt/cryptroot-ask.sh b/modules.d/90crypt/cryptroot-ask.sh +index e1f17975..97047ae9 100755 +--- a/modules.d/90crypt/cryptroot-ask.sh ++++ b/modules.d/90crypt/cryptroot-ask.sh +@@ -8,7 +8,7 @@ NEWROOT=${NEWROOT:-"/sysroot"} + + . /lib/dracut-lib.sh + +-mkdir -m 0700 /run/cryptsetup ++mkdir -p -m 0700 /run/cryptsetup + + # if device name is /dev/dm-X, convert to /dev/mapper/name + if [ "${1##/dev/dm-}" != "$1" ]; then + diff --git a/0027.patch b/0027.patch new file mode 100644 index 0000000..cedc590 --- /dev/null +++ b/0027.patch @@ -0,0 +1,50 @@ +From dfe2247a43d6a216d9af533825c9a103e3b056cd Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 23 Oct 2019 14:16:56 +0200 +Subject: [PATCH] dracut.sh: add check for invalid configuration files + +Emit a warning about possible misconfigured configuration files, where +the spaces around values are missing for +="" + +Better report a possible source of problems. We can fix annoying false +positives later. +--- + dracut.sh | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/dracut.sh b/dracut.sh +index 39fa3692..81c6d654 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -279,6 +279,14 @@ read_arg() { + fi + } + ++check_conf_file() ++{ ++ if grep -H -e '^[^#]*[+]=\("[^ ]\|.*[^ ]"\)' "$@"; then ++ printf '\ndracut: WARNING: +=" ": should have surrounding white spaces!\n' >&2 ++ printf 'dracut: WARNING: This will lead to unwanted side effects! Please fix the configuration file.\n\n' >&2 ++ fi ++} ++ + dropindirs_sort() + { + local suffix=$1; shift +@@ -703,10 +711,14 @@ if [[ ! -d $confdir ]]; then + fi + + # source our config file +-[[ -f $conffile ]] && . "$conffile" ++if [[ -f $conffile ]]; then ++ check_conf_file "$conffile" ++ . "$conffile" ++fi + + # source our config dir + for f in $(dropindirs_sort ".conf" "$confdir" "$dracutbasedir/dracut.conf.d"); do ++ check_conf_file "$f" + [[ -e $f ]] && . "$f" + done + + diff --git a/0028.patch b/0028.patch new file mode 100644 index 0000000..0b0a2f8 --- /dev/null +++ b/0028.patch @@ -0,0 +1,25 @@ +From c490ea8b2be52910c8ce70d08717cf1996c0d732 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Sat, 21 Apr 2018 00:11:17 +0200 +Subject: [PATCH] Make externally defined CFLAGS work + +--- + Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 02e2c4b5..0cc8b390 100644 +--- a/Makefile ++++ b/Makefile +@@ -18,8 +18,8 @@ pkglibdir ?= ${libdir}/dracut + sysconfdir ?= ${prefix}/etc + bindir ?= ${prefix}/bin + mandir ?= ${prefix}/share/man +-CFLAGS ?= -O2 -g -Wall +-CFLAGS += -std=gnu99 -D_FILE_OFFSET_BITS=64 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 $(KMOD_CFLAGS) ++CFLAGS ?= -O2 -g -Wall -std=gnu99 -D_FILE_OFFSET_BITS=64 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 ++CFLAGS += $(KMOD_CFLAGS) + bashcompletiondir ?= ${datadir}/bash-completion/completions + pkgconfigdatadir ?= $(datadir)/pkgconfig + + diff --git a/0029.patch b/0029.patch new file mode 100644 index 0000000..a88bb4a --- /dev/null +++ b/0029.patch @@ -0,0 +1,35 @@ +From db44331dc4513886e83e387604887033868c5214 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 13 Mar 2020 11:39:46 +0100 +Subject: [PATCH] Makefile: really make externally defined CFLAGS work + +The fix in aed52a6cfb43ebea372328fd5837c1f341c3f0df does not +work (second line will be ignored on override), so expand the implicitly +defined rule and add them there. +--- + Makefile | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 0cc8b390..7eb31847 100644 +--- a/Makefile ++++ b/Makefile +@@ -19,7 +19,6 @@ sysconfdir ?= ${prefix}/etc + bindir ?= ${prefix}/bin + mandir ?= ${prefix}/share/man + CFLAGS ?= -O2 -g -Wall -std=gnu99 -D_FILE_OFFSET_BITS=64 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 +-CFLAGS += $(KMOD_CFLAGS) + bashcompletiondir ?= ${datadir}/bash-completion/completions + pkgconfigdatadir ?= $(datadir)/pkgconfig + +@@ -50,6 +49,9 @@ manpages = $(man1pages) $(man5pages) $(man7pages) $(man8pages) + + all: dracut-version.sh dracut.pc dracut-install skipcpio/skipcpio + ++%.o : %.c ++ $(CC) -c $(CFLAGS) $(CPPFLAGS) $(KMOD_CFLAGS) $< -o $@ ++ + DRACUT_INSTALL_OBJECTS = \ + install/dracut-install.o \ + install/hashmap.o\ + diff --git a/0030.patch b/0030.patch new file mode 100644 index 0000000..61a0353 --- /dev/null +++ b/0030.patch @@ -0,0 +1,33 @@ +From defb1611c771d9f05780aebb101baefde2f66874 Mon Sep 17 00:00:00 2001 +From: Sebastian Mitterle +Date: Thu, 19 Mar 2020 12:12:50 +0100 +Subject: [PATCH] dasd: only install /etc/dasd.conf if present + +`dasd.conf` needn't be present on system even if modules have been loaded. + +Check if file exists to avoid error message during kernel update +```bash +dracut-install: ERROR: installing '/etc/dasd.conf' +dracut: FAILED: /usr/lib/dracut/dracut-install -D /var/tmp/dracut.YvVRx5/initramfs -H /etc/dasd.conf +``` +--- + modules.d/95dasd/module-setup.sh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95dasd/module-setup.sh b/modules.d/95dasd/module-setup.sh +index 2c49cd26..c71c8a08 100755 +--- a/modules.d/95dasd/module-setup.sh ++++ b/modules.d/95dasd/module-setup.sh +@@ -18,8 +18,9 @@ depends() { + install() { + inst_hook cmdline 30 "$moddir/parse-dasd.sh" + inst_multiple dasdinfo dasdconf.sh normalize_dasd_arg +- if [[ $hostonly ]]; then +- inst -H /etc/dasd.conf ++ conf=/etc/dasd.conf ++ if [[ $hostonly && -f $conf ]] ; then ++ inst -H $conf + fi + inst_rules 56-dasd.rules + inst_rules 59-dasd.rules + diff --git a/0031.patch b/0031.patch new file mode 100644 index 0000000..08f52ff --- /dev/null +++ b/0031.patch @@ -0,0 +1,35 @@ +From b68930ed3dd29184f3e6c87582377e7501b3b276 Mon Sep 17 00:00:00 2001 +From: Patrick Talbert +Date: Wed, 18 Mar 2020 15:58:48 +0100 +Subject: [PATCH] dhclient-script: Fix typo in output of BOUND & BOUND6 cases + +No bonding going on here. + +Signed-off-by: Patrick Talbert +--- + modules.d/35network-legacy/dhclient-script.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/35network-legacy/dhclient-script.sh b/modules.d/35network-legacy/dhclient-script.sh +index 84b65e89..fd92752b 100755 +--- a/modules.d/35network-legacy/dhclient-script.sh ++++ b/modules.d/35network-legacy/dhclient-script.sh +@@ -164,7 +164,7 @@ case $reason in + ;; + + BOUND) +- echo "dhcp: BOND setting $netif" ++ echo "dhcp: BOUND setting up $netif" + unset layer2 + if [ -f /sys/class/net/$netif/device/layer2 ]; then + read layer2 < /sys/class/net/$netif/device/layer2 +@@ -223,7 +223,7 @@ case $reason in + ;; + + BOUND6) +- echo "dhcp: BOND6 setting $netif" ++ echo "dhcp: BOUND6 setting up $netif" + setup_interface6 + + set | while read line || [ -n "$line" ]; do + diff --git a/0032.patch b/0032.patch new file mode 100644 index 0000000..ba82eb4 --- /dev/null +++ b/0032.patch @@ -0,0 +1,33 @@ +From 3a043feea1d1d1d1d01762d95b725b9adef61562 Mon Sep 17 00:00:00 2001 +From: Alexander Sosedkin +Date: Thu, 26 Mar 2020 15:11:15 +0100 +Subject: [PATCH] url-lib: drop NSS if it's not in curl --version + +--- + modules.d/45url-lib/module-setup.sh | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/modules.d/45url-lib/module-setup.sh b/modules.d/45url-lib/module-setup.sh +index a99e0c56..258a9e16 100755 +--- a/modules.d/45url-lib/module-setup.sh ++++ b/modules.d/45url-lib/module-setup.sh +@@ -19,11 +19,13 @@ install() { + inst_simple "$moddir/url-lib.sh" "/lib/url-lib.sh" + inst_multiple -o ctorrent + inst_multiple curl +- # also install libs for curl https +- inst_libdir_file "libnsspem.so*" +- inst_libdir_file "libnsssysinit.so*" +- inst_libdir_file "libsoftokn3.so*" +- inst_libdir_file "libsqlite3.so*" ++ if curl --version | grep -qi '\bNSS\b'; then ++ # also install libs for curl https ++ inst_libdir_file "libnsspem.so*" ++ inst_libdir_file "libnsssysinit.so*" ++ inst_libdir_file "libsoftokn3.so*" ++ inst_libdir_file "libsqlite3.so*" ++ fi + + for _dir in $libdirs; do + [[ -d $dracutsysrootdir$_dir ]] || continue + diff --git a/0033.patch b/0033.patch new file mode 100644 index 0000000..411d7c1 --- /dev/null +++ b/0033.patch @@ -0,0 +1,100 @@ +From b8a92b715677d52dbc2b27a710b9816fd8b9a63b Mon Sep 17 00:00:00 2001 +From: Ben Howard +Date: Fri, 3 Apr 2020 13:32:44 -0600 +Subject: [PATCH] multipath: add automatic configuration for multipath + +Add support for 'rd.multipath=default' for using the default +configuration on boot. The intended purpose for this is to help support +ostree-based image boots from multipathed devices (such as Fedora and +Red Hat CoreOS). +--- + dracut.cmdline.7.asc | 3 +++ + modules.d/90multipath/module-setup.sh | 7 +++++-- + modules.d/90multipath/multipathd-configure.service | 19 +++++++++++++++++++ + modules.d/90multipath/multipathd.sh | 5 +++++ + 4 files changed, 32 insertions(+), 2 deletions(-) + +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index 646f1f03..63074353 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -431,6 +431,9 @@ MULTIPATH + **rd.multipath=0**:: + disable multipath detection + ++**rd.multipath=default**:: ++ use default multipath settings ++ + FIPS + ~~~~ + **rd.fips**:: +diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh +index 48a9d09a..2bb7444b 100755 +--- a/modules.d/90multipath/module-setup.sh ++++ b/modules.d/90multipath/module-setup.sh +@@ -83,11 +83,12 @@ install() { + dmsetup \ + kpartx \ + mpath_wait \ ++ mpathconf \ ++ mpathpersist \ + multipath \ + multipathd \ +- mpathpersist \ +- xdrgetuid \ + xdrgetprio \ ++ xdrgetuid \ + /etc/xdrdevices.conf \ + /etc/multipath.conf \ + /etc/multipath/* \ +@@ -109,7 +110,9 @@ install() { + fi + + if dracut_module_included "systemd"; then ++ inst_simple "${moddir}/multipathd-configure.service" "${systemdsystemunitdir}/multipathd-configure.service" + inst_simple "${moddir}/multipathd.service" "${systemdsystemunitdir}/multipathd.service" ++ systemctl -q --root "$initdir" enable multipathd-configure.service + systemctl -q --root "$initdir" enable multipathd.service + else + inst_hook pre-trigger 02 "$moddir/multipathd.sh" +diff --git a/modules.d/90multipath/multipathd-configure.service b/modules.d/90multipath/multipathd-configure.service +new file mode 100644 +index 00000000..de690615 +--- /dev/null ++++ b/modules.d/90multipath/multipathd-configure.service +@@ -0,0 +1,19 @@ ++[Unit] ++Description=Device-Mapper Multipath Default Configuration ++Before=iscsi.service iscsid.service lvm2-activation-early.service ++Wants=systemd-udev-trigger.service systemd-udev-settle.service local-fs-pre.target ++After=systemd-udev-trigger.service systemd-udev-settle.service ++Before=local-fs-pre.target multipathd.service ++DefaultDependencies=no ++Conflicts=shutdown.target ++ ++ConditionKernelCommandLine=rd.multipath=default ++ConditionPathExists=!/etc/multipath.conf ++ ++[Service] ++Type=oneshot ++ExecStartPre=-/usr/bin/mkdir -p /etc/multipath/multipath.conf.d ++ExecStart=/usr/sbin/mpathconf --enable ++ ++[Install] ++WantedBy=sysinit.target +diff --git a/modules.d/90multipath/multipathd.sh b/modules.d/90multipath/multipathd.sh +index 2c2dcc85..936c5dc7 100755 +--- a/modules.d/90multipath/multipathd.sh ++++ b/modules.d/90multipath/multipathd.sh +@@ -1,5 +1,10 @@ + #!/bin/sh + ++if [ "$(getarg rd.multipath)x" == "default" ] && [ ! -e /etc/multipath.conf ]; then ++ mkdir -p /etc/multipath/multipath.conf.d ++ mpathconf --enable ++fi ++ + if getargbool 1 rd.multipath -d -n rd_NO_MULTIPATH && [ -e /etc/multipath.conf ]; then + modprobe dm-multipath + multipathd -B || multipathd + diff --git a/0034.patch b/0034.patch new file mode 100644 index 0000000..6d15d86 --- /dev/null +++ b/0034.patch @@ -0,0 +1,24 @@ +From 3b626094bd5f017dee26968ce1531a301bb6218a Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Tue, 7 Apr 2020 12:27:30 +0200 +Subject: [PATCH] mkinitrd-suse.sh: Fix i586 platform detection + +Reference: boo#1168341 +--- + mkinitrd-suse.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mkinitrd-suse.sh b/mkinitrd-suse.sh +index db2eb188..708c4e67 100755 +--- a/mkinitrd-suse.sh ++++ b/mkinitrd-suse.sh +@@ -171,7 +171,7 @@ default_kernel_images() { + ppc|ppc64) + regex='vmlinux' + ;; +- i386|x86_64) ++ i?86|x86_64) + regex='vmlinuz' + ;; + arm*) + diff --git a/0035.patch b/0035.patch new file mode 100644 index 0000000..86e9db4 --- /dev/null +++ b/0035.patch @@ -0,0 +1,23 @@ +From 11474b808b6fbd373b2ca6ce3350a024e6a8ea15 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 9 Apr 2020 22:05:41 +0200 +Subject: [PATCH] TEST-99: exclude /etc/dnf/* from check + +file /etc/dnf/modules.d/eclipse.module.rpmmoved is not owned by any package +--- + test/TEST-99-RPM/test.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/test/TEST-99-RPM/test.sh b/test/TEST-99-RPM/test.sh +index af64c24a..504fd77f 100755 +--- a/test/TEST-99-RPM/test.sh ++++ b/test/TEST-99-RPM/test.sh +@@ -84,6 +84,7 @@ find / -xdev -type f -not -path '/var/*' \ + -not -path "/boot/loader/entries/\$(cat /etc/machine-id)-*" \ + -not -path "/boot/\$(cat /etc/machine-id)/*" \ + -not -path '/etc/openldap/certs/*' \ ++ -not -path '/etc/dnf/*' \ + -print0 | xargs -0 rpm -qf | \ + grep -F 'not owned' &>> /test.output || : + exit 0 + diff --git a/0036.patch b/0036.patch new file mode 100644 index 0000000..f53da76 --- /dev/null +++ b/0036.patch @@ -0,0 +1,60 @@ +From 872eb69936bd849eec6d1974dd6569f23a7ad3db Mon Sep 17 00:00:00 2001 +From: Kairui Song +Date: Thu, 5 Mar 2020 18:44:45 +0800 +Subject: [PATCH] 95znet: Add a rd.znet_ifname= option + +qeth device may have a different IP for each boot, so the rd.ifname= +option will no longer work. So for znet device, introduce a +rd.znet_ifname= options, to subchannel id instead of MAC address as the +identifier and rename the interface. + +Signed-off-by: Kairui Song +--- + dracut.cmdline.7.asc | 5 +++++ + modules.d/95znet/parse-ccw.sh | 18 ++++++++++++++++++ + 2 files changed, 23 insertions(+) + +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index 63074353..2b38aa33 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -863,6 +863,11 @@ ZNET + RHEL/Fedora with ccw_init, which is called from udev for certain + devices on z-series. + rd.znet can be specified multiple times on the kernel command line. ++ ++**rd.znet_ifname=**____:____:: ++ Assign network device name (i.e. "bootnet") to the NIC ++ corresponds to the subchannels. This is useful when dracut's default ++ "ifname=" doesn't work due to device having a changing MAC address. + + + [listing] + .Example +diff --git a/modules.d/95znet/parse-ccw.sh b/modules.d/95znet/parse-ccw.sh +index 7d40a1aa..59b588f3 100755 +--- a/modules.d/95znet/parse-ccw.sh ++++ b/modules.d/95znet/parse-ccw.sh +@@ -4,4 +4,22 @@ for ccw_arg in $(getargs rd.ccw -d 'rd_CCW=') $(getargs rd.znet -d 'rd_ZNET='); + echo $ccw_arg >> /etc/ccw.conf + done + ++for ifname in $(getargs rd.znet_ifname); do ++ IFS=: read ifname_if ifname_subchannels _rest <<< "$ifname" ++ if [ -z "$ifname_if" ] || [ -z "$ifname_subchannels" ] || [ -n "$_rest" ]; then ++ warn "Invalid arguments for rd.znet_ifname=" ++ else ++ { ++ ifname_subchannels=${ifname_subchannels//,/|} ++ ++ echo 'ACTION!="add|change", GOTO="ccw_ifname_end"' ++ echo 'ATTR{type}!="1", GOTO="ccw_ifname_end"' ++ echo 'SUBSYSTEM!="net", GOTO="ccw_ifname_end"' ++ echo "SUBSYSTEMS==\"ccwgroup\", KERNELS==\"$ifname_subchannels\", DRIVERS==\"?*\" NAME=\"$ifname_if\"" ++ echo 'LABEL="ccw_ifname_end"' ++ ++ } > /etc/udev/rules.d/81-ccw-ifname.rules ++ fi ++done ++ + znet_cio_free + diff --git a/0037.patch b/0037.patch new file mode 100644 index 0000000..c6b542a --- /dev/null +++ b/0037.patch @@ -0,0 +1,22 @@ +From 25c7a13985473ff9714245eaa602225b1a0f9ecb Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Wed, 25 Mar 2020 12:23:11 +0100 +Subject: [PATCH] 90nvdimm: include nvdimm keys in initrd + +This is necessary to actually unlock NVDIMM keys during boot. +--- + modules.d/90nvdimm/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/90nvdimm/module-setup.sh b/modules.d/90nvdimm/module-setup.sh +index 6d58efd7..6d73d215 100755 +--- a/modules.d/90nvdimm/module-setup.sh ++++ b/modules.d/90nvdimm/module-setup.sh +@@ -27,5 +27,5 @@ installkernel() { + + # called by dracut + install() { +- inst_multiple -o ndctl ++ inst_multiple -o ndctl /etc/ndctl/keys/tpm.handle /etc/ndctl/keys/*.blob + } + diff --git a/0038.patch b/0038.patch new file mode 100644 index 0000000..5654024 --- /dev/null +++ b/0038.patch @@ -0,0 +1,109 @@ +From 8e1a4dc5f8a777fc718db490414ffdc9dc755f66 Mon Sep 17 00:00:00 2001 +From: Jonas Witschel +Date: Sat, 18 Apr 2020 14:55:41 +0200 +Subject: [PATCH] dracut-lib.sh: quote variables in parameter expansion + patterns + +According to POSIX.1-2017, 2.6.2 Parameter Expansion: + +${parameter%[word]} [...] The word shall be expanded to produce a +pattern. + +This means if word contains variables that itself contain special +characters like asterisks or backslashes, these are treated as pattern +characters unless the variable is quoted. Try e.g. the following example +in bash, dash or (busybox) ash: + +i='a\c'; j='\'; echo "${i%$j*}" + +This prints "a\c" because "$j*" is expanded to "\*", escaping the +asterisk. In contrast, + +i='a\c'; j='\'; echo "${i%"$j"*}" + +produces the expected result "a" because the backslash is not specially +treated any more after quoting. + +The quotes that this commit adds have been previously removed in commit +f9c96cf56fed390841eac05c43826e62014c9188, citing issues with busybox +hush without further specifying the actual error. I tested a recent +busybox build (upstream commit 9aa751b08ab03d6396f86c3df77937a19687981b) +and couldn't find any problems. Note that the above example always +produces "a\c" in hush regardless of quoting $j, making hush unsuitable +for use with dracut, but using quotes in parameter expansions generally +works. + +The unquoted variables break the "rd.luks.uuid/name" kernel command line +options in dracut 050 because + +str_replace "$luksname" '\' '\\' + +in modules.d/90crypt/parse-crypt.sh is not able to escape the +backslashes any more, see GH-723, GH-727: backslashes in the +systemd-cryptsetup@.service unit name stay unescaped for use in udev +(cf. commit 0f6d93eb9d63695a64002ec8b0421fbc9fc8a7a3), leading to +failures in starting the unit. + +This partially reverts commit f9c96cf56fed390841eac05c43826e62014c9188. +--- + modules.d/99base/dracut-lib.sh | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh +index c53cd13b..c57523d3 100755 +--- a/modules.d/99base/dracut-lib.sh ++++ b/modules.d/99base/dracut-lib.sh +@@ -24,7 +24,7 @@ debug_on() { + + # returns OK if $1 contains literal string $2 (and isn't empty) + strstr() { +- [ "${1##*$2*}" != "$1" ] ++ [ "${1##*"$2"*}" != "$1" ] + } + + # returns OK if $1 matches (completely) glob pattern $2 +@@ -43,18 +43,18 @@ strglobin() { + + # returns OK if $1 contains literal string $2 at the beginning, and isn't empty + str_starts() { +- [ "${1#$2*}" != "$1" ] ++ [ "${1#"$2"*}" != "$1" ] + } + + # returns OK if $1 contains literal string $2 at the end, and isn't empty + str_ends() { +- [ "${1%*$2}" != "$1" ] ++ [ "${1%*"$2"}" != "$1" ] + } + + trim() { + local var="$*" +- var="${var#${var%%[![:space:]]*}}" # remove leading whitespace characters +- var="${var%${var##*[![:space:]]}}" # remove trailing whitespace characters ++ var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters ++ var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters + printf "%s" "$var" + } + +@@ -108,9 +108,9 @@ str_replace() { + local out='' + + while strstr "${in}" "$s"; do +- chop="${in%%$s*}" ++ chop="${in%%"$s"*}" + out="${out}${chop}$r" +- in="${in#*$s}" ++ in="${in#*"$s"}" + done + echo "${out}${in}" + } +@@ -396,7 +396,7 @@ splitsep() { + while [ -n "$str" -a "$#" -gt 1 ]; do + tmp="${str%%$sep*}" + eval "$1='${tmp}'" +- str="${str#$tmp}" ++ str="${str#"$tmp"}" + str="${str#$sep}" + shift + done + diff --git a/0039.patch b/0039.patch new file mode 100644 index 0000000..5553d31 --- /dev/null +++ b/0039.patch @@ -0,0 +1,50 @@ +From de34ba76e579dd11202f632ecf8c625f841646e1 Mon Sep 17 00:00:00 2001 +From: Mikhail Novosyolov +Date: Sun, 19 Apr 2020 16:32:41 +0300 +Subject: [PATCH] i18n: Always install /etc/vconsole.conf + +/etc/vconsole.conf must be installed always, even in generic initrds, not only host-only ones. +systemd-vconsole-setup is run at initrd stage and expects either /etc/vconsole.conf or kernel cmdline options to exist. + +I have also proposed a change in systemd-vconsole-setup that makes it behave better if /etc/vconsole.conf does not exist: +https://github.com/systemd/systemd/pull/15479 +But it is just a fallback. If /etc/vconsole.conf does not exist in initrd and if that patch is applied on systemd, +then the default consoel font is set despite the one being set in /etc/vconsole.conf and this setting is inherited +when new TTYs are opened. This leads to full ignorance of settings in /etc/vconsole.conf. +It is incorrect, and that is why this file must be copied to initrds always, but not only on host-only initrds. + +Fixes: https://github.com/dracutdevs/dracut/issues/796 + +Signed-off-by: Mikhail Novosyolov +--- + modules.d/10i18n/module-setup.sh | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh +index ba17e477..dd45b666 100755 +--- a/modules.d/10i18n/module-setup.sh ++++ b/modules.d/10i18n/module-setup.sh +@@ -230,9 +230,7 @@ install() { + print_vars LC_ALL LANG >> ${initdir}${I18N_CONF} + fi + +- if dracut_module_included "systemd" && [[ -f $dracutsysrootdir${VCONFIG_CONF} ]]; then +- inst_simple ${VCONFIG_CONF} +- else ++ if ! dracut_module_included "systemd"; then + mksubdirs ${initdir}${VCONFIG_CONF} + print_vars KEYMAP EXT_KEYMAPS UNICODE FONT FONT_MAP FONT_UNIMAP >> ${initdir}${VCONFIG_CONF} + fi +@@ -263,6 +261,11 @@ install() { + if checks; then + install_base + ++ # https://github.com/dracutdevs/dracut/issues/796 ++ if dracut_module_included "systemd" && [[ -f $dracutsysrootdir${VCONFIG_CONF} ]]; then ++ inst_simple ${VCONFIG_CONF} ++ fi ++ + if [[ ${hostonly} ]] && ! [[ ${i18n_install_all} == "yes" ]]; then + install_local_i18n || install_all_kbd + else + diff --git a/0040.patch b/0040.patch new file mode 100644 index 0000000..b7d8aeb --- /dev/null +++ b/0040.patch @@ -0,0 +1,23 @@ +From 3a4a212649bd89f5a07ccf87a53b3103094748a3 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 20 Apr 2020 15:07:02 +0200 +Subject: [PATCH] systemd: skip dependency add for non-existent units + +Fixes: https://github.com/dracutdevs/dracut/issues/795 +--- + 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 5ebdfc30..17be74fd 100755 +--- a/modules.d/00systemd/module-setup.sh ++++ b/modules.d/00systemd/module-setup.sh +@@ -241,6 +241,7 @@ install() { + systemd-ask-password-console.service \ + systemd-ask-password-plymouth.service \ + ; do ++ [[ -f $systemdsystemunitdir/$i ]] || continue + systemctl -q --root "$initdir" add-wants "$i" systemd-vconsole-setup.service + done + + diff --git a/0041.patch b/0041.patch new file mode 100644 index 0000000..2f9d7d4 --- /dev/null +++ b/0041.patch @@ -0,0 +1,29 @@ +From 87bffc36e72c121024df033e1a78799456c73523 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Mon, 23 Mar 2020 22:57:35 +0100 +Subject: [PATCH] network-manager: install libnss DNS and mDNS plugins + +Install libnss_dns.so and libnss_mdns4_minimal.so plugins for the Name +Service Switch (NSS) functionality of glibc so that name resolution +through /etc/resolv.conf and mDNS works in the initrd. + +Fixes: #772 +--- + modules.d/35network-manager/module-setup.sh | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/modules.d/35network-manager/module-setup.sh b/modules.d/35network-manager/module-setup.sh +index d6d0f9ce..8fc3114d 100755 +--- a/modules.d/35network-manager/module-setup.sh ++++ b/modules.d/35network-manager/module-setup.sh +@@ -51,4 +51,9 @@ install() { + if ! [[ -d "$initdir/etc/sysconfig/network-scripts" ]]; then + inst_libdir_file "NetworkManager/$_nm_version/libnm-settings-plugin-ifcfg-rh.so" + fi ++ ++ _arch=${DRACUT_ARCH:-$(uname -m)} ++ ++ inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_dns.so.*" \ ++ {"tls/$_arch/",tls/,"$_arch/",}"libnss_mdns4_minimal.so.*" + } + diff --git a/0042.patch b/0042.patch new file mode 100644 index 0000000..f9480c5 --- /dev/null +++ b/0042.patch @@ -0,0 +1,422 @@ +From 49c4172f4eef6e2015615e132b199a7ec0699ffc Mon Sep 17 00:00:00 2001 +From: Kairui Song +Date: Wed, 8 Apr 2020 16:39:52 +0800 +Subject: [PATCH] Remove memtrace-ko and rd.memdebug=4 support in dracut + +This feature could be off loaded to memstrack, which have better +accurecy, better performance, and have more detailed tracing features. + +Also simplify make_trace_mem a bit. + +And currently rd.memdebug=4 is unstable, fails from time to time. +--- + dracut.cmdline.7.asc | 4 +-- + modules.d/98dracut-systemd/dracut-cmdline.sh | 2 +- + modules.d/98dracut-systemd/dracut-pre-mount.sh | 2 +- + modules.d/98dracut-systemd/dracut-pre-pivot.sh | 2 +- + modules.d/98dracut-systemd/dracut-pre-trigger.sh | 2 +- + modules.d/99base/dracut-lib.sh | 44 +++++------------------- + modules.d/99base/init.sh | 8 ++--- + modules.d/99base/memtrace-ko.sh | 191 ----------------------------------------------------------------------------------------------------- + modules.d/99base/module-setup.sh | 1 - + 9 files changed, 18 insertions(+), 238 deletions(-) + +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index 2b38aa33..c53601ea 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -188,9 +188,9 @@ It should be attached to any report about dracut problems. + _/run/initramfs/init.log_. + If "quiet" is set, it also logs to the console. + +-**rd.memdebug=[0-4]**:: ++**rd.memdebug=[0-3]**:: + Print memory usage info at various points, set the verbose level from 0 to 4. +-+ +++ + Higher level means more debugging output: + + + ---- +diff --git a/modules.d/98dracut-systemd/dracut-cmdline.sh b/modules.d/98dracut-systemd/dracut-cmdline.sh +index bff9435a..6c6ee026 100755 +--- a/modules.d/98dracut-systemd/dracut-cmdline.sh ++++ b/modules.d/98dracut-systemd/dracut-cmdline.sh +@@ -42,7 +42,7 @@ export root + export rflags + export fstype + +-make_trace_mem "hook cmdline" '1+:mem' '1+:iomem' '3+:slab' '4+:komem' ++make_trace_mem "hook cmdline" '1+:mem' '1+:iomem' '3+:slab' + # run scriptlets to parse the command line + getarg 'rd.break=cmdline' -d 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline" + source_hook cmdline +diff --git a/modules.d/98dracut-systemd/dracut-pre-mount.sh b/modules.d/98dracut-systemd/dracut-pre-mount.sh +index a3b9d291..ae511286 100755 +--- a/modules.d/98dracut-systemd/dracut-pre-mount.sh ++++ b/modules.d/98dracut-systemd/dracut-pre-mount.sh +@@ -8,7 +8,7 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + + source_conf /etc/conf.d + +-make_trace_mem "hook pre-mount" '1:shortmem' '2+:mem' '3+:slab' '4+:komem' ++make_trace_mem "hook pre-mount" '1:shortmem' '2+:mem' '3+:slab' + # pre pivot scripts are sourced just before we doing cleanup and switch over + # to the new root. + getarg 'rd.break=pre-mount' 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount" +diff --git a/modules.d/98dracut-systemd/dracut-pre-pivot.sh b/modules.d/98dracut-systemd/dracut-pre-pivot.sh +index dc9a2504..96e6f8ca 100755 +--- a/modules.d/98dracut-systemd/dracut-pre-pivot.sh ++++ b/modules.d/98dracut-systemd/dracut-pre-pivot.sh +@@ -8,7 +8,7 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + + source_conf /etc/conf.d + +-make_trace_mem "hook pre-pivot" '1:shortmem' '2+:mem' '3+:slab' '4+:komem' ++make_trace_mem "hook pre-pivot" '1:shortmem' '2+:mem' '3+:slab' + # pre pivot scripts are sourced just before we doing cleanup and switch over + # to the new root. + getarg 'rd.break=pre-pivot' 'rdbreak=pre-pivot' && emergency_shell -n pre-pivot "Break pre-pivot" +diff --git a/modules.d/98dracut-systemd/dracut-pre-trigger.sh b/modules.d/98dracut-systemd/dracut-pre-trigger.sh +index 7cd821ed..a1a33960 100755 +--- a/modules.d/98dracut-systemd/dracut-pre-trigger.sh ++++ b/modules.d/98dracut-systemd/dracut-pre-trigger.sh +@@ -8,7 +8,7 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + + source_conf /etc/conf.d + +-make_trace_mem "hook pre-trigger" '1:shortmem' '2+:mem' '3+:slab' '4+:komem' ++make_trace_mem "hook pre-trigger" '1:shortmem' '2+:mem' '3+:slab' + + source_hook pre-trigger + +diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh +index c57523d3..b7020892 100755 +--- a/modules.d/99base/dracut-lib.sh ++++ b/modules.d/99base/dracut-lib.sh +@@ -1187,50 +1187,25 @@ are_lists_eq() { + + setmemdebug() { + if [ -z "$DEBUG_MEM_LEVEL" ]; then +- export DEBUG_MEM_LEVEL=$(getargnum 0 0 4 rd.memdebug) ++ export DEBUG_MEM_LEVEL=$(getargnum 0 0 3 rd.memdebug) + fi + } + + setmemdebug + +-cleanup_trace_mem() +-{ +- # tracekomem based on kernel trace needs cleanup after use. +- if [ "$DEBUG_MEM_LEVEL" -eq 4 ]; then +- tracekomem --cleanup +- fi +-} +- +-# parameters: msg [trace_level:trace]... +-make_trace_mem() +-{ +- local msg +- msg="$1" +- shift +- if [ -n "$DEBUG_MEM_LEVEL" ] && [ "$DEBUG_MEM_LEVEL" -gt 0 ]; then +- make_trace show_memstats $DEBUG_MEM_LEVEL "[debug_mem]" "$msg" "$@" >&2 +- fi +-} +- + # parameters: func log_level prefix msg [trace_level:trace]... +-make_trace() ++make_trace_mem() + { +- local func log_level prefix msg msg_printed ++ local log_level prefix msg msg_printed + local trace trace_level trace_in_higher_levels insert_trace + +- func=$1 +- shift +- +- log_level=$1 +- shift +- +- prefix=$1 +- shift +- + msg=$1 + shift + +- if [ -z "$log_level" ]; then ++ prefix='[debug_mem]' ++ log_level=$DEBUG_MEM_LEVEL ++ ++ if [ -z "$log_level" ] || [ "$log_level" -le 0 ]; then + return + fi + +@@ -1263,7 +1238,7 @@ make_trace() + echo "$prefix $msg" + msg_printed=1 + fi +- $func $trace ++ show_memstats $trace + fi + shift + done +@@ -1285,9 +1260,6 @@ show_memstats() + iomem) + cat /proc/iomem + ;; +- komem) +- tracekomem +- ;; + esac + } + +diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh +index 1111d09b..148ce831 100755 +--- a/modules.d/99base/init.sh ++++ b/modules.d/99base/init.sh +@@ -131,7 +131,7 @@ if ! getargbool 1 'rd.hostonly'; then + fi + + # run scriptlets to parse the command line +-make_trace_mem "hook cmdline" '1+:mem' '1+:iomem' '3+:slab' '4+:komem' ++make_trace_mem "hook cmdline" '1+:mem' '1+:iomem' '3+:slab' + getarg 'rd.break=cmdline' -d 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline" + source_hook cmdline + +@@ -160,7 +160,7 @@ fi + + udevproperty "hookdir=$hookdir" + +-make_trace_mem "hook pre-trigger" '1:shortmem' '2+:mem' '3+:slab' '4+:komem' ++make_trace_mem "hook pre-trigger" '1:shortmem' '2+:mem' '3+:slab' + getarg 'rd.break=pre-trigger' -d 'rdbreak=pre-trigger' && emergency_shell -n pre-trigger "Break before pre-trigger" + source_hook pre-trigger + +@@ -230,7 +230,7 @@ unset RDRETRY + + # pre-mount happens before we try to mount the root filesystem, + # and happens once. +-make_trace_mem "hook pre-mount" '1:shortmem' '2+:mem' '3+:slab' '4+:komem' ++make_trace_mem "hook pre-mount" '1:shortmem' '2+:mem' '3+:slab' + getarg 'rd.break=pre-mount' -d 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount" + source_hook pre-mount + +@@ -266,7 +266,7 @@ done + + # pre pivot scripts are sourced just before we doing cleanup and switch over + # to the new root. +-make_trace_mem "hook pre-pivot" '1:shortmem' '2+:mem' '3+:slab' '4+:komem' ++make_trace_mem "hook pre-pivot" '1:shortmem' '2+:mem' '3+:slab' + getarg 'rd.break=pre-pivot' -d 'rdbreak=pre-pivot' && emergency_shell -n pre-pivot "Break pre-pivot" + source_hook pre-pivot + +diff --git a/modules.d/99base/memtrace-ko.sh b/modules.d/99base/memtrace-ko.sh +deleted file mode 100755 +index ee035e15..00000000 +--- a/modules.d/99base/memtrace-ko.sh ++++ /dev/null +@@ -1,191 +0,0 @@ +-#!/bin/sh +- +-# Try to find out kernel modules with large total memory allocation during loading. +-# For large slab allocation, it will fall into buddy, also not trace "mm_page_free" +-# considering large free is quite rare for module_init, thus saving tons of events +-# to avoid trace data overwritten. +-# +-# Therefore, tracing "mm_page_alloc"alone should be enough for the purpose. +- +-# "sys/kernel/tracing" has the priority if exists. +-get_trace_base() { +- # trace access through debugfs would be obsolete if "/sys/kernel/tracing" is available. +- if [ -d "/sys/kernel/tracing" ]; then +- echo "/sys/kernel" +- else +- echo "/sys/kernel/debug" +- fi +-} +- +-# We want to enable these trace events. +-get_want_events() { +- echo "module:module_put module:module_load kmem:mm_page_alloc" +-} +- +-get_event_filter() { +- echo "comm == systemd-udevd || comm == modprobe || comm == insmod" +-} +- +-is_trace_ready() { +- local trace_base want_events current_events +- +- trace_base=$(get_trace_base) +- ! [ -f "$trace_base/tracing/trace" ] && return 1 +- +- [ "$(cat $trace_base/tracing/tracing_on)" -eq 0 ] && return 1 +- +- # Also check if trace events were properly setup. +- want_events=$(get_want_events) +- current_events=$(echo $(cat $trace_base/tracing/set_event)) +- [ "$current_events" != "$want_events" ] && return 1 +- +- return 0 +-} +- +-prepare_trace() { +- local trace_base +- +- trace_base=$(get_trace_base) +- # old debugfs interface case. +- if ! [ -d "$trace_base/tracing" ]; then +- mount none -t debugfs $trace_base +- # new tracefs interface case. +- elif ! [ -f "$trace_base/tracing/trace" ]; then +- mount none -t tracefs "$trace_base/tracing" +- fi +- +- if ! [ -f "$trace_base/tracing/trace" ]; then +- echo "WARN: Mount trace failed for kernel module memory analyzing." +- return 1 +- fi +- +- # Active all the wanted trace events. +- echo "$(get_want_events)" > $trace_base/tracing/set_event +- +- # There are three kinds of known applications for module loading: +- # "systemd-udevd", "modprobe" and "insmod". +- # Set them as the global events filter. +- # NOTE: Some kernel may not support this format of filter, anyway +- # the operation will fail and it doesn't matter. +- echo "$(get_event_filter)" > $trace_base/tracing/events/kmem/filter 2>&1 +- echo "$(get_event_filter)" > $trace_base/tracing/events/module/filter 2>&1 +- +- # Set the number of comm-pid if supported. +- if [ -f "$trace_base/tracing/saved_cmdlines_size" ]; then +- # Thanks to filters, 4096 is big enough(also well supported). +- echo 4096 > $trace_base/tracing/saved_cmdlines_size +- fi +- +- # Enable and clear trace data for the first time. +- echo 1 > $trace_base/tracing/tracing_on +- echo > $trace_base/tracing/trace +- echo "Prepare trace success." +- return 0 +-} +- +-order_to_pages() +-{ +- local pages=1 +- local order=$1 +- +- while [ "$order" != 0 ]; do +- order=$((order-1)) +- pages=$(($pages*2)) +- done +- +- echo $pages +-} +- +-parse_trace_data() { +- local module_name tmp_eval pages +- +- cat "$(get_trace_base)/tracing/trace" | while read pid cpu flags ts function args +- do +- # Skip comment lines +- if [ "$pid" = "#" ]; then +- continue +- fi +- +- pid=${pid##*-} +- function=${function%:} +- if [ "$function" = "module_load" ]; then +- # One module is being loaded, save the task pid for tracking. +- # Remove the trailing after whitespace, there may be the module flags. +- module_name=${args%% *} +- # Mark current_module to track the task. +- eval current_module_$pid="$module_name" +- tmp_eval=$(eval echo '${module_loaded_'${module_name}'}') +- if [ -n "$tmp_eval" ]; then +- echo "WARN: \"$module_name\" was loaded multiple times!" +- fi +- eval unset module_loaded_$module_name +- eval nr_alloc_pages_$module_name=0 +- continue +- fi +- +- module_name=$(eval echo '${current_module_'${pid}'}') +- if [ -z "$module_name" ]; then +- continue +- fi +- +- # Once we get here, the task is being tracked(is loading a module). +- if [ "$function" = "module_put" ]; then +- # Mark the module as loaded when the first module_put event happens after module_load. +- tmp_eval=$(eval echo '${nr_alloc_pages_'${module_name}'}') +- echo "$tmp_eval pages consumed by \"$module_name\"" +- eval module_loaded_$module_name=1 +- # Module loading finished, so untrack the task. +- eval unset current_module_$pid +- eval unset nr_alloc_pages_$module_name +- continue +- fi +- +- if [ "$function" = "mm_page_alloc" ]; then +- # Get order first, then convert to actual pages. +- pages=$(echo $args | sed -e 's/.*order=\([0-9]*\) .*/\1/') +- pages=$(order_to_pages "$pages") +- tmp_eval=$(eval echo '${nr_alloc_pages_'${module_name}'}') +- eval nr_alloc_pages_$module_name="$(($tmp_eval+$pages))" +- fi +- done +-} +- +-cleanup_trace() { +- local trace_base +- +- if is_trace_ready; then +- trace_base=$(get_trace_base) +- echo 0 > $trace_base/tracing/tracing_on +- echo > $trace_base/tracing/trace +- echo > $trace_base/tracing/set_event +- echo 0 > $trace_base/tracing/events/kmem/filter +- echo 0 > $trace_base/tracing/events/module/filter +- fi +-} +- +-show_usage() { +- echo "Find out kernel modules with large memory consumption during loading based on trace." +- echo "Usage:" +- echo "1) run it first to setup trace." +- echo "2) run again to parse the trace data if any." +- echo "3) run with \"--cleanup\" option to cleanup trace after use." +-} +- +-if [ "$1" = "--help" ]; then +- show_usage +- exit 0 +-fi +- +-if [ "$1" = "--cleanup" ]; then +- cleanup_trace +- exit 0 +-fi +- +-if is_trace_ready ; then +- echo "tracekomem - Rough memory consumption by loading kernel modules (larger value with better accuracy)" +- parse_trace_data +-else +- prepare_trace +-fi +- +-exit $? +diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh +index 3a2246b4..c9e3ebcb 100755 +--- a/modules.d/99base/module-setup.sh ++++ b/modules.d/99base/module-setup.sh +@@ -39,7 +39,6 @@ install() { + inst_script "$moddir/initqueue.sh" "/sbin/initqueue" + inst_script "$moddir/loginit.sh" "/sbin/loginit" + inst_script "$moddir/rdsosreport.sh" "/sbin/rdsosreport" +- inst_script "$moddir/memtrace-ko.sh" "/sbin/tracekomem" + + [ -e "${initdir}/lib" ] || mkdir -m 0755 -p ${initdir}/lib + mkdir -m 0755 -p ${initdir}/lib/dracut + diff --git a/0043.patch b/0043.patch new file mode 100644 index 0000000..67bf791 --- /dev/null +++ b/0043.patch @@ -0,0 +1,316 @@ +From 7dd8a2f4d351ce8975c0af122732a2a12697c8cc Mon Sep 17 00:00:00 2001 +From: Kairui Song +Date: Wed, 8 Apr 2020 20:09:38 +0800 +Subject: [PATCH] Add 99memstrack module + +memstrack is a new tool to track the overall memory usage and +allocation, which can help off load the improve the builtin module +memory tracing function in dracut. + +With this change, the rd.memdebug=4 behavior is similiar with before, +but the report is defered to pre-pivot, so the memory usage info +during the whole initramfs run is traced. And the ourput format is +changed a bit: + + dracut-pre-pivot[519]: ======== Report format module_summary: ======== + dracut-pre-pivot[519]: Module squashfs using 10.4MB (2658 pages), peak allocation 10.4MB (2671 pages) + dracut-pre-pivot[519]: Module qxl using 3.4MB (865 pages), peak allocation 3.4MB (880 pages) + dracut-pre-pivot[519]: Module crc32c_intel using 2.0MB (519 pages), peak allocation 3.0MB (769 pages) + dracut-pre-pivot[519]: Module serio_raw using 2.0MB (505 pages), peak allocation 3.6MB (918 pages) + dracut-pre-pivot[519]: Module virtio_console using 1.6MB (416 pages), peak allocation 1.6MB (419 pages) + ... snip ... + dracut-pre-pivot[519]: ======== Report format module_summary END ======== + +It now contains more detail and also includes the peak usage which could +be more helpful. + +And now it have a rd.memdebug=5, which will print more detail about +the stack trace of the top memory user, also printed on pri-pivot: + + dracut-pre-pivot[519]: ======== Report format module_top: ======== + dracut-pre-pivot[519]: Top stack usage of module squashfs: + dracut-pre-pivot[519]: (null) Pages: 2658 (peak: 2671) + dracut-pre-pivot[519]: (null) Pages: 2658 (peak: 2671) + dracut-pre-pivot[519]: async_page_fault (0xffffffff81a01149) Pages: 1448 (peak: 1461) + dracut-pre-pivot[519]: do_async_page_fault (0xffffffff8105c509) Pages: 1448 (peak: 1461) + dracut-pre-pivot[519]: do_page_fault (0xffffffff8106296a) Pages: 1448 (peak: 1461) + dracut-pre-pivot[519]: do_user_addr_fault (0xffffffff810626bd) Pages: 1448 (peak: 1461) + dracut-pre-pivot[519]: handle_mm_fault (0xffffffff812940c4) Pages: 1448 (peak: 1461) + dracut-pre-pivot[519]: __handle_mm_fault (0xffffffff81293627) Pages: 1195 (peak: 1208) + dracut-pre-pivot[519]: __do_fault (0xffffffff8128b07e) Pages: 1195 (peak: 1208) + dracut-pre-pivot[519]: filemap_fault (0xffffffff8124c0b9) Pages: 1195 (peak: 1208) + dracut-pre-pivot[519]: __do_page_cache_readahead (0xffffffff812585da) Pages: 1063 (peak: 1076) + dracut-pre-pivot[519]: read_pages (0xffffffff812583c2) Pages: 1063 (peak: 1076) + dracut-pre-pivot[519]: squashfs_readpage squashfs (0xffffffffc0022073) Pages: 1039 (peak: 1052) + dracut-pre-pivot[519]: squashfs_readpage_block squashfs (0xffffffffc0024334) Pages: 744 (peak: 744) + dracut-pre-pivot[519]: squashfs_copy_cache squashfs (0xffffffffc0021a3f) Pages: 744 (peak: 744) + dracut-pre-pivot[519]: pagecache_get_page (0xffffffff8124abf7) Pages: 744 (peak: 744) + dracut-pre-pivot[519]: __page_cache_alloc (0xffffffff81247df6) Pages: 744 (peak: 744) + dracut-pre-pivot[519]: alloc_pages_current (0xffffffff812cdca7) Pages: 744 (peak: 744) + dracut-pre-pivot[519]: __alloc_pages_nodemask (0xffffffff812b3107) Pages: 744 (peak: 744) + dracut-pre-pivot[519]: __alloc_pages_nodemask (0xffffffff812b3107) Pages: 1488 (peak: 1488) + dracut-pre-pivot[519]: Top stack usage of module qxl: + dracut-pre-pivot[519]: (null) Pages: 865 (peak: 880) + dracut-pre-pivot[519]: entry_SYSCALL_64_after_hwframe (0xffffffff81a0008c) Pages: 855 (peak: 858) + dracut-pre-pivot[519]: do_syscall_64 (0xffffffff81002a5a) Pages: 855 (peak: 858) + dracut-pre-pivot[519]: __x64_sys_finit_module (0xffffffff8117ccea) Pages: 811 (peak: 811) + dracut-pre-pivot[519]: __do_sys_finit_module (0xffffffff8117cc6e) Pages: 811 (peak: 811) + dracut-pre-pivot[519]: load_module (0xffffffff8117c6be) Pages: 802 (peak: 802) + dracut-pre-pivot[519]: do_init_module (0xffffffff81179e72) Pages: 802 (peak: 802) + dracut-pre-pivot[519]: do_one_initcall (0xffffffff81000d5a) Pages: 802 (peak: 802) + dracut-pre-pivot[519]: serio_raw_poll serio_raw (0xffffffffc0200054) Pages: 802 (peak: 802) + dracut-pre-pivot[519]: __pci_register_driver (0xffffffff81557804) Pages: 802 (peak: 802) + dracut-pre-pivot[519]: driver_register (0xffffffff8167ed24) Pages: 802 (peak: 802) + dracut-pre-pivot[519]: bus_add_driver (0xffffffff8167cbb2) Pages: 801 (peak: 801) + dracut-pre-pivot[519]: driver_attach (0xffffffff8167d28e) Pages: 801 (peak: 801) + dracut-pre-pivot[519]: bus_for_each_dev (0xffffffff8167b62c) Pages: 801 (peak: 801) + dracut-pre-pivot[519]: __driver_attach (0xffffffff8167e18f) Pages: 801 (peak: 801) + dracut-pre-pivot[519]: device_driver_attach (0xffffffff8167e0ed) Pages: 801 (peak: 801) + dracut-pre-pivot[519]: driver_probe_device (0xffffffff8167de6c) Pages: 801 (peak: 801) + dracut-pre-pivot[519]: really_probe (0xffffffff8167d9c9) Pages: 801 (peak: 801) + dracut-pre-pivot[519]: pci_device_probe (0xffffffff81559627) Pages: 801 (peak: 801) + dracut-pre-pivot[519]: local_pci_probe (0xffffffff81557f98) Pages: 801 (peak: 801) + dracut-pre-pivot[519]: qxl_pci_probe qxl (0xffffffffc01f0387) Pages: 773 (peak: 773) + dracut-pre-pivot[519]: drm_fbdev_generic_setup drm_kms_helper (0xffffffffc01b30c5) Pages: 773 (peak: 773) + dracut-pre-pivot[519]: drm_fbdev_client_hotplug drm_kms_helper (0xffffffffc01b2656) Pages: 773 (peak: 773) + dracut-pre-pivot[519]: __drm_fb_helper_initial_config_and_unlock drm_kms_helper (0xffffffffc01b1a28) Pages: 770 (peak: 770) + dracut-pre-pivot[519]: drm_fb_helper_generic_probe drm_kms_helper (0xffffffffc01b2fa5) Pages: 770 (peak: 770) + dracut-pre-pivot[519]: vzalloc (0xffffffff812aa39c) Pages: 770 (peak: 770) + dracut-pre-pivot[519]: __vmalloc_node_range (0xffffffff812aa200) Pages: 768 (peak: 768) + ... snip ... + ======== Report format module_top END ======== + +This could be very helpful for debuging memory usage issues. +--- + dracut.cmdline.7.asc | 16 ++++++++++------ + dracut.spec | 2 ++ + modules.d/99base/dracut-lib.sh | 2 +- + modules.d/99memstrack/memstrack-report.sh | 23 +++++++++++++++++++++++ + modules.d/99memstrack/memstrack-start.sh | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + modules.d/99memstrack/memstrack.service | 13 +++++++++++++ + modules.d/99memstrack/module-setup.sh | 27 +++++++++++++++++++++++++++ + 7 files changed, 144 insertions(+), 7 deletions(-) + +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index c53601ea..4d4970c8 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -188,8 +188,8 @@ It should be attached to any report about dracut problems. + _/run/initramfs/init.log_. + If "quiet" is set, it also logs to the console. + +-**rd.memdebug=[0-3]**:: +- Print memory usage info at various points, set the verbose level from 0 to 4. ++**rd.memdebug=[0-5]**:: ++ Print memory usage info at various points, set the verbose level from 0 to 5. + + + Higher level means more debugging output: + + +@@ -198,10 +198,14 @@ It should be attached to any report about dracut problems. + 1 - partial /proc/meminfo + 2 - /proc/meminfo + 3 - /proc/meminfo + /proc/slabinfo +- 4 - /proc/meminfo + /proc/slabinfo + tracekomem +- NOTE: tracekomem is a shell script utilizing kernel trace to track +- the rough total memory consumption of kernel modules during +- loading. It may override other trace configurations. ++ 4 - /proc/meminfo + /proc/slabinfo + memstrack summary ++ NOTE: memstrack is a memory tracing tool that tracks the total memory ++ consumption, and peak memory consumption of each kernel modules ++ and userspace progress during the whole initramfs runtime, report ++ is genereted and the end of initramsfs run. ++ 5 - /proc/meminfo + /proc/slabinfo + memstrack (with top memory stacktrace) ++ NOTE: memstrack (with top memory stacktrace) will print top memory ++ allocation stack traces during the whole initramfs runtime. + ---- + + **rd.break**:: +diff --git a/dracut.spec b/dracut.spec +index 0369dde6..1eb47402 100644 +--- a/dracut.spec ++++ b/dracut.spec +@@ -77,6 +77,7 @@ Requires: xz + Requires: gzip + + %if 0%{?fedora} || 0%{?rhel} ++Recommends: memstrack + Recommends: hardlink + Recommends: pigz + Recommends: kpartx +@@ -403,6 +404,7 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne + %{dracutlibdir}/modules.d/98syslog + %{dracutlibdir}/modules.d/98usrmount + %{dracutlibdir}/modules.d/99base ++%{dracutlibdir}/modules.d/99memstrack + %{dracutlibdir}/modules.d/99fs-lib + %{dracutlibdir}/modules.d/99shutdown + %attr(0644,root,root) %ghost %config(missingok,noreplace) %{_localstatedir}/log/dracut.log +diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh +index b7020892..e602bacb 100755 +--- a/modules.d/99base/dracut-lib.sh ++++ b/modules.d/99base/dracut-lib.sh +@@ -1187,7 +1187,7 @@ are_lists_eq() { + + setmemdebug() { + if [ -z "$DEBUG_MEM_LEVEL" ]; then +- export DEBUG_MEM_LEVEL=$(getargnum 0 0 3 rd.memdebug) ++ export DEBUG_MEM_LEVEL=$(getargnum 0 0 5 rd.memdebug) + fi + } + +diff --git a/modules.d/99memstrack/memstrack-report.sh b/modules.d/99memstrack/memstrack-report.sh +new file mode 100755 +index 00000000..241e8621 +--- /dev/null ++++ b/modules.d/99memstrack/memstrack-report.sh +@@ -0,0 +1,23 @@ ++#!/usr/bin/env bash ++. /lib/dracut-lib.sh ++ ++if ! [ "$DEBUG_MEM_LEVEL" -ge 4 ]; then ++ exit 0 ++fi ++ ++if type -P systemctl >/dev/null; then ++ systemctl stop memstrack.service ++else ++ get_pid_of_tracer () { ++ local _user _pid _rest ++ read _user _pid _rest <<< $(ps aux | grep [m]emstrack | head -1) ++ echo $_pid ++ } ++ ++ kill -s INT $(get_pid_of_tracer) ++ while [[ -n $(get_pid_of_tracer) ]]; do ++ sleep 1 ++ done ++fi ++ ++cat /.memstrack +diff --git a/modules.d/99memstrack/memstrack-start.sh b/modules.d/99memstrack/memstrack-start.sh +new file mode 100755 +index 00000000..5aa73efe +--- /dev/null ++++ b/modules.d/99memstrack/memstrack-start.sh +@@ -0,0 +1,68 @@ ++#!/bin/sh ++# Mount kernel debug fs so debug tools can work. ++# memdebug=4 and memdebug=5 requires debug fs to be mounted. ++# And there is no need to umount it. ++ ++type getargnum >/dev/null 2>&1 || . /lib/dracut-lib.sh ++ ++# "sys/kernel/tracing" has the priority if exists. ++get_trace_base() { ++ # trace access through debugfs would be obsolete if "/sys/kernel/tracing" is available. ++ if [ -d "/sys/kernel/tracing" ]; then ++ echo "/sys/kernel" ++ else ++ echo "/sys/kernel/debug" ++ fi ++} ++ ++is_debugfs_ready() { ++ [ -f "$(get_trace_base)/tracing/trace" ] ++} ++ ++prepare_debugfs() { ++ local trace_base ++ ++ trace_base=$(get_trace_base) ++ # old debugfs interface case. ++ if ! [ -d "$trace_base/tracing" ]; then ++ mount none -t debugfs $trace_base ++ # new tracefs interface case. ++ elif ! [ -f "$trace_base/tracing/trace" ]; then ++ mount none -t tracefs "$trace_base/tracing" ++ fi ++ ++ if ! [ -f "$trace_base/tracing/trace" ]; then ++ echo "WARN: failed to mount debugfs" ++ return 1 ++ fi ++} ++ ++if ! is_debugfs_ready ; then ++ prepare_debugfs ++fi ++ ++if [ -n "$DEBUG_MEM_LEVEL" ]; then ++ if [ "$DEBUG_MEM_LEVEL" -ge 5 ]; then ++ echo "memstrack - will report kernel module memory usage summary and top allocation stack" ++ memstrack --report module_summary,module_top --notui --throttle 80 -o /.memstrack & ++ elif [ "$DEBUG_MEM_LEVEL" -ge 4 ]; then ++ echo "memstrack - will report memory usage summary" ++ memstrack --report module_summary --notui --throttle 80 -o /.memstrack & ++ else ++ exit 0; ++ fi ++fi ++ ++PID=$! ++RET=$? ++ ++if [ $RET -ne 0 ]; then ++ echo "Failed to start memstrack, exit status: $RET" ++ exit $RET ++fi ++ ++# Wait a second for memstrack to setup everything, avoid missing any event ++sleep 1 ++ ++echo $PID > /run/memstrack.pid ++disown +diff --git a/modules.d/99memstrack/memstrack.service b/modules.d/99memstrack/memstrack.service +new file mode 100644 +index 00000000..6b47adef +--- /dev/null ++++ b/modules.d/99memstrack/memstrack.service +@@ -0,0 +1,13 @@ ++[Unit] ++Description=Memstrack Anylazing Service ++DefaultDependencies=no ++Before=dracut-cmdline.service systemd-udevd.service local-fs-pre.target ++IgnoreOnIsolate=true ++ ++[Service] ++Type=simple ++ExecStart=/bin/memstrack-start ++PIDFile=/run/memstrack.pid ++StandardInput=null ++StandardOutput=syslog+console ++StandardError=syslog+console +diff --git a/modules.d/99memstrack/module-setup.sh b/modules.d/99memstrack/module-setup.sh +new file mode 100755 +index 00000000..d5bacb4d +--- /dev/null ++++ b/modules.d/99memstrack/module-setup.sh +@@ -0,0 +1,27 @@ ++#!/usr/bin/bash ++ ++check() { ++ if type -P memstrack >/dev/null; then ++ dinfo "memstrack is available" ++ return 0 ++ fi ++ ++ dinfo "memstrack is not available" ++ dinfo "If you need to use rd.memdebug>=4, please install memstrack" ++ ++ return 1 ++} ++ ++depends() { ++ return 0 ++} ++ ++install() { ++ inst "/bin/memstrack" "/bin/memstrack" ++ ++ inst "$moddir/memstrack-start.sh" "/bin/memstrack-start" ++ inst_hook cleanup 99 "$moddir/memstrack-report.sh" ++ ++ inst "$moddir/memstrack.service" "$systemdsystemunitdir/memstrack.service" ++ systemctl -q --root "$initdir" add-wants initrd.target memstrack.service ++} + diff --git a/0044.patch b/0044.patch new file mode 100644 index 0000000..e432e1e --- /dev/null +++ b/0044.patch @@ -0,0 +1,29 @@ +From faea4e4ddb10f697590b80f8f17181341c537262 Mon Sep 17 00:00:00 2001 +From: Peter Georg +Date: Tue, 21 Apr 2020 21:34:38 +0200 +Subject: [PATCH] Always pull in machinery to read ifcfg files + +So far machinery is only pulled in if the user has not yet included any +ifcfg files. +--- + modules.d/35network-manager/module-setup.sh | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/modules.d/35network-manager/module-setup.sh b/modules.d/35network-manager/module-setup.sh +index 8fc3114d..ad2a1534 100755 +--- a/modules.d/35network-manager/module-setup.sh ++++ b/modules.d/35network-manager/module-setup.sh +@@ -47,10 +47,8 @@ install() { + fi + + # We don't install the ifcfg files from the host automatically. +- # But if the user chooses to include them, we pull in the machinery to read them. +- if ! [[ -d "$initdir/etc/sysconfig/network-scripts" ]]; then +- inst_libdir_file "NetworkManager/$_nm_version/libnm-settings-plugin-ifcfg-rh.so" +- fi ++ # But the user might choose to include them, so we pull in the machinery to read them. ++ inst_libdir_file "NetworkManager/$_nm_version/libnm-settings-plugin-ifcfg-rh.so" + + _arch=${DRACUT_ARCH:-$(uname -m)} + + diff --git a/0045.patch b/0045.patch new file mode 100644 index 0000000..f90912d --- /dev/null +++ b/0045.patch @@ -0,0 +1,66 @@ +From 586a56c2877ae8c0b365c3a6c69cd4ff8b27bf0c Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 24 Apr 2020 11:05:49 +0200 +Subject: [PATCH] Install crypto modules in 90kernel-modules + +We don't want to play catch up with hash and encryption algorithms. +To be safe, just use the hammer and include all crypto. + +Fixes https://github.com/dracutdevs/dracut/issues/802 +--- + modules.d/90btrfs/module-setup.sh | 2 -- + modules.d/90crypt/module-setup.sh | 6 +----- + modules.d/90kernel-modules/module-setup.sh | 9 +++++++++ + 3 files changed, 10 insertions(+), 7 deletions(-) + +diff --git a/modules.d/90btrfs/module-setup.sh b/modules.d/90btrfs/module-setup.sh +index 66a254e1..79f89a50 100755 +--- a/modules.d/90btrfs/module-setup.sh ++++ b/modules.d/90btrfs/module-setup.sh +@@ -26,8 +26,6 @@ depends() { + # called by dracut + installkernel() { + instmods btrfs +- # Make sure btfs can use fast crc32c implementations where available (bsc#1011554) +- instmods crc32c-intel + } + + # called by dracut +diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh +index 3ee4c545..a9dda734 100755 +--- a/modules.d/90crypt/module-setup.sh ++++ b/modules.d/90crypt/module-setup.sh +@@ -25,11 +25,7 @@ depends() { + # called by dracut + installkernel() { + hostonly="" instmods drbg +- arch=$(uname -m) +- [[ $arch == x86_64 ]] && arch=x86 +- [[ $arch == s390x ]] && arch=s390 +- [[ $arch == aarch64 ]] && arch=arm64 +- instmods dm_crypt =crypto =drivers/crypto =arch/$arch/crypto ++ instmods dm_crypt + } + + # called by dracut +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index bc3810cc..28d291eb 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -104,6 +104,15 @@ installkernel() { + elif [[ "${host_fs_types[*]}" ]]; then + hostonly='' instmods "${host_fs_types[@]}" + fi ++ ++ arch=${DRACUT_ARCH:-$(uname -m)} ++ ++ # We don't want to play catch up with hash and encryption algorithms. ++ # To be safe, just use the hammer and include all crypto. ++ [[ $arch == x86_64 ]] && arch=x86 ++ [[ $arch == s390x ]] && arch=s390 ++ [[ $arch == aarch64 ]] && arch=arm64 ++ instmods "=crypto" "=arch/$arch/crypto" "=drivers/crypto" + fi + : + } + diff --git a/0046.patch b/0046.patch new file mode 100644 index 0000000..8cd3b0f --- /dev/null +++ b/0046.patch @@ -0,0 +1,53 @@ +From 5bfebf0f04c8e88a0447d5f75c7ec13951fa610d Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 7 Apr 2020 22:26:25 +0200 +Subject: [PATCH] 90crypt/module-setup.sh: try to catch kernel config changes + +If a crypto kernel module changes from compiled in to module, the +encrypted disk might fail to open, because the kernel module was +not included in the initramfs. + +This patch tries heuristically to catch such modules. + +Fixes https://github.com/dracutdevs/dracut/issues/706 +--- + modules.d/90crypt/module-setup.sh | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh +index a9dda734..3bce2411 100755 +--- a/modules.d/90crypt/module-setup.sh ++++ b/modules.d/90crypt/module-setup.sh +@@ -26,6 +26,31 @@ depends() { + installkernel() { + hostonly="" instmods drbg + instmods dm_crypt ++ ++ # in case some of the crypto modules moved from compiled in ++ # to module based, try to install those modules ++ # best guess ++ [[ $hostonly ]] || [[ $mount_needs ]] && { ++ # dmsetup returns s.th. like ++ # cryptvol: 0 2064384 crypt aes-xts-plain64 :64:logon:cryptsetup:.... ++ dmsetup table | while read name _ _ is_crypt cipher _; do ++ [[ $is_crypt != "crypt" ]] && continue ++ # get the device name ++ name=/dev/$(dmsetup info -c --noheadings -o blkdevname ${name%:}) ++ # check if the device exists as a key in our host_fs_types ++ if [[ ${host_fs_types[$name]+_} ]]; then ++ # split the cipher aes-xts-plain64 in pieces ++ _OLD_IFS=$IFS ++ IFS='-:' ++ set -- $cipher ++ IFS=$_OLD_IFS ++ # try to load the cipher part with "crypto-" prepended ++ # in non-hostonly mode ++ hostonly= instmods $(for k in "$@"; do echo "crypto-$k";done) ++ fi ++ done ++ } ++ return 0 + } + + # called by dracut + diff --git a/0047.patch b/0047.patch new file mode 100644 index 0000000..f12f1d6 --- /dev/null +++ b/0047.patch @@ -0,0 +1,24 @@ +From c6a2ebffe5812bf45a17d90208d9bb1044b6dba0 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 30 Apr 2020 20:42:27 +0200 +Subject: [PATCH] 90kernel-modules/module-setup.sh: add sg kernel module + +Fixes udevd messages about failure of `modprobe -bv sg`. +--- + 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 28d291eb..b3aa75f3 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -25,7 +25,7 @@ installkernel() { + } + + install_block_modules () { +- hostonly='' instmods sr_mod sd_mod scsi_dh ata_piix ++ hostonly='' instmods sg sr_mod sd_mod scsi_dh ata_piix + instmods \ + scsi_dh_rdac scsi_dh_emc scsi_dh_alua \ + =ide nvme vmd \ + diff --git a/0048.patch b/0048.patch new file mode 100644 index 0000000..3584031 --- /dev/null +++ b/0048.patch @@ -0,0 +1,26 @@ +From cb9e6881dde7ec34e11f6f38727602d6d841a04f Mon Sep 17 00:00:00 2001 +From: Derek Hageman +Date: Thu, 30 Apr 2020 18:40:13 -0600 +Subject: [PATCH] 90crypt/module-setup.sh: fix force on multiple lines + +The first line in crypttab with a "force" option causes all subsequent +lines to be included as if they also had it set because the variable +used to track it is not reset between loop iterations. So fix that by +just setting it to empty before the check for the force option. +--- + modules.d/90crypt/module-setup.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh +index 3bce2411..e3d6338f 100755 +--- a/modules.d/90crypt/module-setup.sh ++++ b/modules.d/90crypt/module-setup.sh +@@ -113,6 +113,7 @@ install() { + set -- ${luksoptions} + IFS="${OLD_IFS}" + ++ forceentry="" + while [ $# -gt 0 ]; do + case $1 in + force) + diff --git a/0049.patch b/0049.patch new file mode 100644 index 0000000..a7349c6 --- /dev/null +++ b/0049.patch @@ -0,0 +1,25 @@ +From 32dfd41688a0a2aee59a62dd661c808a935d91a4 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Mon, 4 May 2020 10:09:07 +0200 +Subject: [PATCH] Fix test in lsinitrd + +If $uefi is empty, this evaluated to true previously, +resulting in "initrd in UEFI: : 13M". +--- + lsinitrd.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lsinitrd.sh b/lsinitrd.sh +index b5c73f62..ea0c7f62 100755 +--- a/lsinitrd.sh ++++ b/lsinitrd.sh +@@ -206,7 +206,7 @@ if [ "$bin" = "MZ" ]; then + fi + + if (( ${#filenames[@]} <= 0 )) && [[ -z "$unpack" ]] && [[ -z "$unpackearly" ]]; then +- if [ -n $uefi ]; then ++ if [ -n "$uefi" ]; then + echo -n "initrd in UEFI: $uefi: " + du -h $image | while read a b || [ -n "$a" ]; do echo $a;done + if [ -f "$TMPDIR/osrel.txt" ]; then + diff --git a/0050.patch b/0050.patch new file mode 100644 index 0000000..71390b6 --- /dev/null +++ b/0050.patch @@ -0,0 +1,43 @@ +From ff366790a6e30175f243d54c2922a8c781030ede Mon Sep 17 00:00:00 2001 +From: Javier Martinez Canillas +Date: Tue, 5 May 2020 19:11:18 +0200 +Subject: [PATCH] 51-dracut-rescue.install: Don't use BLS fragment shipped by + kernel package + +For the GRUB and zipl bootloaders the BLS fragment that is shipped by the +kernel package is used, so the same fragment is used for the rescue entry. + +But there are cases where this BLS fragment is not suitable. For example, +if the boot directory is on a btrfs subvolume the path in the linux and +initrd fiels need to be adjusted with the real path. Otherwise GRUB won't +be able to read them. + +The GRUB and zipl kernel-install plugins already take care of this before +installing the BLS fragments, so just copy the installed fragment that has +the updated paths instead of using the BLS shipped by the kernel package. + +Resolves: rhbz#1827882 + +Signed-off-by: Javier Martinez Canillas +--- + 51-dracut-rescue.install | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/51-dracut-rescue.install b/51-dracut-rescue.install +index b4ed1783..b2b3b9ef 100755 +--- a/51-dracut-rescue.install ++++ b/51-dracut-rescue.install +@@ -106,7 +106,11 @@ case "$COMMAND" in + echo "initrd $BOOT_DIR/initrd" + } > $LOADER_ENTRY + else +- cp -aT "${KERNEL_IMAGE%/*}/bls.conf" $LOADER_ENTRY ++ if [[ -e "${BLS_DIR}/${MACHINE_ID}-${KERNEL_VERSION}.conf" ]]; then ++ cp -aT "${BLS_DIR}/${MACHINE_ID}-${KERNEL_VERSION}.conf" $LOADER_ENTRY ++ else ++ cp -aT "${KERNEL_IMAGE%/*}/bls.conf" $LOADER_ENTRY ++ fi + sed -i 's/'$KERNEL_VERSION'/0-rescue-'${MACHINE_ID}'/' $LOADER_ENTRY + fi + + diff --git a/0051.patch b/0051.patch new file mode 100644 index 0000000..54cd1c5 --- /dev/null +++ b/0051.patch @@ -0,0 +1,25 @@ +From 1ec7b694b55c70d06f262a96c320709b70d20bcb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tomasz=20Pawe=C5=82=20Gajc?= +Date: Mon, 11 May 2020 14:49:06 +0200 +Subject: [PATCH] install dependant libs too + +By default rng-tools are compiled with pkcs11 support. +Make sure opensc-pkcs11.so library is installed inside initramfs to prevent error on boot +--- + modules.d/06rngd/module-setup.sh | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/modules.d/06rngd/module-setup.sh b/modules.d/06rngd/module-setup.sh +index 354bd0bb..f07a0cb9 100644 +--- a/modules.d/06rngd/module-setup.sh ++++ b/modules.d/06rngd/module-setup.sh +@@ -33,6 +33,8 @@ check() { + install() { + inst rngd + inst_simple "${moddir}/rngd.service" "${systemdsystemunitdir}/rngd.service" ++ # make sure dependant libs are installed too ++ inst_libdir_file opensc-pkcs11.so + + systemctl -q --root "$initdir" add-wants sysinit.target rngd.service + } + diff --git a/0052.patch b/0052.patch new file mode 100644 index 0000000..1a7d9a6 --- /dev/null +++ b/0052.patch @@ -0,0 +1,34 @@ +From 424f01e2a0ac0b329e68eb63048cf0d6d9c74d37 Mon Sep 17 00:00:00 2001 +From: Kairui Song +Date: Wed, 27 May 2020 22:07:37 +0800 +Subject: [PATCH] 99memstrack: hook script should not call exit + +With memstrack module, rd.break may not work because the hook scripts +are sourced, not executed, so the exit call will make pre-pivot queue +exit early. See 98dracut-systemd/dracut-pre-pivot.sh, everything after +"source_hook cleanup" will be ignored. + +Replace with return instead. + +Credits go to Lukas Nykryn who helped discover and +debug this issue. + +Signed-off-by: Kairui Song +--- + modules.d/99memstrack/memstrack-report.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/99memstrack/memstrack-report.sh b/modules.d/99memstrack/memstrack-report.sh +index 241e8621..3de55bd1 100755 +--- a/modules.d/99memstrack/memstrack-report.sh ++++ b/modules.d/99memstrack/memstrack-report.sh +@@ -2,7 +2,7 @@ + . /lib/dracut-lib.sh + + if ! [ "$DEBUG_MEM_LEVEL" -ge 4 ]; then +- exit 0 ++ return 0 + fi + + if type -P systemctl >/dev/null; then + diff --git a/0053.patch b/0053.patch new file mode 100644 index 0000000..fb4ce84 --- /dev/null +++ b/0053.patch @@ -0,0 +1,39 @@ +From 2a611328652388b809a379403ceec126cb55819f Mon Sep 17 00:00:00 2001 +From: Kairui Song +Date: Wed, 27 May 2020 21:59:55 +0800 +Subject: [PATCH] Remove cleanup_trace_mem calls + +In commit 49c4172 all shell based memory tracing functions are removed, +there are some left over. Remove them as well. + +Signed-off-by: Kairui Song +--- + modules.d/98dracut-systemd/dracut-pre-pivot.sh | 1 - + modules.d/99base/init.sh | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/modules.d/98dracut-systemd/dracut-pre-pivot.sh b/modules.d/98dracut-systemd/dracut-pre-pivot.sh +index 96e6f8ca..cc70e3c3 100755 +--- a/modules.d/98dracut-systemd/dracut-pre-pivot.sh ++++ b/modules.d/98dracut-systemd/dracut-pre-pivot.sh +@@ -14,7 +14,6 @@ make_trace_mem "hook pre-pivot" '1:shortmem' '2+:mem' '3+:slab' + getarg 'rd.break=pre-pivot' 'rdbreak=pre-pivot' && emergency_shell -n pre-pivot "Break pre-pivot" + source_hook pre-pivot + +-cleanup_trace_mem + # pre pivot cleanup scripts are sourced just before we switch over to the new root. + getarg 'rd.break=cleanup' 'rdbreak=cleanup' && emergency_shell -n cleanup "Break cleanup" + source_hook cleanup +diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh +index 148ce831..f70a811e 100755 +--- a/modules.d/99base/init.sh ++++ b/modules.d/99base/init.sh +@@ -271,7 +271,6 @@ getarg 'rd.break=pre-pivot' -d 'rdbreak=pre-pivot' && emergency_shell -n pre-piv + source_hook pre-pivot + + make_trace_mem "hook cleanup" '1:shortmem' '2+:mem' '3+:slab' +-cleanup_trace_mem + # pre pivot cleanup scripts are sourced just before we switch over to the new root. + getarg 'rd.break=cleanup' -d 'rdbreak=cleanup' && emergency_shell -n cleanup "Break cleanup" + source_hook cleanup + diff --git a/0054.patch b/0054.patch new file mode 100644 index 0000000..8ca33a3 --- /dev/null +++ b/0054.patch @@ -0,0 +1,60 @@ +From f769154bccf22d2b5caf5e4888f88bf7edde2662 Mon Sep 17 00:00:00 2001 +From: Alexander Tsoy +Date: Mon, 25 May 2020 19:02:05 +0300 +Subject: [PATCH] dracut-functions: fix find_binary() to return full path + +Fixes: a01204202b30 (Allow running on a cross-compiled rootfs) +--- + dracut-functions.sh | 21 +++++++++++++-------- + 1 file changed, 13 insertions(+), 8 deletions(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 3cb9c7af..b5c28248 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -41,31 +41,36 @@ str_ends() { [ "${1%*"$2"}" != "$1" ]; } + # search in the usual places to find the binary. + find_binary() { + local _delim ++ local _path + local l + local p + [[ -z ${1##/*} ]] || _delim="/" + + if [[ "$1" == *.so* ]]; then + for l in libdirs ; do +- if { $DRACUT_LDD "$dracutsysrootdir$l$_delim$1" &>/dev/null; }; then +- printf "%s\n" "$1" ++ _path="${l}${_delim}${1}" ++ if { $DRACUT_LDD "${dracutsysrootdir}${_path}" &>/dev/null; }; then ++ printf "%s\n" "${_path}" + return 0 + fi + done +- if { $DRACUT_LDD "$dracutsysrootdir$_delim$1" &>/dev/null; }; then +- printf "%s\n" "$1" ++ _path="${_delim}${1}" ++ if { $DRACUT_LDD "${dracutsysrootdir}${_path}" &>/dev/null; }; then ++ printf "%s\n" "${_path}" + return 0 + fi + fi + if [[ "$1" == */* ]]; then +- if [[ -L $dracutsysrootdir$_delim$1 ]] || [[ -x $dracutsysrootdir$_delim$1 ]]; then +- printf "%s\n" "$1" ++ _path="${_delim}${1}" ++ if [[ -L ${dracutsysrootdir}${_path} ]] || [[ -x ${dracutsysrootdir}${_path} ]]; then ++ printf "%s\n" "${_path}" + return 0 + fi + fi + for p in $DRACUT_PATH ; do +- if [[ -L $dracutsysrootdir$p$_delim$1 ]] || [[ -x $dracutsysrootdir$p$_delim$1 ]]; then +- printf "%s\n" "$1" ++ _path="${p}${_delim}${1}" ++ if [[ -L ${dracutsysrootdir}${_path} ]] || [[ -x ${dracutsysrootdir}${_path} ]]; then ++ printf "%s\n" "${_path}" + return 0 + fi + done + diff --git a/0055.patch b/0055.patch new file mode 100644 index 0000000..33482a9 --- /dev/null +++ b/0055.patch @@ -0,0 +1,38 @@ +From 50cc23ba32b0fda63eff7623b529dbeb4e6a38c6 Mon Sep 17 00:00:00 2001 +From: Alexander Tsoy +Date: Mon, 25 May 2020 17:49:20 +0300 +Subject: [PATCH] busybox: simplify listing of supported utilities + +'--list' option is supported since busybox-1.20.0, which was released +in 2010. +--- + modules.d/05busybox/module-setup.sh | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/modules.d/05busybox/module-setup.sh b/modules.d/05busybox/module-setup.sh +index ecbd6a13..5d88c5d1 100755 +--- a/modules.d/05busybox/module-setup.sh ++++ b/modules.d/05busybox/module-setup.sh +@@ -14,15 +14,16 @@ depends() { + + # called by dracut + install() { +- local _i _progs _path _busybox ++ local _i _path _busybox ++ local _progs=() + _busybox=$(type -P busybox) + inst $_busybox /usr/bin/busybox +- for _i in $($_busybox | sed -ne '1,/Currently/!{s/,//g; s/busybox//g; p}') +- do +- _progs="$_progs $_i" ++ for _i in $($_busybox --list); do ++ [[ ${_i} == busybox ]] && continue ++ _progs+=("${_i}") + done + +- for _i in $_progs; do ++ for _i in "${_progs[@]}"; do + _path=$(find_binary "$_i") + [ -z "$_path" ] && continue + ln_r /usr/bin/busybox $_path + diff --git a/0056.patch b/0056.patch new file mode 100644 index 0000000..91caf58 --- /dev/null +++ b/0056.patch @@ -0,0 +1,52 @@ +From b448655ba7cf46d25cbc2845e30ec559a487fc1e Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 29 May 2020 10:30:26 +0200 +Subject: [PATCH] CI: remove Fedora 30, add Fedora 32 + +--- + .github/workflows/{fedora-30.yml => fedora-32.yml} | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/.github/workflows/fedora-30.yml b/.github/workflows/fedora-32.yml +similarity index 84% +rename from .github/workflows/fedora-30.yml +rename to .github/workflows/fedora-32.yml +index 1a3d3e8d..589bf176 100644 +--- a/.github/workflows/fedora-30.yml ++++ b/.github/workflows/fedora-32.yml +@@ -1,6 +1,6 @@ + ## The test container is created with https://github.com/dracutdevs/fedora-container + +-name: Fedora-30 ++name: Fedora-32 + + on: + push: +@@ -14,7 +14,7 @@ jobs: + test: + runs-on: ubuntu-latest + container: +- image: quay.io/haraldh/dracut-fedora:30 ++ image: quay.io/haraldh/dracut-fedora:32 + options: "--privileged" + timeout-minutes: 45 + strategy: +@@ -32,11 +32,17 @@ jobs: + "15", + "17", + "20", ++ "21", + "30", ++ "31", + "35", ++ "36", + "40", ++ "41", + "50", ++ "51", + "60", ++ "61", + "99", + ] + fail-fast: false + diff --git a/0057.patch b/0057.patch new file mode 100644 index 0000000..c040284 --- /dev/null +++ b/0057.patch @@ -0,0 +1,34 @@ +From c800d1a7b943f8ca86b9756fbaa4cd2a5644ad44 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 29 May 2020 10:49:47 +0200 +Subject: [PATCH] dracut.cmdline.7.asc: clarify usage of `rd.lvm.vg` and + `rd.lvm.lv` + +Fixes: https://github.com/dracutdevs/dracut/issues/816 +--- + dracut.cmdline.7.asc | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index 4d4970c8..751f5276 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -281,12 +281,12 @@ LVM + disable LVM detection + + **rd.lvm.vg=**____:: +- only activate the volume groups with the given name. rd.lvm.vg can be +- specified multiple times on the kernel command line. ++ only activate all logical volumes in the the volume groups with the given name. ++ rd.lvm.vg can be specified multiple times on the kernel command line. + +-**rd.lvm.lv=**____:: +- only activate the logical volumes with the given name. rd.lvm.lv can be +- specified multiple times on the kernel command line. ++**rd.lvm.lv=**__/__:: ++ only activate the logical volumes with the given name. ++ rd.lvm.lv can be specified multiple times on the kernel command line. + + **rd.lvm.conf=0**:: + remove any _/etc/lvm/lvm.conf_, which may exist in the initramfs + diff --git a/0058.patch b/0058.patch new file mode 100644 index 0000000..52e8c61 --- /dev/null +++ b/0058.patch @@ -0,0 +1,31 @@ +From 7169e5f0e43cdc9a0bdc93de33f3404d8c461acd Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 29 May 2020 11:03:19 +0200 +Subject: [PATCH] dracut.conf.5.asc: document how to config --no-compress in + the config + +Fixes: https://github.com/dracutdevs/dracut/issues/824 +--- + dracut.conf.5.asc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc +index 937f5423..f206f2f7 100644 +--- a/dracut.conf.5.asc ++++ b/dracut.conf.5.asc +@@ -80,12 +80,13 @@ Configuration files must have the extension .conf; other extensions are ignored. + Specify additional files to include in the initramfs, separated by spaces, + if they exist. + +-*compress=*"__{bzip2|lzma|xz|gzip|lzo|lz4|zstd|}__":: ++*compress=*"__{cat|bzip2|lzma|xz|gzip|lzo|lz4|zstd|}__":: + Compress the generated initramfs using the passed compression program. If + you pass it just the name of a compression program, it will call that + program with known-working arguments. If you pass arguments, it will be called + with exactly those arguments. Depending on what you pass, this may result in + an initramfs that the kernel cannot decompress. ++ To disable compression, use "cat". + + *do_strip=*"__{yes|no}__":: + Strip binaries in the initramfs (default=yes) + diff --git a/0059.patch b/0059.patch new file mode 100644 index 0000000..e0f3111 --- /dev/null +++ b/0059.patch @@ -0,0 +1,38 @@ +From eb770a4a207b2e9e3080068c1df22b69ed44d4b5 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Thu, 7 May 2020 07:48:12 +0200 +Subject: [PATCH] network-manager: set kernel hostname from the command line + +Since commit ff70adf873ef ("initrd: save hostname to a file in /run"), +the initrd generator of NetworkManager parses the hostname from 'ip=' +options of the kernel command line and writes it to +/run/NetworkManager/initrd/hostname. + +When that file exists, set the kernel hostname. + +In presence of multiple hostnames in the command line, the last one +wins. Hostnames from command line always have precedence over ones +received through DHCP. This is a bit different from the legacy network +module that gives higher precedence to the hostname (from DHCP or +command line) of the last interface that is brought up, which depends +on the udev order. +--- + modules.d/35network-manager/nm-run.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/modules.d/35network-manager/nm-run.sh b/modules.d/35network-manager/nm-run.sh +index fc5280a1..61752384 100755 +--- a/modules.d/35network-manager/nm-run.sh ++++ b/modules.d/35network-manager/nm-run.sh +@@ -10,6 +10,10 @@ for i in /usr/lib/NetworkManager/system-connections/* \ + else + /usr/sbin/NetworkManager --configure-and-quit=initrd --no-daemon + fi ++ ++ if [ -s /run/NetworkManager/initrd/hostname ]; then ++ cat /run/NetworkManager/initrd/hostname > /proc/sys/kernel/hostname ++ fi + break + done + + diff --git a/0060.patch b/0060.patch new file mode 100644 index 0000000..a9e0e67 --- /dev/null +++ b/0060.patch @@ -0,0 +1,59 @@ +From 871d63c3be529cee2c2bd868750eda121ece46dc Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 29 May 2020 14:43:57 +0200 +Subject: [PATCH] Fix CI badges in README.md and fix dracut description + +While fixing the CI badges, I removed some old crufty README text. +--- + README.md | 11 ++++------- + dracut.spec | 2 +- + 2 files changed, 5 insertions(+), 8 deletions(-) + +diff --git a/README.md b/README.md +index 9948bf97..0ab54ea6 100644 +--- a/README.md ++++ b/README.md +@@ -4,15 +4,15 @@ dracut + dracut is an event driven initramfs infrastructure. + + [![Build Status](https://travis-ci.org/dracutdevs/dracut.svg?branch=master)](https://travis-ci.org/dracutdevs/dracut) +-[![Fedora-30](https://github.com/dracutdevs/dracut/workflows/Fedora-30/badge.svg?branch=master)](https://github.com/dracutdevs/dracut/actions?query=workflow%3AFedora-30) + [![Fedora-31](https://github.com/dracutdevs/dracut/workflows/Fedora-31/badge.svg?branch=master)](https://github.com/dracutdevs/dracut/actions?query=workflow%3AFedora-31) ++[![Fedora-32](https://github.com/dracutdevs/dracut/workflows/Fedora-32/badge.svg?branch=master)](https://github.com/dracutdevs/dracut/actions?query=workflow%3AFedora-32) + + dracut (the tool) is used to create an initramfs image by copying tools + and files from an installed system and combining it with the + dracut framework, usually found in /usr/lib/dracut/modules.d. + +-Unlike existing initramfs's, this is an attempt at having as little as +-possible hard-coded into the initramfs as possible. The initramfs has ++Unlike other implementations, dracut hard-codes as little ++as possible into the initramfs. The initramfs has + (basically) one purpose in life -- getting the rootfs mounted so that + we can transition to the real rootfs. This is all driven off of + device availability. Therefore, instead of scripts hard-coded to do +@@ -20,10 +20,7 @@ various things, we depend on udev to create device nodes for us and + then when we have the rootfs's device node, we mount and carry on. + This helps to keep the time required in the initramfs as little as + possible so that things like a 5 second boot aren't made impossible as +-a result of the very existence of an initramfs. It's likely that +-we'll grow some hooks for running arbitrary commands in the flow of +-the script, but it's worth trying to resist the urge as much as we can +-as hooks are guaranteed to be the path to slow-down. ++a result of the very existence of an initramfs. + + Most of the initramfs generation functionality in dracut is provided by a bunch + of generator modules that are sourced by the main dracut script to install +diff --git a/dracut.spec b/dracut.spec +index 1eb47402..4d1cb7a4 100644 +--- a/dracut.spec ++++ b/dracut.spec +@@ -99,7 +99,7 @@ Requires: libkcapi-hmaccalc + + %description + dracut contains tools to create bootable initramfses for the Linux +-kernel. Unlike previous implementations, dracut hard-codes as little ++kernel. Unlike other implementations, dracut hard-codes as little + as possible into the initramfs. dracut contains various modules which + are driven by the event-based udev. Having root on MD, DM, LVM2, LUKS + is supported as well as NFS, iSCSI, NBD, FCoE with the dracut-network diff --git a/dracut.spec b/dracut.spec index e35f1e5..6f35fa3 100644 --- a/dracut.spec +++ b/dracut.spec @@ -5,7 +5,7 @@ # strip the automatically generated dep here and instead co-own the # directory. %global __requires_exclude pkg-config -%define dist_free_release 26.git20200316 +%define dist_free_release 61.git20200529 Name: dracut Version: 050 @@ -53,6 +53,41 @@ Patch22: 0022.patch Patch23: 0023.patch Patch24: 0024.patch Patch25: 0025.patch +Patch26: 0026.patch +Patch27: 0027.patch +Patch28: 0028.patch +Patch29: 0029.patch +Patch30: 0030.patch +Patch31: 0031.patch +Patch32: 0032.patch +Patch33: 0033.patch +Patch34: 0034.patch +Patch35: 0035.patch +Patch36: 0036.patch +Patch37: 0037.patch +Patch38: 0038.patch +Patch39: 0039.patch +Patch40: 0040.patch +Patch41: 0041.patch +Patch42: 0042.patch +Patch43: 0043.patch +Patch44: 0044.patch +Patch45: 0045.patch +Patch46: 0046.patch +Patch47: 0047.patch +Patch48: 0048.patch +Patch49: 0049.patch +Patch50: 0050.patch +Patch51: 0051.patch +Patch52: 0052.patch +Patch53: 0053.patch +Patch54: 0054.patch +Patch55: 0055.patch +Patch56: 0056.patch +Patch57: 0057.patch +Patch58: 0058.patch +Patch59: 0059.patch +Patch60: 0060.patch Source1: https://www.gnu.org/licenses/lgpl-2.1.txt @@ -103,6 +138,7 @@ Requires: xz Requires: gzip %if 0%{?fedora} || 0%{?rhel} +Recommends: memstrack Recommends: hardlink Recommends: pigz Recommends: kpartx @@ -124,7 +160,7 @@ Requires: libkcapi-hmaccalc %description dracut contains tools to create bootable initramfses for the Linux -kernel. Unlike previous implementations, dracut hard-codes as little +kernel. Unlike other implementations, dracut hard-codes as little as possible into the initramfs. dracut contains various modules which are driven by the event-based udev. Having root on MD, DM, LVM2, LUKS is supported as well as NFS, iSCSI, NBD, FCoE with the dracut-network @@ -429,6 +465,7 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne %{dracutlibdir}/modules.d/98syslog %{dracutlibdir}/modules.d/98usrmount %{dracutlibdir}/modules.d/99base +%{dracutlibdir}/modules.d/99memstrack %{dracutlibdir}/modules.d/99fs-lib %{dracutlibdir}/modules.d/99shutdown %attr(0644,root,root) %ghost %config(missingok,noreplace) %{_localstatedir}/log/dracut.log @@ -507,6 +544,9 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne %endif %changelog +* Fri May 29 2020 Harald Hoyer - 050-61.git20200529 +- git snapshot + * Mon Mar 16 2020 Harald Hoyer - 050-26.git20200316 - fixed `--tmpdir` mishandling