backport patchs from upstream
(cherry picked from commit 2e01aee7d2264d9f95b58cf86ca965c343e44027)
This commit is contained in:
parent
066bf3fda7
commit
731a2bcd17
152
backport-95resume-Do-not-resume-on-iSCSI-FCoE-or-NBD.patch
Normal file
152
backport-95resume-Do-not-resume-on-iSCSI-FCoE-or-NBD.patch
Normal file
@ -0,0 +1,152 @@
|
||||
From 480aa9695f8c2e2b30c8f41ae8483140020d23db Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Molkentin <dmolkentin@suse.com>
|
||||
Date: Tue, 4 Aug 2020 10:20:51 +0200
|
||||
Subject: [PATCH] 95resume: Do not resume on iSCSI, FCoE or NBD
|
||||
|
||||
The iSCSI configuration is started after dracut checks for resume,
|
||||
so we run into a timeout here. Additionally it's questionable if
|
||||
resume on iSCSI makes sense (or is even supported on the platform).
|
||||
|
||||
Same holds true for Network Block Devices and FcOE, cover those as well
|
||||
|
||||
References: bsc#999663
|
||||
|
||||
Original-patch-by: Hannes Reinecke <hare@suse.com>
|
||||
Signed-off-by: Daniel Molkentin <daniel.molkentin@suse.com>
|
||||
---
|
||||
dracut-functions.sh | 44 ++++++++++++++++++++++++++++++
|
||||
modules.d/95iscsi/module-setup.sh | 14 ++--------
|
||||
modules.d/95nbd/module-setup.sh | 4 +--
|
||||
modules.d/95resume/module-setup.sh | 11 +++++++-
|
||||
4 files changed, 57 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/dracut-functions.sh b/dracut-functions.sh
|
||||
index 07ae88c0..e0ca7574 100755
|
||||
--- a/dracut-functions.sh
|
||||
+++ b/dracut-functions.sh
|
||||
@@ -842,3 +842,47 @@ ip_params_for_remote_addr() {
|
||||
fi
|
||||
|
||||
}
|
||||
+
|
||||
+# block_is_nbd <maj:min>
|
||||
+# Check whether $1 is an nbd device
|
||||
+block_is_nbd() {
|
||||
+ [[ -b /dev/block/$1 && $1 == 43:* ]]
|
||||
+}
|
||||
+
|
||||
+# block_is_iscsi <maj:min>
|
||||
+# Check whether $1 is an nbd device
|
||||
+block_is_iscsi() {
|
||||
+ local _dir
|
||||
+ local _dev=$1
|
||||
+ [[ -L "/sys/dev/block/$_dev" ]] || return
|
||||
+ _dir="$(readlink -f "/sys/dev/block/$_dev")" || return
|
||||
+ until [[ -d "$_dir/sys" || -d "$_dir/iscsi_session" ]]; do
|
||||
+ _dir="$_dir/.."
|
||||
+ done
|
||||
+ [[ -d "$_dir/iscsi_session" ]]
|
||||
+}
|
||||
+
|
||||
+# block_is_fcoe <maj:min>
|
||||
+# Check whether $1 is an FCoE device
|
||||
+# Will not work for HBAs that hide the ethernet aspect
|
||||
+# completely and present a pure FC device
|
||||
+block_is_fcoe() {
|
||||
+ local _dir
|
||||
+ local _dev=$1
|
||||
+ [[ -L "/sys/dev/block/$_dev" ]] || return
|
||||
+ _dir="$(readlink -f "/sys/dev/block/$_dev")"
|
||||
+ until [[ -d "$_dir/sys" ]]; do
|
||||
+ _dir="$_dir/.."
|
||||
+ if [[ -d "$_dir/subsystem" ]]; then
|
||||
+ subsystem=$(basename $(readlink $_dir/subsystem))
|
||||
+ [[ $subsystem == "fcoe" ]] && return 0
|
||||
+ fi
|
||||
+ done
|
||||
+ return 1
|
||||
+}
|
||||
+
|
||||
+# block_is_netdevice <maj:min>
|
||||
+# Check whether $1 is a net device
|
||||
+block_is_netdevice() {
|
||||
+ block_is_nbd "$1" || block_is_iscsi "$1" || block_is_fcoe "$1"
|
||||
+}
|
||||
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
|
||||
index dfacd797..20922442 100755
|
||||
--- a/modules.d/95iscsi/module-setup.sh
|
||||
+++ b/modules.d/95iscsi/module-setup.sh
|
||||
@@ -9,20 +9,9 @@ check() {
|
||||
# If hostonly was requested, fail the check if we are not actually
|
||||
# booting from root.
|
||||
|
||||
- is_iscsi() {
|
||||
- local _dev=$1
|
||||
-
|
||||
- [[ -L "/sys/dev/block/$_dev" ]] || return
|
||||
- cd "$(readlink -f "/sys/dev/block/$_dev")"
|
||||
- until [[ -d sys || -d iscsi_session ]]; do
|
||||
- cd ..
|
||||
- done
|
||||
- [[ -d iscsi_session ]]
|
||||
- }
|
||||
-
|
||||
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
||||
pushd . >/dev/null
|
||||
- for_each_host_dev_and_slaves is_iscsi
|
||||
+ for_each_host_dev_and_slaves block_is_iscsi
|
||||
local _is_iscsi=$?
|
||||
popd >/dev/null
|
||||
[[ $_is_iscsi == 0 ]] || return 255
|
||||
@@ -223,6 +212,7 @@ install() {
|
||||
inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh"
|
||||
inst_hook cleanup 90 "$moddir/cleanup-iscsi.sh"
|
||||
inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot"
|
||||
+
|
||||
if ! dracut_module_included "systemd"; then
|
||||
inst "$moddir/mount-lun.sh" "/bin/mount-lun.sh"
|
||||
else
|
||||
diff --git a/modules.d/95nbd/module-setup.sh b/modules.d/95nbd/module-setup.sh
|
||||
index 22f6a3bf..9254b49a 100755
|
||||
--- a/modules.d/95nbd/module-setup.sh
|
||||
+++ b/modules.d/95nbd/module-setup.sh
|
||||
@@ -7,11 +7,9 @@ check() {
|
||||
# if an nbd device is not somewhere in the chain of devices root is
|
||||
# mounted on, fail the hostonly check.
|
||||
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
||||
- is_nbd() { [[ -b /dev/block/$1 && $1 == 43:* ]] ;}
|
||||
-
|
||||
_rootdev=$(find_root_block_device)
|
||||
[[ -b /dev/block/$_rootdev ]] || return 1
|
||||
- check_block_and_slaves is_nbd "$_rootdev" || return 255
|
||||
+ check_block_and_slaves block_is_nbd "$_rootdev" || return 255
|
||||
}
|
||||
require_binaries nbd-client || return 1
|
||||
|
||||
diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh
|
||||
index cb06b567..96c2573e 100755
|
||||
--- a/modules.d/95resume/module-setup.sh
|
||||
+++ b/modules.d/95resume/module-setup.sh
|
||||
@@ -2,9 +2,18 @@
|
||||
|
||||
# called by dracut
|
||||
check() {
|
||||
+ swap_on_netdevice() {
|
||||
+ local _dev
|
||||
+ for _dev in "${swap_devs[@]}"; do
|
||||
+ block_is_netdevice $_dev && return 0
|
||||
+ done
|
||||
+ return 1
|
||||
+ }
|
||||
+
|
||||
# Only support resume if hibernation is currently on
|
||||
+ # and no swap is mounted on a net device
|
||||
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
||||
- [[ "$(cat /sys/power/resume)" == "0:0" ]] && return 255
|
||||
+ swap_on_netdevice || [[ "$(cat /sys/power/resume)" == "0:0" ]] && return 255
|
||||
}
|
||||
|
||||
return 0
|
||||
--
|
||||
2.33.0
|
||||
|
||||
34
backport-cryptroot-ask-no-warn-if-run-cryptsetup-exist.patch
Normal file
34
backport-cryptroot-ask-no-warn-if-run-cryptsetup-exist.patch
Normal file
@ -0,0 +1,34 @@
|
||||
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?=
|
||||
<congdanhqx@gmail.com>
|
||||
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
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,142 @@
|
||||
From ceca74ccc397795db68ca6ffbe49d65af2178a50 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Sat, 11 Jul 2020 00:15:34 +0200
|
||||
Subject: [PATCH] dracut-functions: add ip_params_for_remote_addr() helper
|
||||
|
||||
This helper function takes a remote IP address, and tries to
|
||||
determine the dracut command line arguments ip= and ifname= that
|
||||
will make this remote address reachable during boot.
|
||||
|
||||
Functionality was taken from the module-setup.sh scripts of 95iscsi and 95nfs,
|
||||
cleaned up and fixed some issues in particular with statically configured
|
||||
networks, where the old code would print the unsupported string
|
||||
"$ifname:static".
|
||||
---
|
||||
dracut-functions.sh | 114 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 114 insertions(+)
|
||||
|
||||
diff --git a/dracut-functions.sh b/dracut-functions.sh
|
||||
index b5c28248..07ae88c0 100755
|
||||
--- a/dracut-functions.sh
|
||||
+++ b/dracut-functions.sh
|
||||
@@ -728,3 +728,117 @@ btrfs_devs() {
|
||||
printf -- "%s\n" "$_dev"
|
||||
done
|
||||
}
|
||||
+
|
||||
+iface_for_remote_addr() {
|
||||
+ set -- $(ip -o route get to "$1")
|
||||
+ echo $3
|
||||
+}
|
||||
+
|
||||
+local_addr_for_remote_addr() {
|
||||
+ set -- $(ip -o route get to "$1")
|
||||
+ echo $5
|
||||
+}
|
||||
+
|
||||
+peer_for_addr() {
|
||||
+ local addr=$1
|
||||
+ local qtd
|
||||
+
|
||||
+ # quote periods in IPv4 address
|
||||
+ qtd=${addr//./\\.}
|
||||
+ ip -o addr show | \
|
||||
+ sed -n 's%^.* '"$qtd"' peer \([0-9a-f.:]\{1,\}\(/[0-9]*\)\?\).*$%\1%p'
|
||||
+}
|
||||
+
|
||||
+netmask_for_addr() {
|
||||
+ local addr=$1
|
||||
+ local qtd
|
||||
+
|
||||
+ # quote periods in IPv4 address
|
||||
+ qtd=${addr//./\\.}
|
||||
+ ip -o addr show | sed -n 's,^.* '"$qtd"'/\([0-9]*\) .*$,\1,p'
|
||||
+}
|
||||
+
|
||||
+gateway_for_iface() {
|
||||
+ local ifname=$1 addr=$2
|
||||
+
|
||||
+ case $addr in
|
||||
+ *.*) proto=4;;
|
||||
+ *:*) proto=6;;
|
||||
+ *) return;;
|
||||
+ esac
|
||||
+ ip -o -$proto route show | \
|
||||
+ sed -n "s/^default via \([0-9a-z.:]\{1,\}\) dev $ifname .*\$/\1/p"
|
||||
+}
|
||||
+
|
||||
+# This works only for ifcfg-style network configuration!
|
||||
+bootproto_for_iface() {
|
||||
+ local ifname=$1
|
||||
+ local dir
|
||||
+
|
||||
+ # follow ifcfg settings for boot protocol
|
||||
+ for dir in network-scripts network; do
|
||||
+ [ -f "/etc/sysconfig/$dir/ifcfg-$ifname" ] && {
|
||||
+ sed -n "s/BOOTPROTO=[\"']\?\([[:alnum:]]\{1,\}\)[\"']\?.*\$/\1/p" \
|
||||
+ "/etc/sysconfig/$dir/ifcfg-$ifname"
|
||||
+ return
|
||||
+ }
|
||||
+ done
|
||||
+}
|
||||
+
|
||||
+is_unbracketed_ipv6_address() {
|
||||
+ strglob "$1" '*:*' && ! strglob "$1" '\[*:*\]'
|
||||
+}
|
||||
+
|
||||
+# Create an ip= string to set up networking such that the given
|
||||
+# remote address can be reached
|
||||
+ip_params_for_remote_addr() {
|
||||
+ local remote_addr=$1
|
||||
+ local ifname local_addr peer netmask= gateway ifmac
|
||||
+
|
||||
+ [[ $remote_addr ]] || return 1
|
||||
+ ifname=$(iface_for_remote_addr "$remote_addr")
|
||||
+ [[ $ifname ]] || {
|
||||
+ berror "failed to determine interface to connect to $remote_addr"
|
||||
+ return 1
|
||||
+ }
|
||||
+
|
||||
+ # ifname clause to bind the interface name to a MAC address
|
||||
+ if [ -d "/sys/class/net/$ifname/bonding" ]; then
|
||||
+ dinfo "Found bonded interface '${ifname}'. Make sure to provide an appropriate 'bond=' cmdline."
|
||||
+ elif [ -e "/sys/class/net/$ifname/address" ] ; then
|
||||
+ ifmac=$(cat "/sys/class/net/$ifname/address")
|
||||
+ [[ $ifmac ]] && printf 'ifname=%s:%s ' "${ifname}" "${ifmac}"
|
||||
+ fi
|
||||
+
|
||||
+ bootproto=$(bootproto_for_iface "$ifname")
|
||||
+ case $bootproto in
|
||||
+ dhcp|dhcp6|auto6) ;;
|
||||
+ dhcp4)
|
||||
+ bootproto=dhcp;;
|
||||
+ static*|"")
|
||||
+ bootproto=;;
|
||||
+ *)
|
||||
+ derror "bootproto \"$bootproto\" is unsupported by dracut, trying static configuration"
|
||||
+ bootproto=;;
|
||||
+ esac
|
||||
+ if [[ $bootproto ]]; then
|
||||
+ printf 'ip=%s:%s ' "${ifname}" "${bootproto}"
|
||||
+ else
|
||||
+ local_addr=$(local_addr_for_remote_addr "$remote_addr")
|
||||
+ [[ $local_addr ]] || {
|
||||
+ berror "failed to determine local address to connect to $remote_addr"
|
||||
+ return 1
|
||||
+ }
|
||||
+ peer=$(peer_for_addr "$local_addr")
|
||||
+ # Set peer or netmask, but not both
|
||||
+ [[ $peer ]] || netmask=$(netmask_for_addr "$local_addr")
|
||||
+ gateway=$(gateway_for_iface "$ifname" "$local_addr")
|
||||
+ # Quote IPv6 addresses with brackets
|
||||
+ is_unbracketed_ipv6_address "$local_addr" && local_addr="[$local_addr]"
|
||||
+ is_unbracketed_ipv6_address "$peer" && peer="[$peer]"
|
||||
+ is_unbracketed_ipv6_address "$gateway" && gateway="[$gateway]"
|
||||
+ printf 'ip=%s:%s:%s:%s::%s:none ' \
|
||||
+ "${local_addr}" "${peer}" "${gateway}" "${netmask}" "${ifname}"
|
||||
+ fi
|
||||
+
|
||||
+}
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,62 @@
|
||||
From f769154bccf22d2b5caf5e4888f88bf7edde2662 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Tsoy <alexander@tsoy.me>
|
||||
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
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,52 @@
|
||||
From dfe2247a43d6a216d9af533825c9a103e3b056cd Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
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: <key>+=" <values> ": <values> 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
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
||||
25
backport-fix-base-tr-needs-to-be-installed.patch
Normal file
25
backport-fix-base-tr-needs-to-be-installed.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From dfbfd33b24524c0c10ad3594be143192f5b7da84 Mon Sep 17 00:00:00 2001
|
||||
From: Andre Russ <andre.russ@sap.com>
|
||||
Date: Tue, 24 Aug 2021 21:38:41 +0000
|
||||
Subject: [PATCH] fix(base): tr needs to be installed
|
||||
|
||||
---
|
||||
modules.d/99base/module-setup.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
|
||||
index cb445c34..10a44d91 100755
|
||||
--- a/modules.d/99base/module-setup.sh
|
||||
+++ b/modules.d/99base/module-setup.sh
|
||||
@@ -15,7 +15,7 @@ install() {
|
||||
|
||||
inst_multiple mount mknod mkdir sleep chroot chown \
|
||||
sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink setsid \
|
||||
- modprobe
|
||||
+ modprobe tr
|
||||
|
||||
inst_multiple -o findmnt less kmod
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
||||
29
backport-fix-crypt-gpg-execute-card-status-on-each-try.patch
Normal file
29
backport-fix-crypt-gpg-execute-card-status-on-each-try.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From 6610093698db25fda1d584b9771da1e2c2330095 Mon Sep 17 00:00:00 2001
|
||||
From: LinkTed <link.ted@mailbox.org>
|
||||
Date: Mon, 21 Jun 2021 19:15:01 +0200
|
||||
Subject: [PATCH] fix(crypt-gpg): execute --card-status on each try
|
||||
|
||||
If the gpg card is not inserted before the --card-status command is
|
||||
executed then the public key is not linked with the card. Therefore,
|
||||
the LUKS partition cannot be decrypted. To solve this, the
|
||||
--card--status command is executed on each try.
|
||||
---
|
||||
modules.d/91crypt-gpg/crypt-gpg-lib.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/modules.d/91crypt-gpg/crypt-gpg-lib.sh b/modules.d/91crypt-gpg/crypt-gpg-lib.sh
|
||||
index 0613803a..88ce16e2 100755
|
||||
--- a/modules.d/91crypt-gpg/crypt-gpg-lib.sh
|
||||
+++ b/modules.d/91crypt-gpg/crypt-gpg-lib.sh
|
||||
@@ -51,7 +51,7 @@ gpg_decrypt() {
|
||||
fi
|
||||
|
||||
ask_for_password \
|
||||
- --cmd "gpg $opts --decrypt $mntp/$keypath" \
|
||||
+ --cmd "GNUPGHOME=$gpghome gpg --card-status --no-tty > /dev/null 2>&1; gpg $opts --decrypt $mntp/$keypath" \
|
||||
--prompt "${inputPrompt:-Password ($keypath on $keydev for $device)}" \
|
||||
--tries 3 --tty-echo-off
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
||||
81
backport-fix-dracut-install-tweaks-to-get_real_file.patch
Normal file
81
backport-fix-dracut-install-tweaks-to-get_real_file.patch
Normal file
@ -0,0 +1,81 @@
|
||||
From 1beeaf3b71aed763d5fc7a9ee044d675f8906e8c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
|
||||
<zboszor@gmail.com>
|
||||
Date: Sun, 18 Jul 2021 10:28:37 +0200
|
||||
Subject: [PATCH] fix(dracut-install): tweaks to get_real_file()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Fix potential memory leaks in two locations and use
|
||||
_exit(EXIT_FAILURE) if asprintf(&abspath, ...) fails.
|
||||
|
||||
Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
|
||||
---
|
||||
src/install/dracut-install.c | 27 ++++++++++++++++++---------
|
||||
1 file changed, 18 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c
|
||||
index 00a4f586..6feb7782 100644
|
||||
--- a/install/dracut-install.c
|
||||
+++ b/install/dracut-install.c
|
||||
@@ -419,7 +419,7 @@ static char *get_real_file(const char *src, bool fullyresolve)
|
||||
char linktarget[PATH_MAX + 1];
|
||||
ssize_t linksz;
|
||||
_cleanup_free_ char *fullsrcpath;
|
||||
- char *abspath = NULL;
|
||||
+ char *abspath = NULL; /* this is returned from the function, don't _cleanup_free_ */
|
||||
struct stat sb;
|
||||
|
||||
if (sysrootdirlen) {
|
||||
@@ -455,30 +455,39 @@ static char *get_real_file(const char *src, bool fullyresolve)
|
||||
log_debug("get_real_file: readlink('%s') returns '%s'", fullsrcpath, linktarget);
|
||||
|
||||
if (linktarget[0] == '/') {
|
||||
- if (asprintf(&abspath, "%s%s", (sysrootdirlen ? sysrootdir : ""), linktarget) < 0)
|
||||
- return NULL;
|
||||
+ if (asprintf(&abspath, "%s%s", (sysrootdirlen ? sysrootdir : ""), linktarget) < 0) {
|
||||
+ log_error("Out of memory!");
|
||||
+ _exit(EXIT_FAILURE);
|
||||
+ }
|
||||
} else {
|
||||
_cleanup_free_ char *fullsrcdir = strdup(fullsrcpath);
|
||||
|
||||
if (!fullsrcdir) {
|
||||
log_error("Out of memory!");
|
||||
- return NULL;
|
||||
+ _exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
fullsrcdir[dir_len(fullsrcdir)] = '\0';
|
||||
|
||||
- if (asprintf(&abspath, "%s/%s", fullsrcdir, linktarget) < 0)
|
||||
- return NULL;
|
||||
+ if (asprintf(&abspath, "%s/%s", fullsrcdir, linktarget) < 0) {
|
||||
+ log_error("Out of memory!");
|
||||
+ _exit(EXIT_FAILURE);
|
||||
+ }
|
||||
}
|
||||
|
||||
if (fullyresolve) {
|
||||
struct stat st;
|
||||
if (lstat(abspath, &st) < 0) {
|
||||
- if (errno != ENOENT)
|
||||
+ if (errno != ENOENT) {
|
||||
+ free(abspath);
|
||||
return NULL;
|
||||
+ }
|
||||
+ }
|
||||
+ if (S_ISLNK(st.st_mode)) {
|
||||
+ char *tmp = get_real_file(abspath, fullyresolve);
|
||||
+ free(abspath);
|
||||
+ abspath = tmp;
|
||||
}
|
||||
- if (S_ISLNK(st.st_mode))
|
||||
- return get_real_file(abspath, fullyresolve);
|
||||
}
|
||||
|
||||
log_debug("get_real_file('%s') => '%s'", src, abspath);
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,83 @@
|
||||
From f1138012c9dc44e6614466c0a8e929fc55e4a5dd Mon Sep 17 00:00:00 2001
|
||||
From: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Date: Fri, 11 Jun 2021 15:20:28 +0530
|
||||
Subject: [PATCH] fix(dracut.sh): handle '-i' option to include files beginning
|
||||
with '.'
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
While including a directory using '--include' option, the file and
|
||||
subdirectory names that begin with '.' are not included. Also, dracut
|
||||
throws a warning message when a subdirectory is empty or only has
|
||||
files or subdirectories that begin with '.'.
|
||||
|
||||
For example, while trying to include /tmpdata directory with the
|
||||
below tree:
|
||||
|
||||
# tree -a /tmpdata
|
||||
/tmpdata
|
||||
├── .anothertestdir
|
||||
├── testdir
|
||||
│ └── .testsubdir
|
||||
└── .testfile
|
||||
|
||||
dracut throws the below warning message:
|
||||
|
||||
# dracut --include /tmpdata /root
|
||||
cp: cannot stat '/tmpdata/testdir/*': No such file or directory
|
||||
#
|
||||
|
||||
and this is how the included /tmpdata directory tree looks:
|
||||
|
||||
# tree -a root
|
||||
root
|
||||
└── testdir
|
||||
|
||||
No file or directory beginning with '.' is included & also, copying
|
||||
/tmpdata/testdir reported "No such file or directory" warning. Using
|
||||
'.' instead of '*' in the below command will fix the warning whether
|
||||
the directory being copied is empty or only has files or directories
|
||||
that begin with dot:
|
||||
|
||||
$DRACUT_CP -t "$object_destdir" "$dracutsysrootdir$objectname"/*
|
||||
|
||||
Also, enable 'dotglob' temporarily to include files and directories
|
||||
beginning with a `.' in the results of pathname expansion of source
|
||||
directory being included.
|
||||
|
||||
Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
|
||||
---
|
||||
dracut.sh | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dracut.sh b/dracut.sh
|
||||
index 60ac46f4..e7f47752 100755
|
||||
--- a/dracut.sh
|
||||
+++ b/dracut.sh
|
||||
@@ -2067,6 +2067,8 @@ for ((i = 0; i < ${#include_src[@]}; i++)); do
|
||||
# check for preexisting symlinks, so we can cope with the
|
||||
# symlinks to $prefix
|
||||
# Objectname is a file or a directory
|
||||
+ reset_dotglob="$(shopt -p dotglob)"
|
||||
+ shopt -q -s dotglob
|
||||
for objectname in "$src"/*; do
|
||||
[[ -e "$objectname" || -h "$objectname" ]] || continue
|
||||
if [[ -d "$objectname" ]]; then
|
||||
@@ -2077,11 +2079,12 @@ for ((i = 0; i < ${#include_src[@]}; i++)); do
|
||||
mkdir -m 0755 -p "$object_destdir"
|
||||
chmod --reference="$objectname" "$object_destdir"
|
||||
fi
|
||||
- $DRACUT_CP -t "$object_destdir" "$dracutsysrootdir$objectname"/*
|
||||
+ $DRACUT_CP -t "$object_destdir" "$dracutsysrootdir$objectname"/.
|
||||
else
|
||||
$DRACUT_CP -t "$destdir" "$dracutsysrootdir$objectname"
|
||||
fi
|
||||
done
|
||||
+ eval "$reset_dotglob"
|
||||
elif [[ -e $src ]]; then
|
||||
derror "$src is neither a directory nor a regular file"
|
||||
else
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
From c7fbc0c8901917baf0d1f0822568e65c6ec00d18 Mon Sep 17 00:00:00 2001
|
||||
From: Kairui Song <kasong@redhat.com>
|
||||
Date: Sat, 12 Jun 2021 02:25:09 +0800
|
||||
Subject: [PATCH] fix(dracut.sh): handle symlinks appropriately while using
|
||||
'-i' option
|
||||
|
||||
[[ -d $symlink ]] will return true if the symlink points to a directory.
|
||||
So the symlink will not be copied, instead a directory is created with
|
||||
the symlink name and the content is copied.
|
||||
|
||||
Signed-off-by: Kairui Song <kasong@redhat.com>
|
||||
---
|
||||
dracut.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dracut.sh b/dracut.sh
|
||||
index e7f47752..78917763 100755
|
||||
--- a/dracut.sh
|
||||
+++ b/dracut.sh
|
||||
@@ -2071,7 +2071,7 @@ for ((i = 0; i < ${#include_src[@]}; i++)); do
|
||||
shopt -q -s dotglob
|
||||
for objectname in "$src"/*; do
|
||||
[[ -e "$objectname" || -h "$objectname" ]] || continue
|
||||
- if [[ -d "$objectname" ]]; then
|
||||
+ if [[ -d $objectname ]] && [[ ! -L $objectname ]]; then
|
||||
# objectname is a directory, let's compute the final directory name
|
||||
object_destdir=${destdir}/${objectname#$src/}
|
||||
if ! [[ -e "$object_destdir" ]]; then
|
||||
--
|
||||
2.33.0
|
||||
|
||||
57
backport-fix-install-handle-LIB-in-ldd-output-parsing.patch
Normal file
57
backport-fix-install-handle-LIB-in-ldd-output-parsing.patch
Normal file
@ -0,0 +1,57 @@
|
||||
From d1a36d3d80b0ed71ee814659e18a020c53cee05e Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Jindrak <dzejrou@gmail.com>
|
||||
Date: Fri, 7 May 2021 15:11:55 +0200
|
||||
Subject: [PATCH] fix(install): handle $LIB in ldd output parsing
|
||||
|
||||
The ldd output can contain the variable $LIB, which is a documented feature of
|
||||
ldd. In a previous commit [0], dracut-install received support for this
|
||||
variable, but that was later reverted [1] due to issues [2][3] on Gentoo ARM64.
|
||||
|
||||
The part before '=>' does not necessarily refer to an existing file (e.g. due
|
||||
to the usage of $LIB) and thus [1] could be seen as a regression to anyone
|
||||
that uses this ldd feature. This PR combines both cases together and whenever
|
||||
it find a '$' character (i.e. a variable) on the left side of the '=>' symbol,
|
||||
it uses the right hand path (and thus uses evaluation done by ldd), otherwise
|
||||
falls back to the behavior set by [1].
|
||||
|
||||
Reproducer that was presented to me:
|
||||
|
||||
$ grep "ibz.so" /etc/ld.so.preload || cat << EOF >> /etc/ld.so.preload
|
||||
/\$LIB/libz.so.1.2.11
|
||||
EOF
|
||||
$ mkdir -p /var/tmp/dracut.xitk6p/initramfs
|
||||
$ strace /usr/lib/dracut/dracut-install -D /var/tmp/dracut.xitk6p/initramfs -l /bin/bash 2>&1|grep ibz
|
||||
$ rm -rf /var/tmp/dracut.xitk6p/
|
||||
|
||||
[0] 45404a2
|
||||
[1] 6d886bb
|
||||
[2] #471
|
||||
[3] https://bugs.gentoo.org/667752
|
||||
---
|
||||
src/install/dracut-install.c | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c
|
||||
index b4eec363..9f044ae0 100644
|
||||
--- a/install/dracut-install.c
|
||||
+++ b/install/dracut-install.c
|
||||
@@ -589,7 +589,15 @@ static int resolve_deps(const char *src)
|
||||
if (strstr(buf, destrootdir))
|
||||
break;
|
||||
|
||||
- p = strchr(buf, '/');
|
||||
+ p = buf;
|
||||
+ if (strchr(p, '$')) {
|
||||
+ /* take ldd variable expansion into account */
|
||||
+ p = strstr(p, "=>");
|
||||
+ if (!p)
|
||||
+ p = buf;
|
||||
+ }
|
||||
+ p = strchr(p, '/');
|
||||
+
|
||||
if (p) {
|
||||
char *q;
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
||||
31
backport-fix-install-sane-default-kerneldir.patch
Normal file
31
backport-fix-install-sane-default-kerneldir.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From c1ab36139d416e580e768c29f2addf7ccbc2c612 Mon Sep 17 00:00:00 2001
|
||||
From: Marcos Mello <marcosfrm@gmail.com>
|
||||
Date: Thu, 20 May 2021 15:41:26 -0300
|
||||
Subject: [PATCH] fix(install): sane default --kerneldir
|
||||
|
||||
If --kerneldir is not specified, use /lib/modules/$(uname -r).
|
||||
|
||||
Fixes #1505
|
||||
---
|
||||
src/install/dracut-install.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c
|
||||
index 9f044ae0..3fd70fc8 100644
|
||||
--- a/install/dracut-install.c
|
||||
+++ b/install/dracut-install.c
|
||||
@@ -1167,7 +1167,10 @@ static int parse_argv(int argc, char *argv[])
|
||||
if (!kerneldir) {
|
||||
struct utsname buf;
|
||||
uname(&buf);
|
||||
- kerneldir = strdup(buf.version);
|
||||
+ if (asprintf(&kerneldir, "%s%s", "/lib/modules/", buf.release) < 0) {
|
||||
+ log_error("Out of memory!");
|
||||
+ exit(EXIT_FAILURE);
|
||||
+ }
|
||||
}
|
||||
|
||||
if (arg_modalias) {
|
||||
--
|
||||
2.33.0
|
||||
|
||||
27
backport-fix-install-segfault-on-popen-error.patch
Normal file
27
backport-fix-install-segfault-on-popen-error.patch
Normal file
@ -0,0 +1,27 @@
|
||||
From 5c2f72f152ec319a8001d1ff0bfd1f81a9130b04 Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Sokolov <keremet@altlinux.org>
|
||||
Date: Thu, 21 Oct 2021 09:01:07 +0300
|
||||
Subject: [PATCH] fix(install): segfault on popen error
|
||||
|
||||
---
|
||||
src/install/dracut-install.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c
|
||||
index 4ec65a5a..9a53be15 100644
|
||||
--- a/install/dracut-install.c
|
||||
+++ b/install/dracut-install.c
|
||||
@@ -550,6 +550,10 @@ static int resolve_deps(const char *src)
|
||||
ret = 0;
|
||||
|
||||
fptr = popen(cmd, "r");
|
||||
+ if (fptr == NULL) {
|
||||
+ log_error("Error '%s' initiating pipe stream from '%s'", strerror(errno), cmd);
|
||||
+ exit(EXIT_FAILURE);
|
||||
+ }
|
||||
|
||||
while (!feof(fptr)) {
|
||||
char *p;
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
From 4855242ce5cb586afd2eebd91df57ce1d28ae6b5 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Wenzel <alexander.wenzel@qbeyond.de>
|
||||
Date: Fri, 12 Nov 2021 06:58:05 +0100
|
||||
Subject: [PATCH] fix(man): default value of rd.retry was increased to 180
|
||||
seconds
|
||||
|
||||
The man page still states the old value of 30 seconds,
|
||||
which does not reflect the current situation of 180 seconds.
|
||||
---
|
||||
man/dracut.cmdline.7.asc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/man/dracut.cmdline.7.asc b/man/dracut.cmdline.7.asc
|
||||
index bb351f4e..23f8b8d8 100644
|
||||
--- a/dracut.cmdline.7.asc
|
||||
+++ b/dracut.cmdline.7.asc
|
||||
@@ -151,7 +151,7 @@ Misc
|
||||
|
||||
**rd.retry=**__<seconds>__::
|
||||
specify how long dracut should retry the initqueue to configure devices.
|
||||
- The default is 30 seconds. After 2/3 of the time, degraded raids are force
|
||||
+ The default is 180 seconds. After 2/3 of the time, degraded raids are force
|
||||
started. If you have hardware, which takes a very long time to announce its
|
||||
drives, you might want to extend this value.
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
From d364ce8334fef96f48492bd0fb3b7deac37bbb66 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Wenzel <alexander.wenzel@qbeyond.de>
|
||||
Date: Tue, 2 Nov 2021 09:25:56 +0100
|
||||
Subject: [PATCH] fix(mdraid): allow UUID comparison for more than one UUID
|
||||
|
||||
If the system provides more than one UUID, the _MD_UUID var
|
||||
contains a line break after each UUID. Therefore the strstr
|
||||
function could not find any UUID, caused by the additional
|
||||
spaces provided to the function.
|
||||
|
||||
Furthermore this could lead to a boot interruption, because
|
||||
the start of a degraded raid1 won't be executed. So, manual
|
||||
interaction is necessary.
|
||||
---
|
||||
modules.d/90mdraid/mdraid_start.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/modules.d/90mdraid/mdraid_start.sh b/modules.d/90mdraid/mdraid_start.sh
|
||||
index 9ac171d3..7b3d0de7 100755
|
||||
--- a/modules.d/90mdraid/mdraid_start.sh
|
||||
+++ b/modules.d/90mdraid/mdraid_start.sh
|
||||
@@ -54,7 +54,7 @@ _md_force_run() {
|
||||
_UUID=$(str_replace "$_UUID" ":" "")
|
||||
|
||||
# check if we should handle this device
|
||||
- strstr " $_MD_UUID " " $_UUID " || continue
|
||||
+ strstr "$_MD_UUID" "$_UUID" || continue
|
||||
|
||||
_md_start "${_md}" "${_offroot}"
|
||||
done
|
||||
--
|
||||
2.33.0
|
||||
|
||||
76
backport-fix-multipath-revise-multipathd-stop.patch
Normal file
76
backport-fix-multipath-revise-multipathd-stop.patch
Normal file
@ -0,0 +1,76 @@
|
||||
From 7b8c78ff43a1f8e3690969e980d3d9d1dcb00c87 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 31 Mar 2021 10:18:27 +0200
|
||||
Subject: [PATCH] fix(multipath): revise multipathd-stop
|
||||
|
||||
A shellcheck regression quoted `HARD` in
|
||||
```shell
|
||||
kill "$HARD" "$pid" > /dev/null 2>&1
|
||||
```
|
||||
|
||||
which would error on an empty "HARD".
|
||||
|
||||
Instead of fixing this, use `pkill` instead and also add it to the
|
||||
non-optional list of binaries to install, which was revised also.
|
||||
|
||||
Fixes: https://github.com/dracutdevs/dracut/issues/1275
|
||||
---
|
||||
modules.d/90multipath/module-setup.sh | 15 ++++++++++-----
|
||||
modules.d/90multipath/multipathd-stop.sh | 16 +++++++++-------
|
||||
2 files changed, 19 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
|
||||
index 48a9d09..31b1b86 100755
|
||||
--- a/modules.d/90multipath/module-setup.sh
|
||||
+++ b/modules.d/90multipath/module-setup.sh
|
||||
@@ -79,12 +79,16 @@ install() {
|
||||
}
|
||||
}
|
||||
|
||||
- inst_multiple -o \
|
||||
- dmsetup \
|
||||
- kpartx \
|
||||
+ inst_multiple \
|
||||
+ pkill \
|
||||
+ pidof \
|
||||
+ kpartx \
|
||||
+ dmsetup \
|
||||
+ multipath \
|
||||
+ multipathd
|
||||
+
|
||||
+ inst_multiple -o \
|
||||
mpath_wait \
|
||||
- multipath \
|
||||
- multipathd \
|
||||
mpathpersist \
|
||||
xdrgetuid \
|
||||
xdrgetprio \
|
||||
diff --git a/modules.d/90multipath/multipathd-stop.sh b/modules.d/90multipath/multipathd-stop.sh
|
||||
index 57a0728..b11c987 100755
|
||||
--- a/modules.d/90multipath/multipathd-stop.sh
|
||||
+++ b/modules.d/90multipath/multipathd-stop.sh
|
||||
@@ -1,12 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -e /etc/multipath.conf ]; then
|
||||
- HARD=""
|
||||
- while pidof multipathd >/dev/null 2>&1; do
|
||||
- for pid in $(pidof multipathd); do
|
||||
- kill $HARD $pid >/dev/null 2>&1
|
||||
- done
|
||||
- HARD="-9"
|
||||
- done
|
||||
+ pkill multipathd > /dev/null 2>&1
|
||||
+
|
||||
+ if pidof multipathd > /dev/null 2>&1; then
|
||||
+ sleep 0.2
|
||||
+ fi
|
||||
+
|
||||
+ if pidofmultipathd>/dev/null 2>&1;then
|
||||
+ pkill -9 multipathd>/dev/null 2>&1
|
||||
+ fi
|
||||
fi
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,70 @@
|
||||
From 7938935267dd8824f074adf84c219340ad4c8db6 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Valena <pvalena@redhat.com>
|
||||
Date: Mon, 22 Nov 2021 16:40:39 +0100
|
||||
Subject: [PATCH] fix(network): add errors and warnings when network interface
|
||||
does not exist
|
||||
|
||||
End with error, or show a warning when nonexistent device is specified for network setup like
|
||||
`ip=10.12.8.12::10.12.255.254:255.255.0.0:xk12:eth0:off`.
|
||||
|
||||
I've added the error only for `write-ifcfg.sh`, as I think no such setup should be written.
|
||||
|
||||
Resolves: #1712424
|
||||
---
|
||||
modules.d/35network-legacy/ifup.sh | 6 +++++-
|
||||
modules.d/35network-legacy/parse-ip-opts.sh | 5 +++++
|
||||
modules.d/45ifcfg/write-ifcfg.sh | 5 +++++
|
||||
3 files changed, 15 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/modules.d/35network-legacy/ifup.sh b/modules.d/35network-legacy/ifup.sh
|
||||
index a05c4698..0dc9541c 100755
|
||||
--- a/modules.d/35network-legacy/ifup.sh
|
||||
+++ b/modules.d/35network-legacy/ifup.sh
|
||||
@@ -446,7 +446,11 @@ for p in $(getargs ip=); do
|
||||
|
||||
# If this option isn't directed at our interface, skip it
|
||||
if [ -n "$dev" ]; then
|
||||
- [ "$dev" != "$netif" ] && continue
|
||||
+ if [ "$dev" != "$netif" ]; then
|
||||
+ [ ! -e "/sys/class/net/$dev" ] \
|
||||
+ && warn "Network interface '$dev' does not exist!"
|
||||
+ continue
|
||||
+ fi
|
||||
else
|
||||
iface_is_enslaved "$netif" && continue
|
||||
fi
|
||||
diff --git a/modules.d/35network-legacy/parse-ip-opts.sh b/modules.d/35network-legacy/parse-ip-opts.sh
|
||||
index 35917bbf..19af8789 100755
|
||||
--- a/modules.d/35network-legacy/parse-ip-opts.sh
|
||||
+++ b/modules.d/35network-legacy/parse-ip-opts.sh
|
||||
@@ -97,6 +97,11 @@ for p in $(getargs ip=); do
|
||||
fi
|
||||
# IFACES list for later use
|
||||
IFACES="$IFACES $dev"
|
||||
+
|
||||
+ # Interface should exist
|
||||
+ if [ ! -e "/sys/class/net/$dev" ]; then
|
||||
+ warn "Network interface '$dev' does not exist"
|
||||
+ fi
|
||||
fi
|
||||
|
||||
# Do we need to check for specific options?
|
||||
diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
|
||||
index 5f71515a..345863f9 100755
|
||||
--- a/modules.d/45ifcfg/write-ifcfg.sh
|
||||
+++ b/modules.d/45ifcfg/write-ifcfg.sh
|
||||
@@ -103,6 +103,11 @@ interface_bind() {
|
||||
local _netif="$1"
|
||||
local _macaddr="$2"
|
||||
|
||||
+ if [ ! -e "/sys/class/net/$_netif" ]; then
|
||||
+ derror "Cannot find network interface '$_netif'!"
|
||||
+ return 1
|
||||
+ fi
|
||||
+
|
||||
# see, if we can bind it to some hw parms
|
||||
if hw_bind "$_netif" "$_macaddr"; then
|
||||
# only print out DEVICE, if it's user assigned
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,36 @@
|
||||
From 6c71ba4121ae64ccd13fefba68ca327ac623810f Mon Sep 17 00:00:00 2001
|
||||
From: Coiby Xu <coxu@redhat.com>
|
||||
Date: Wed, 14 Jul 2021 15:26:10 +0800
|
||||
Subject: [PATCH] fix(qeth_rules): check the existence of
|
||||
/sys/devices/qeth/*/online beforehand
|
||||
|
||||
On s390x KVM machines, the follow errors occurred,
|
||||
$ kdumpctl rebuild
|
||||
kdump: Rebuilding /boot/initramfs-4.18.0-321.el8.s390xkdump.img
|
||||
/usr/lib/dracut/modules.d/95qeth_rules/module-setup.sh: line 13:
|
||||
/sys/devices/qeth/*/online: No such file or directory
|
||||
/usr/lib/dracut/modules.d/95qeth_rules/module-setup.sh: line 13:
|
||||
/sys/devices/qeth/*/online: No such file or directory
|
||||
|
||||
because s390x KVM uses virtual devices and /sys/devices/qeth/*/online
|
||||
doesn't exist. Eliminate this error by checking the existence
|
||||
beforehand.
|
||||
---
|
||||
modules.d/95qeth_rules/module-setup.sh | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/modules.d/95qeth_rules/module-setup.sh b/modules.d/95qeth_rules/module-setup.sh
|
||||
index 195ad48..fe37686 100755
|
||||
--- a/modules.d/95qeth_rules/module-setup.sh
|
||||
+++ b/modules.d/95qeth_rules/module-setup.sh
|
||||
@@ -10,6 +10,7 @@ check() {
|
||||
|
||||
[[ $hostonly ]] && {
|
||||
for i in /sys/devices/qeth/*/online; do
|
||||
+ [ ! -f "$i" ] && continue
|
||||
read -r _online < "$i"
|
||||
[ "$_online" -eq 1 ] && return 0
|
||||
done
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,55 @@
|
||||
From d15441cef47e7d741923b779fef88be79e44b389 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Fri, 26 Mar 2021 10:29:28 +0100
|
||||
Subject: [PATCH] fix(qeth_rules): shellcheck for modules.d/95qeth_rules
|
||||
---
|
||||
modules.d/95qeth_rules/module-setup.sh | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/modules.d/95qeth_rules/module-setup.sh b/modules.d/95qeth_rules/module-setup.sh
|
||||
index 543dd23..195ad48 100755
|
||||
--- a/modules.d/95qeth_rules/module-setup.sh
|
||||
+++ b/modules.d/95qeth_rules/module-setup.sh
|
||||
@@ -10,8 +10,8 @@ check() {
|
||||
|
||||
[[ $hostonly ]] && {
|
||||
for i in /sys/devices/qeth/*/online; do
|
||||
- read _online < $i
|
||||
- [ $_online -eq 1 ] && return 0
|
||||
+ read -r _online < "$i"
|
||||
+ [ "$_online" -eq 1 ] && return 0
|
||||
done
|
||||
}
|
||||
return 255
|
||||
@@ -25,7 +25,7 @@ installkernel() {
|
||||
# called by dracut
|
||||
install() {
|
||||
ccwid() {
|
||||
- qeth_path=$(readlink -e -q $1/device)
|
||||
+ qeth_path=$(readlink -e -q "$1"/device)
|
||||
basename "$qeth_path"
|
||||
}
|
||||
|
||||
@@ -44,15 +44,15 @@ install() {
|
||||
# not readable in qeth interfaces
|
||||
# that have just been assembled, ignore
|
||||
# read error and assume no carrier
|
||||
- read carrier 2>/dev/null < "$1/carrier"
|
||||
+ read -r carrier 2> /dev/null < "$1/carrier"
|
||||
[ "$carrier" -eq 1 ] && return 0
|
||||
return 1;
|
||||
}
|
||||
|
||||
for dev in /sys/class/net/*; do
|
||||
- has_carrier $dev || continue
|
||||
- id=$(ccwid $dev)
|
||||
- [ -n "$id" ] && inst_rules_qeth $id
|
||||
+ has_carrier "$dev" || continue
|
||||
+ id=$(ccwid "$dev")
|
||||
+ [ -n "$id" ] && inst_rules_qeth "$id"
|
||||
done
|
||||
|
||||
inst_simple /usr/lib/udev/collect
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
From 0b97790626bff3579755b38f78a9c524a075cfcc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
|
||||
Date: Wed, 10 Nov 2021 12:14:15 +0100
|
||||
Subject: [PATCH] fix(resume): check for presence of /sys/power/resume
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
On platforms where the kernel is built without suspend/resume support we
|
||||
see "cat: /sys/power/resume: No such file or directory" message when
|
||||
creating an initrd image. Check for the presence of /sys/power/resume
|
||||
first before reading it.
|
||||
|
||||
Signed-off-by: Dan Horák <dan@danny.cz>
|
||||
---
|
||||
modules.d/95resume/module-setup.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh
|
||||
index f0507b13..b47acbec 100755
|
||||
--- a/modules.d/95resume/module-setup.sh
|
||||
+++ b/modules.d/95resume/module-setup.sh
|
||||
@@ -13,7 +13,7 @@ check() {
|
||||
# Only support resume if hibernation is currently on
|
||||
# and no swap is mounted on a net device
|
||||
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
||||
- swap_on_netdevice || [[ "$(cat /sys/power/resume)" == "0:0" ]] && return 255
|
||||
+ swap_on_netdevice || [[ -f /sys/power/resume && "$(cat /sys/power/resume)" == "0:0" ]] && return 255
|
||||
}
|
||||
|
||||
return 0
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,40 @@
|
||||
From b9ba3c8bb8f0f1328cd1ffaa8dbf64585b28c474 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Renaud=20M=C3=A9trich?= <rmetrich@redhat.com>
|
||||
Date: Tue, 16 Nov 2021 11:15:52 +0100
|
||||
Subject: [PATCH] fix(shutdown): be robust against forced shutdown
|
||||
|
||||
When a forced shutdown is issued through sending a burst of Ctrl-Alt-Del
|
||||
keys, systemd sends SIGTERM to all processes. This ends up killing
|
||||
dracut-initramfs-restore as well, preventing the script from detecting
|
||||
that the unpack of the initramfs is incomplete, which later causes a
|
||||
crash to happen when "shutdown" tries to execute from the unpacked
|
||||
initramfs.
|
||||
|
||||
This fix makes sure dracut-initramfs-restore remains alive to detect
|
||||
the unpack failed (because cpio was killed by systemd too).
|
||||
|
||||
Refs:
|
||||
* https://bugzilla.redhat.com/show_bug.cgi?id=2023665
|
||||
---
|
||||
dracut-initramfs-restore.sh | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/dracut-initramfs-restore.sh b/dracut-initramfs-restore.sh
|
||||
index abe6b1e2..d97030a3 100644
|
||||
--- a/dracut-initramfs-restore.sh
|
||||
+++ b/dracut-initramfs-restore.sh
|
||||
@@ -6,6 +6,11 @@ set -e
|
||||
[ -e /run/initramfs/bin/sh ] && exit 0
|
||||
[ -e /run/initramfs/.need_shutdown ] || exit 0
|
||||
|
||||
+# SIGTERM signal is received upon forced shutdown: ignore the signal
|
||||
+# We want to remain alive to be able to trap unpacking errors to avoid
|
||||
+# switching root to an incompletely unpacked initramfs
|
||||
+trap 'echo "Received SIGTERM signal, ignoring!" >&2' TERM
|
||||
+
|
||||
KERNEL_VERSION="$(uname -r)"
|
||||
|
||||
[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
From 2f091b17075f81ff490b05d3d566d736fc32f0be Mon Sep 17 00:00:00 2001
|
||||
From: Masahiro Matsuya <mmatsuya@redhat.com>
|
||||
Date: Fri, 11 Jun 2021 10:40:04 +0900
|
||||
Subject: [PATCH] fix(url-lib): make pre-pivot hook separetely per nfs mount
|
||||
|
||||
---
|
||||
modules.d/45url-lib/url-lib.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/modules.d/45url-lib/url-lib.sh b/modules.d/45url-lib/url-lib.sh
|
||||
index e1e7d5af..972596a1 100755
|
||||
--- a/modules.d/45url-lib/url-lib.sh
|
||||
+++ b/modules.d/45url-lib/url-lib.sh
|
||||
@@ -159,7 +159,7 @@ nfs_fetch_url() {
|
||||
local mntdir="$(mkuniqdir /run nfs_mnt)"
|
||||
mount_nfs "$nfs:$server:$filepath${options:+:$options}" "$mntdir"
|
||||
# lazy unmount during pre-pivot hook
|
||||
- inst_hook --hook pre-pivot --name 99url-lib-umount-nfs umount -l -- "$mntdir"
|
||||
+ inst_hook --hook pre-pivot --name 99url-lib-umount-nfs-"$(basename "$mntdir")" umount -l -- "$mntdir"
|
||||
fi
|
||||
|
||||
if [ -z "$outloc" ]; then
|
||||
--
|
||||
2.33.0
|
||||
|
||||
28
dracut.spec
28
dracut.spec
@ -9,7 +9,7 @@
|
||||
|
||||
Name: dracut
|
||||
Version: 050
|
||||
Release: 6
|
||||
Release: 7
|
||||
|
||||
Summary: Initramfs generator using udev
|
||||
|
||||
@ -42,6 +42,29 @@ Patch0014: backport-fix-always-use-mkdir-p.patch
|
||||
Patch0015: backport-fix-dracut.sh-omission-is-an-addition-to-other-omiss.patch
|
||||
Patch0016: backport-dracut-install-ignore-bogus-preload-libs.patch
|
||||
|
||||
Patch0017: backport-fix-multipath-revise-multipathd-stop.patch
|
||||
Patch0018: backport-fix-install-handle-LIB-in-ldd-output-parsing.patch
|
||||
Patch0019: backport-fix-install-sane-default-kerneldir.patch
|
||||
Patch0020: backport-cryptroot-ask-no-warn-if-run-cryptsetup-exist.patch
|
||||
Patch0021: backport-dracut-functions-fix-find_binary-to-return-full-path.patch
|
||||
Patch0022: backport-fix-dracut.sh-handle-i-option-to-include-files-begin.patch
|
||||
Patch0023: backport-fix-dracut.sh-handle-symlinks-appropriately-while-us.patch
|
||||
Patch0024: backport-fix-crypt-gpg-execute-card-status-on-each-try.patch
|
||||
Patch0025: backport-fix-url-lib-make-pre-pivot-hook-separetely-per-nfs-m.patch
|
||||
Patch0026: backport-fix-qeth_rules-shellcheck-for-modules.d-95qeth_rules.patch
|
||||
Patch0027: backport-fix-qeth_rules-check-the-existence-of-sys-devices-qe.patch
|
||||
Patch0028: backport-fix-dracut-install-tweaks-to-get_real_file.patch
|
||||
Patch0029: backport-fix-base-tr-needs-to-be-installed.patch
|
||||
Patch0030: backport-fix-install-segfault-on-popen-error.patch
|
||||
Patch0031: backport-fix-shutdown-be-robust-against-forced-shutdown.patch
|
||||
Patch0032: backport-fix-man-default-value-of-rd.retry-was-increased-to-1.patch
|
||||
Patch0033: backport-fix-network-add-errors-and-warnings-when-network-int.patch
|
||||
Patch0034: backport-dracut-functions-add-ip_params_for_remote_addr-helpe.patch
|
||||
Patch0035: backport-95resume-Do-not-resume-on-iSCSI-FCoE-or-NBD.patch
|
||||
Patch0036: backport-fix-mdraid-allow-UUID-comparison-for-more-than-one-U.patch
|
||||
Patch0037: backport-fix-resume-check-for-presence-of-sys-power-resume.patch
|
||||
Patch0038: backport-dracut.sh-add-check-for-invalid-configuration-files.patch
|
||||
|
||||
Source1: https://www.gnu.org/licenses/lgpl-2.1.txt
|
||||
Source2: openEuler.conf.example
|
||||
|
||||
@ -491,6 +514,9 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Dec 19 2023 zhangruifang <zhangruifang@h-partners.com> - 050-7
|
||||
- backport patchs from upstream
|
||||
|
||||
* Thu Dec 7 2023 wangyuhang <wangyuhang27@huawei.com> - 050-6
|
||||
- [add] backport patches from upstream
|
||||
backport-dracut-install-ignore-bogus-preload-libs.patch
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user