From afa7aa19c74ba70a055ac28cf6695e7cdc4ecdd7 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Oct 10 2017 09:15:04 +0000 Subject: dracut - 046-19 - git snapshot --- 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