From afa7aa19c74ba70a055ac28cf6695e7cdc4ecdd7 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 10 Oct 2017 11:15:04 +0200 Subject: [PATCH] dracut - 046-19 - git snapshot --- 0006.patch | 1 + 0007.patch | 23 +++++++ 0008.patch | 25 ++++++++ 0009.patch | 67 +++++++++++++++++++ 0010.patch | 24 +++++++ 0011.patch | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 0012.patch | 52 +++++++++++++++ 0013.patch | 172 +++++++++++++++++++++++++++++++++++++++++++++++++ 0014.patch | 37 +++++++++++ 0015.patch | 33 ++++++++++ 0017.patch | 69 ++++++++++++++++++++ 0018.patch | 39 ++++++++++++ 0019.patch | 26 ++++++++ dracut.spec | 17 ++++- 14 files changed, 764 insertions(+), 1 deletion(-) create mode 100644 0007.patch create mode 100644 0008.patch create mode 100644 0009.patch create mode 100644 0010.patch create mode 100644 0011.patch create mode 100644 0012.patch create mode 100644 0013.patch create mode 100644 0014.patch create mode 100644 0015.patch create mode 100644 0017.patch create mode 100644 0018.patch create mode 100644 0019.patch diff --git a/0006.patch b/0006.patch index aea9717..fa9cdb5 100644 --- a/0006.patch +++ b/0006.patch @@ -21,3 +21,4 @@ index 681a6b7a..06127ca4 100755 if [[ $allowlocal ]]; then "$dracutbasedir/lsinitrd.sh" "${DRACUT_TMPDIR}/initramfs.img"| ddebug else + diff --git a/0007.patch b/0007.patch new file mode 100644 index 0000000..24b69a3 --- /dev/null +++ b/0007.patch @@ -0,0 +1,23 @@ +From 1499719d2542eb937099c98c9b8618e0f3e8c3a2 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 30 Aug 2017 11:39:06 +0200 +Subject: [PATCH] Merge pull request #274 from danimo/system_allow_coredump + +Enable core dumps with systemd from initrd +--- + 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 5da22a93..23d39bbe 100755 +--- a/modules.d/00systemd/module-setup.sh ++++ b/modules.d/00systemd/module-setup.sh +@@ -33,6 +33,7 @@ install() { + + inst_multiple -o \ + $systemdutildir/systemd \ ++ $systemdutildir/systemd-coredump \ + $systemdutildir/systemd-cgroups-agent \ + $systemdutildir/systemd-shutdown \ + $systemdutildir/systemd-reply-password \ + diff --git a/0008.patch b/0008.patch new file mode 100644 index 0000000..3720557 --- /dev/null +++ b/0008.patch @@ -0,0 +1,25 @@ +From 424c065cd99cc9c35a92a68d34c161beff5f5497 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 30 Aug 2017 11:51:12 +0200 +Subject: [PATCH] Merge pull request #276 from danimo/copy_multipath_confd + +95multipath: Pickup files in /etc/multipath/conf.d +--- + modules.d/90multipath/module-setup.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh +index e5683395..28857ebc 100755 +--- a/modules.d/90multipath/module-setup.sh ++++ b/modules.d/90multipath/module-setup.sh +@@ -65,7 +65,8 @@ install() { + xdrgetprio \ + /etc/xdrdevices.conf \ + /etc/multipath.conf \ +- /etc/multipath/* ++ /etc/multipath/* \ ++ /etc/multipath/conf.d/* + + inst $(command -v partx) /sbin/partx + + diff --git a/0009.patch b/0009.patch new file mode 100644 index 0000000..e369af4 --- /dev/null +++ b/0009.patch @@ -0,0 +1,67 @@ +From 28401778c4c95b3750e73675dd4a4867303402d5 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Wed, 27 Sep 2017 13:27:42 +0200 +Subject: [PATCH] systemd: fix setting of timeouts for device units + +JobRunningTimeoutSec now affects how long can start jobs for device +units stay in the "running" state. Disabling default job timeout via +JobTimeoutSec=0 doesn't disable running state timeout. We need to set +running state timeout as well. + +Note that doing this the other way around has effect on generic timeout, +i.e. disabling running state timeout disables generic timeout. But doing +it this way we would create implicit dependency on fairly new +systemd-234. However, by setting both options we don't create dependency +on specific systemd version. +--- + modules.d/90dmsquash-live/dmsquash-generator.sh | 1 + + modules.d/90livenet/livenet-generator.sh | 1 + + modules.d/98dracut-systemd/rootfs-generator.sh | 1 + + modules.d/99base/dracut-lib.sh | 1 + + 4 files changed, 4 insertions(+) + +diff --git a/modules.d/90dmsquash-live/dmsquash-generator.sh b/modules.d/90dmsquash-live/dmsquash-generator.sh +index a5bfbdf2..d47cf14a 100755 +--- a/modules.d/90dmsquash-live/dmsquash-generator.sh ++++ b/modules.d/90dmsquash-live/dmsquash-generator.sh +@@ -78,4 +78,5 @@ mkdir -p "$GENERATOR_DIR/$_dev.device.d" + { + echo "[Unit]" + echo "JobTimeoutSec=3000" ++ echo "JobRunningTimeoutSec=3000" + } > "$GENERATOR_DIR/$_dev.device.d/timeout.conf" +diff --git a/modules.d/90livenet/livenet-generator.sh b/modules.d/90livenet/livenet-generator.sh +index 969ef4f2..a349cd0b 100755 +--- a/modules.d/90livenet/livenet-generator.sh ++++ b/modules.d/90livenet/livenet-generator.sh +@@ -57,4 +57,5 @@ mkdir -p "$GENERATOR_DIR/dev-mapper-live\x2drw.device.d" + { + echo "[Unit]" + echo "JobTimeoutSec=3000" ++ echo "JobRunningTimeoutSec=3000" + } > "$GENERATOR_DIR/dev-mapper-live\x2drw.device.d/timeout.conf" +diff --git a/modules.d/98dracut-systemd/rootfs-generator.sh b/modules.d/98dracut-systemd/rootfs-generator.sh +index eada3d15..4ae693bb 100755 +--- a/modules.d/98dracut-systemd/rootfs-generator.sh ++++ b/modules.d/98dracut-systemd/rootfs-generator.sh +@@ -32,6 +32,7 @@ generator_wait_for_dev() + { + echo "[Unit]" + echo "JobTimeoutSec=$_timeout" ++ echo "JobRunningTimeoutSec=$_timeout" + } > "$GENERATOR_DIR"/${_name}.device.d/timeout.conf + fi + } +diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh +index 80385456..675abf22 100755 +--- a/modules.d/99base/dracut-lib.sh ++++ b/modules.d/99base/dracut-lib.sh +@@ -938,6 +938,7 @@ set_systemd_timeout_for_dev() + { + echo "[Unit]" + echo "JobTimeoutSec=$_timeout" ++ echo "JobRunningTimeoutSec=$_timeout" + } > ${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf + type mark_hostonly >/dev/null 2>&1 && mark_hostonly /etc/systemd/system/${_name}.device.d/timeout.conf + _needreload=1 + diff --git a/0010.patch b/0010.patch new file mode 100644 index 0000000..b0796a5 --- /dev/null +++ b/0010.patch @@ -0,0 +1,24 @@ +From 32618b456e4ba4b02e595eae067ec77df526ab9b Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 9 Oct 2017 09:38:37 +0200 +Subject: [PATCH] Merge pull request #277 from imran1008/bond-master-mtu + +Set MTU on bond master as opposed to a bond slave +--- + 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 687b5707..0db3c021 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -257,7 +257,7 @@ if [ -z "$NO_BOND_MASTER" ]; then + done + + # Set mtu on bond master +- [ -n "$bondmtu" ] && ip link set mtu $bondmtu dev $netif ++ [ -n "$bondmtu" ] && ip link set mtu $bondmtu dev $bondname + + # add the bits to setup the needed post enslavement parameters + for arg in $bondoptions ; do + diff --git a/0011.patch b/0011.patch new file mode 100644 index 0000000..b71dadc --- /dev/null +++ b/0011.patch @@ -0,0 +1,180 @@ +From 7c9e64272ef250a4b8804beaba24a3da7c157ca4 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 9 Oct 2017 11:39:10 +0200 +Subject: [PATCH] Merge pull request #280 from tpgxyz/zstd + +add support for Zstandard +--- + dracut-bash-completion.sh | 2 +- + dracut-initramfs-restore.sh | 2 ++ + dracut.8.asc | 8 ++++++++ + dracut.conf.5.asc | 2 +- + dracut.sh | 10 +++++++++- + lsinitrd.sh | 3 +++ + modules.d/99img-lib/img-lib.sh | 5 +++-- + modules.d/99img-lib/module-setup.sh | 2 +- + 8 files changed, 28 insertions(+), 6 deletions(-) + +diff --git a/dracut-bash-completion.sh b/dracut-bash-completion.sh +index 09330a67..9e5806cc 100644 +--- a/dracut-bash-completion.sh ++++ b/dracut-bash-completion.sh +@@ -29,7 +29,7 @@ _dracut() { + --hardlink --nohardlink --noprefix --mdadmconf --nomdadmconf + --lvmconf --nolvmconf --debug --profile --verbose --quiet + --local --hostonly --no-hostonly --fstab --help --bzip2 --lzma +- --xz --no-compress --gzip --list-modules --show-modules --keep ++ --xz --zstd --no-compress --gzip --list-modules --show-modules --keep + --printsize --regenerate-all --noimageifnotneeded --early-microcode + --no-early-microcode --print-cmdline --prelink --noprelink --reproducible + --uefi +diff --git a/dracut-initramfs-restore.sh b/dracut-initramfs-restore.sh +index 0c41a59c..94794804 100644 +--- a/dracut-initramfs-restore.sh ++++ b/dracut-initramfs-restore.sh +@@ -31,6 +31,8 @@ elif $SKIP "$IMG" | xzcat | cpio -id --no-absolute-filenames --quiet >/dev/null; + rm -f -- .need_shutdown + elif $SKIP "$IMG" | lz4 -d -c | cpio -id --no-absolute-filenames --quiet >/dev/null; then + rm -f -- .need_shutdown ++elif $SKIP "$IMG" | zstd -d -c | cpio -id --no-absolute-filenames --quiet >/dev/null; then ++ rm -f -- .need_shutdown + else + # something failed, so we clean up + echo "Unpacking of $IMG to /run/initramfs failed" >&2 +diff --git a/dracut.8.asc b/dracut.8.asc +index 23c53cc4..64c0207f 100644 +--- a/dracut.8.asc ++++ b/dracut.8.asc +@@ -432,6 +432,14 @@ Make sure your kernel has lz4 decompression support compiled in, otherwise you + will not be able to boot. + ==== + ++**--zstd**:: ++ Compress the generated initramfs using Zstandard. ++[WARNING] ++==== ++Make sure your kernel has zstd decompression support compiled in, otherwise you ++will not be able to boot. ++==== ++ + **--compress** __:: + Compress the generated initramfs using the passed compression program. If + you pass it just the name of a compression program, it will call that +diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc +index 907a2fd4..6e8f3eba 100644 +--- a/dracut.conf.5.asc ++++ b/dracut.conf.5.asc +@@ -79,7 +79,7 @@ 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|}__":: ++*compress=*"__{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 +diff --git a/dracut.sh b/dracut.sh +index 06127ca4..5ad0f464 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -197,6 +197,9 @@ Creates initial ramdisk images for preloading modules + --lz4 Compress the generated initramfs using lz4. + Make sure that your kernel has lz4 support compiled + in, otherwise you will not be able to boot. ++ --zstd Compress the generated initramfs using Zstandard. ++ Make sure that your kernel has zstd support compiled ++ in, otherwise you will not be able to boot. + --compress [COMPRESSION] Compress the generated initramfs with the + passed compression program. Make sure your kernel + knows how to decompress the generated initramfs, +@@ -358,6 +361,7 @@ rearrange_params() + --long xz \ + --long lzo \ + --long lz4 \ ++ --long zstd \ + --long no-compress \ + --long gzip \ + --long list-modules \ +@@ -557,6 +561,7 @@ while :; do + --xz) compress_l="xz";; + --lzo) compress_l="lzo";; + --lz4) compress_l="lz4";; ++ --zstd) compress_l="zstd";; + --no-compress) _no_compress_l="cat";; + --gzip) compress_l="gzip";; + --list-modules) do_list="yes";; +@@ -797,7 +802,7 @@ fi + + if ! [[ $compress ]]; then + # check all known compressors, if none specified +- for i in pigz gzip lz4 lzop lzma xz lbzip2 bzip2 cat; do ++ for i in pigz gzip lz4 lzop zstd lzma xz lbzip2 bzip2 cat; do + command -v "$i" &>/dev/null || continue + compress="$i" + break +@@ -837,6 +842,9 @@ case $compress in + lz4) + compress="lz4 -l -9" + ;; ++ zstd) ++ compress="zstd -15 -q -T0" ++ ;; + esac + + [[ $hostonly = yes ]] && hostonly="-h" +diff --git a/lsinitrd.sh b/lsinitrd.sh +index b19a66a0..f4088453 100755 +--- a/lsinitrd.sh ++++ b/lsinitrd.sh +@@ -219,6 +219,9 @@ case $bin in + $'\x89'LZO$'\0'*) + CAT="lzop -d -c" + ;; ++ $'0xFD2FB528'*) ++ CAT="zstd -d -c" ++ ;; + *) + if echo "test"|xz|xzcat --single-stream >/dev/null 2>&1; then + CAT="xzcat --single-stream --" +diff --git a/modules.d/99img-lib/img-lib.sh b/modules.d/99img-lib/img-lib.sh +index 48e56ce7..43785812 100755 +--- a/modules.d/99img-lib/img-lib.sh ++++ b/modules.d/99img-lib/img-lib.sh +@@ -8,12 +8,13 @@ + # works with stdin if $1 is not set. + det_archive() { + # NOTE: echo -e works in ash and bash, but not dash +- local bz="BZh" xz="$(echo -e '\xfd7zXZ')" gz="$(echo -e '\x1f\x8b')" ++ local bz="BZh" xz="$(echo -e '\xfd7zXZ')" gz="$(echo -e '\x1f\x8b')" zs="$(echo -e '0xFD2FB528')" + local headerblock="$(dd ${1:+if=$1} bs=262 count=1 2>/dev/null)" + case "$headerblock" in + $xz*) echo "xz" ;; + $gz*) echo "gzip" ;; + $bz*) echo "bzip2" ;; ++ $zs*) echo "zstd" ;; + 07070*) echo "cpio" ;; + *ustar) echo "tar" ;; + esac +@@ -33,7 +34,7 @@ unpack_archive() { + local img="$1" outdir="$2" archiver="" decompr="" + local ft="$(det_archive $img)" + case "$ft" in +- xz|gzip|bzip2) decompr="$ft -dc" ;; ++ xz|gzip|bzip2|zstd) decompr="$ft -dc" ;; + cpio|tar) decompr="cat";; + *) return 1 ;; + esac +diff --git a/modules.d/99img-lib/module-setup.sh b/modules.d/99img-lib/module-setup.sh +index 69346b2f..fe1eca1a 100755 +--- a/modules.d/99img-lib/module-setup.sh ++++ b/modules.d/99img-lib/module-setup.sh +@@ -16,7 +16,7 @@ depends() { + install() { + inst_multiple tar gzip dd bash + # TODO: make this conditional on a cmdline flag / config option +- inst_multiple -o cpio xz bzip2 ++ inst_multiple -o cpio xz bzip2 zstd + inst_simple "$moddir/img-lib.sh" "/lib/img-lib.sh" + } + + diff --git a/0012.patch b/0012.patch new file mode 100644 index 0000000..992e6c4 --- /dev/null +++ b/0012.patch @@ -0,0 +1,52 @@ +From bada26263c36a8be07aece7e9f4986ee31e4d97f Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 9 Oct 2017 11:47:08 +0200 +Subject: [PATCH] Merge pull request #287 from xlpang/master + +fcoe: handle CNAs with DCB firmware support +--- + modules.d/95fcoe/module-setup.sh | 26 ++++++++++++++++++++------ + 1 file changed, 20 insertions(+), 6 deletions(-) + +diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh +index e14a0ebb..eabb21c7 100755 +--- a/modules.d/95fcoe/module-setup.sh ++++ b/modules.d/95fcoe/module-setup.sh +@@ -51,16 +51,30 @@ cmdline() { + read mac < ${i}/address + s=$(dcbtool gc ${i##*/} dcb | sed -n 's/^DCB State:\t*\(.*\)/\1/p') + if [ -z "$s" ] ; then +- p=$(get_vlan_parent ${i}) +- if [ "$p" ] ; then +- s=$(dcbtool gc ${p} dcb | sed -n 's/^DCB State:\t*\(.*\)/\1/p') +- fi ++ p=$(get_vlan_parent ${i}) ++ if [ "$p" ] ; then ++ s=$(dcbtool gc ${p} dcb | sed -n 's/^DCB State:\t*\(.*\)/\1/p') ++ fi + fi + if [ "$s" = "on" ] ; then +- dcb="dcb" ++ dcb="dcb" + else +- dcb="nodcb" ++ dcb="nodcb" + fi ++ ++ # Some Combined Network Adapters(CNAs) implement DCB in firmware. ++ # Do not run software-based DCB or LLDP on CNAs that implement DCB. ++ # If the network interface provides hardware DCB/DCBX capabilities, ++ # DCB_REQUIRED in "/etc/fcoe/cfg-xxx" is expected to set to "no". ++ # ++ # Force "nodcb" if there's any DCB_REQUIRED="no"(child or vlan parent). ++ grep -q "^[[:blank:]]*DCB_REQUIRED=\"no\"" /etc/fcoe/cfg-${i##*/} &>/dev/null ++ [ $? -eq 0 ] && dcb="nodcb" ++ if [ "$p" ] ; then ++ grep -q "^[[:blank:]]*DCB_REQUIRED=\"no\"" /etc/fcoe/cfg-${p} &>/dev/null ++ [ $? -eq 0 ] && dcb="nodcb" ++ fi ++ + echo "fcoe=${mac}:${dcb}" + done + } + diff --git a/0013.patch b/0013.patch new file mode 100644 index 0000000..5632da2 --- /dev/null +++ b/0013.patch @@ -0,0 +1,172 @@ +From bf5c53a33f36d15a87297d4492624d137c3cd9fa Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 9 Oct 2017 12:51:29 +0200 +Subject: [PATCH] Merge pull request #290 from privb0x23/luks-detached + +Add basic LUKS detached header support +--- + modules.d/90crypt/cryptroot-ask.sh | 20 ++++++++++++++++- + modules.d/90crypt/module-setup.sh | 46 ++++++++++++++++++++++++++++++-------- + modules.d/90crypt/parse-crypt.sh | 33 ++++++++++++++++++++++++++- + 3 files changed, 88 insertions(+), 11 deletions(-) + +diff --git a/modules.d/90crypt/cryptroot-ask.sh b/modules.d/90crypt/cryptroot-ask.sh +index 5b513638..9f635eb3 100755 +--- a/modules.d/90crypt/cryptroot-ask.sh ++++ b/modules.d/90crypt/cryptroot-ask.sh +@@ -29,13 +29,27 @@ if [ -f /etc/crypttab ] && getargbool 1 rd.luks.crypttab -d -n rd_NO_CRYPTTAB; t + continue + fi + ++ # PARTUUID used in crypttab ++ if [ "${dev%%=*}" = "PARTUUID" ]; then ++ if [ "luks-${dev##PARTUUID=}" = "$luksname" ]; then ++ luksname="$name" ++ break ++ fi ++ + # UUID used in crypttab +- if [ "${dev%%=*}" = "UUID" ]; then ++ elif [ "${dev%%=*}" = "UUID" ]; then + if [ "luks-${dev##UUID=}" = "$luksname" ]; then + luksname="$name" + break + fi + ++ # ID used in crypttab ++ elif [ "${dev%%=*}" = "ID" ]; then ++ if [ "luks-${dev##ID=}" = "$luksname" ]; then ++ luksname="$name" ++ break ++ fi ++ + # path used in crypttab + else + cdev=$(readlink -f $dev) +@@ -88,6 +102,10 @@ while [ $# -gt 0 ]; do + ;; + allow-discards) + allowdiscards="--allow-discards" ++ ;; ++ header=*) ++ cryptsetupopts="${cryptsetupopts} --${1}" ++ ;; + esac + shift + done +diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh +index 9c1be998..69aceaab 100755 +--- a/modules.d/90crypt/module-setup.sh ++++ b/modules.d/90crypt/module-setup.sh +@@ -68,22 +68,50 @@ install() { + + if [[ $hostonly ]] && [[ -f /etc/crypttab ]]; then + # filter /etc/crypttab for the devices we need +- while read _mapper _dev _rest || [ -n "$_mapper" ]; do ++ while read _mapper _dev _luksfile _luksoptions || [ -n "$_mapper" ]; do + [[ $_mapper = \#* ]] && continue + [[ $_dev ]] || continue + ++ [[ $_dev == PARTUUID=* ]] && \ ++ _dev="/dev/disk/by-partuuid/${_dev#PARTUUID=}" ++ + [[ $_dev == UUID=* ]] && \ + _dev="/dev/disk/by-uuid/${_dev#UUID=}" + +- echo "$_dev $(blkid $_dev -s UUID -o value)" > /usr/lib/dracut/modules.d/90crypt/block_uuid.map +- +- for _hdev in "${!host_fs_types[@]}"; do +- [[ ${host_fs_types[$_hdev]} == "crypto_LUKS" ]] || continue +- if [[ $_hdev -ef $_dev ]] || [[ /dev/block/$_hdev -ef $_dev ]]; then +- echo "$_mapper $_dev $_rest" +- break +- fi ++ [[ $_dev == ID=* ]] && \ ++ _dev="/dev/disk/by-id/${_dev#ID=}" ++ ++ echo "$_dev $(blkid $_dev -s UUID -o value)" >> /usr/lib/dracut/modules.d/90crypt/block_uuid.map ++ ++ # loop through the options to check for the force option ++ luksoptions=${_luksoptions} ++ OLD_IFS="${IFS}" ++ IFS=, ++ set -- ${luksoptions} ++ IFS="${OLD_IFS}" ++ ++ while [ $# -gt 0 ]; do ++ case $1 in ++ force) ++ forceentry="yes" ++ break ++ ;; ++ esac ++ shift + done ++ ++ # include the entry regardless ++ if [ "${forceentry}" = "yes" ]; then ++ echo "$_mapper $_dev $_luksfile $_luksoptions" ++ else ++ for _hdev in "${!host_fs_types[@]}"; do ++ [[ ${host_fs_types[$_hdev]} == "crypto_LUKS" ]] || continue ++ if [[ $_hdev -ef $_dev ]] || [[ /dev/block/$_hdev -ef $_dev ]]; then ++ echo "$_mapper $_dev $_luksfile $_luksoptions" ++ break ++ fi ++ done ++ fi + done < /etc/crypttab > $initdir/etc/crypttab + mark_hostonly /etc/crypttab + fi +diff --git a/modules.d/90crypt/parse-crypt.sh b/modules.d/90crypt/parse-crypt.sh +index 8a0db02b..f0a4fba9 100755 +--- a/modules.d/90crypt/parse-crypt.sh ++++ b/modules.d/90crypt/parse-crypt.sh +@@ -35,6 +35,7 @@ else + echo 'ACTION!="add|change", GOTO="luks_end"' + } > /etc/udev/rules.d/70-luks.rules.new + ++ SERIAL=$(getargs rd.luks.serial -d rd_LUKS_SERIAL) + LUKS=$(getargs rd.luks.uuid -d rd_LUKS_UUID) + tout=$(getarg rd.luks.key.tout) + +@@ -44,7 +45,37 @@ else + done < /etc/crypttab + fi + +- if [ -n "$LUKS" ]; then ++ if [ -n "$SERIAL" ]; then ++ for serialid in $SERIAL; do ++ ++ serialid=${serialid##luks-} ++ if luksname=$(_cryptgetargsname "rd.luks.name=$serialid="); then ++ luksname="${luksname#$serialid=}" ++ else ++ luksname="luks-$serialid" ++ fi ++ ++ if [ -z "$DRACUT_SYSTEMD" ]; then ++ { ++ printf -- 'ENV{ID_SERIAL_SHORT}=="*%s*", ' "$serialid" ++ printf -- 'RUN+="%s --settled --unique --onetime ' "$(command -v initqueue)" ++ printf -- '--name cryptroot-ask-%%k %s ' "$(command -v cryptroot-ask)" ++ printf -- '$env{DEVNAME} %s %s"\n' "$luksname" "$tout" ++ } >> /etc/udev/rules.d/70-luks.rules.new ++ else ++ luksname=$(dev_unit_name "$luksname") ++ if ! crypttab_contains "$serialid"; then ++ { ++ printf -- 'ENV{ID_SERIAL_SHORT}=="*%s*", ' "$serialid" ++ printf -- 'RUN+="%s --settled --unique --onetime ' "$(command -v initqueue)" ++ printf -- '--name systemd-cryptsetup-%%k %s start ' "$(command -v systemctl)" ++ printf -- 'systemd-cryptsetup@%s.service"\n' "$luksname" ++ } >> /etc/udev/rules.d/70-luks.rules.new ++ fi ++ fi ++ done ++ ++ elif [ -n "$LUKS" ]; then + for luksid in $LUKS; do + + luksid=${luksid##luks-} + diff --git a/0014.patch b/0014.patch new file mode 100644 index 0000000..62e8387 --- /dev/null +++ b/0014.patch @@ -0,0 +1,37 @@ +From 0d947530b2b8928b5b2040c2e56cb966a5ea941f Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 9 Oct 2017 12:50:25 +0200 +Subject: [PATCH] TEST-70: sort interfaces for validation + +--- + test/TEST-70-BONDBRIDGETEAMVLAN/client-init.sh | 2 +- + test/TEST-70-BONDBRIDGETEAMVLAN/test.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/test/TEST-70-BONDBRIDGETEAMVLAN/client-init.sh b/test/TEST-70-BONDBRIDGETEAMVLAN/client-init.sh +index 2018393b..8c33ff0f 100755 +--- a/test/TEST-70-BONDBRIDGETEAMVLAN/client-init.sh ++++ b/test/TEST-70-BONDBRIDGETEAMVLAN/client-init.sh +@@ -10,7 +10,7 @@ echo "made it to the rootfs! Powering down." + + ( + echo OK +- ip -o -4 address show scope global | while read n if rest; do echo $if;done ++ ip -o -4 address show scope global | while read n if rest; do echo $if;done | sort + for i in /run/initramfs/state/etc/sysconfig/network-scripts/ifcfg-*; do + echo $i + grep -v 'UUID=' $i +diff --git a/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh b/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh +index 6b4e10df..277bbd01 100755 +--- a/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh ++++ b/test/TEST-70-BONDBRIDGETEAMVLAN/test.sh +@@ -235,7 +235,7 @@ test_setup() { + export initdir="$TESTDIR"/mnt/nfs/client + . "$basedir"/dracut-init.sh + inst_multiple sh shutdown poweroff stty cat ps ln ip \ +- mount dmesg mkdir cp ping grep ls ++ mount dmesg mkdir cp ping grep ls sort + for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do + [[ -f ${_terminfodir}/l/linux ]] && break + done + diff --git a/0015.patch b/0015.patch new file mode 100644 index 0000000..f9d1728 --- /dev/null +++ b/0015.patch @@ -0,0 +1,33 @@ +From 4e3833f6a28c52dc4c1d4e8dd24d419af10c4dc6 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 9 Oct 2017 12:59:29 +0200 +Subject: [PATCH] Merge pull request #285 from rldleblanc/fix-typos + +Fix a couple of typos. +--- + modules.d/40network/parse-bond.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/40network/parse-bond.sh b/modules.d/40network/parse-bond.sh +index 48e548b9..c35c81d6 100755 +--- a/modules.d/40network/parse-bond.sh ++++ b/modules.d/40network/parse-bond.sh +@@ -1,7 +1,7 @@ + #!/bin/sh + # + # Format: +-# bond=[::[:[:]]] ++# bond=[:[:[:]]] + # + # bondslaves is a comma-separated list of physical (ethernet) interfaces + # options is a comma-separated list on bonding options (modinfo bonding for details) in format compatible with initscripts +@@ -12,7 +12,7 @@ + # if the mtu is specified, it will be set on the bond master + # + +-# We translate list of slaves to space-separated here to mwke it easier to loop over them in ifup ++# We translate list of slaves to space-separated here to make it easier to loop over them in ifup + # Ditto for bonding options + parsebond() { + local v=${1}: + diff --git a/0017.patch b/0017.patch new file mode 100644 index 0000000..3b2b090 --- /dev/null +++ b/0017.patch @@ -0,0 +1,69 @@ +From 4c2d98c75b0dd3dad45430becb78c9d40bc6be1b Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 9 Oct 2017 14:39:12 +0200 +Subject: [PATCH] emergency.service: use Type=idle +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Type=oneshot, as currently set in dracut's emergency service file, +causes an awkward situation if emergency mode is entered e.g. because +of a root device timeout, and the root device appears later because it +just has taken longer than the timeout. In that situation, my +expectation (backed by past positive experience) is that the user should +be able to simply exit the emergency shell and resume normal boot. + +:/# systemctl status sysroot.mount +● sysroot.mount - /sysroot + Loaded: loaded (/proc/cmdline; bad; vendor preset: enabled) + Active: active (mounted) since Mon 2017-10-09 14:32:15 CEST; 16s ago + Where: /sysroot + What: /dev/mapper/3600601600a30200024fbbaf3f500e411-part5 + Docs: man:fstab(5) + man:systemd-fstab-generator(8) + Process: 1873 ExecMount=/usr/bin/mount /dev/disk/by-uuid/63751805-6abc-46a3-a66f-427920dece4d /sysroot -o ro (code=exited, status=0/SUCCESS) + Tasks: 0 (limit: 512) + +:/# systemctl list-jobs +JOB UNIT TYPE STATE + 56 emergency.target start waiting + 57 emergency.service start running + +2 jobs listed. +:/# exit +logout +Failed to start default.target: Transaction is destructive. + +(system keeps idling from this point on, user has no chance to +do anything). + +This results from the combination of two effects: +1) initrd-root-fs.target sets "OnFailureJobMode=replace-irreversibly", +2) emergency.service's Type=oneshot causes the start jobs for both +emergency.service and emergency.target to persist while the user is in +the emergency shell. + +When the shell is exited, systemd tries to isolate "initrd.target" +again, but this fails with "the transaction is destructive" error +because of the still pending jobs. + +This patch fixes this by changing the Type of "emergency.service" from +"oneshot" to "idle". +--- + modules.d/98dracut-systemd/emergency.service | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/98dracut-systemd/emergency.service b/modules.d/98dracut-systemd/emergency.service +index 288aac39..100146a3 100644 +--- a/modules.d/98dracut-systemd/emergency.service ++++ b/modules.d/98dracut-systemd/emergency.service +@@ -17,7 +17,7 @@ Environment=NEWROOT=/sysroot + WorkingDirectory=/ + ExecStart=/bin/dracut-emergency + ExecStopPost=-/usr/bin/systemctl --fail --no-block default +-Type=oneshot ++Type=idle + StandardInput=tty-force + StandardOutput=inherit + StandardError=inherit + diff --git a/0018.patch b/0018.patch new file mode 100644 index 0000000..a4cf332 --- /dev/null +++ b/0018.patch @@ -0,0 +1,39 @@ +From 8c2aa6161a2435f2af7e7df3a36125e85af0f0ec Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 9 Oct 2017 17:40:04 +0200 +Subject: [PATCH] git2spec.pl: handle empty merge commits + +--- + git2spec.pl | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/git2spec.pl b/git2spec.pl +index 0c5f3b9e..7853791e 100755 +--- a/git2spec.pl ++++ b/git2spec.pl +@@ -5,6 +5,8 @@ sub create_patches { + my $pdir=shift; + my $n=1; + my @lines; ++ my $fname; ++ my $f=0; + + mkdir $pdir, 0755; + +@@ -12,9 +14,13 @@ sub create_patches { + + while () { + if (/^From [a-z0-9]{40} .*$/) { +- my $fname = sprintf("%04d", $n++).".patch"; +- push @lines, $fname; ++ $fname = sprintf("%04d", $n++).".patch"; + open FH, ">".$pdir."/".$fname; ++ $f=1; ++ } ++ if (/^---$/ && $f == 1) { ++ push @lines, $fname; ++ $f=0; + } + print FH; + } + diff --git a/0019.patch b/0019.patch new file mode 100644 index 0000000..7b31c78 --- /dev/null +++ b/0019.patch @@ -0,0 +1,26 @@ +From 791d80168994f4784569c8ea47b7bff554102f5e Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 10 Oct 2017 10:30:44 +0200 +Subject: [PATCH] dracut.sh: if /boot/vmlinuz-$version exists use /boot/ as + output dir + +Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1475565 +--- + dracut.sh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/dracut.sh b/dracut.sh +index 5ad0f464..995d983e 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -773,7 +773,9 @@ if ! [[ $outfile ]]; then + mkdir -p "$efidir/Linux" + outfile="$efidir/Linux/linux-$kernel${MACHINE_ID:+-${MACHINE_ID}}${BUILD_ID:+-${BUILD_ID}}.efi" + else +- if [[ $MACHINE_ID ]] && ( [[ -d /boot/${MACHINE_ID} ]] || [[ -L /boot/${MACHINE_ID} ]] ); then ++ if [[ -e "/boot/vmlinuz-$kernel" ]]; then ++ outfile="/boot/initramfs-$kernel.img" ++ elif [[ $MACHINE_ID ]] && ( [[ -d /boot/${MACHINE_ID} ]] || [[ -L /boot/${MACHINE_ID} ]] ); then + outfile="/boot/${MACHINE_ID}/$kernel/initrd" + else + outfile="/boot/initramfs-$kernel.img" diff --git a/dracut.spec b/dracut.spec index 3c3c281..36ae42d 100644 --- a/dracut.spec +++ b/dracut.spec @@ -14,7 +14,7 @@ %define with_nbd 0 %endif -%define dist_free_release 7.git20170824 +%define dist_free_release 19.git20171010 Name: dracut Version: 046 @@ -43,6 +43,18 @@ Patch3: 0003.patch Patch4: 0004.patch Patch5: 0005.patch Patch6: 0006.patch +Patch7: 0007.patch +Patch8: 0008.patch +Patch9: 0009.patch +Patch10: 0010.patch +Patch11: 0011.patch +Patch12: 0012.patch +Patch13: 0013.patch +Patch14: 0014.patch +Patch15: 0015.patch +Patch16: 0017.patch +Patch17: 0018.patch +Patch18: 0019.patch Source1: https://www.gnu.org/licenses/lgpl-2.1.txt @@ -522,6 +534,9 @@ rm -rf -- $RPM_BUILD_ROOT %endif %changelog +* Tue Oct 10 2017 Harald Hoyer - 046-19 +- git snapshot + * Thu Aug 24 2017 Harald Hoyer - 046-7 - git snapshot