import CS dracut-057-102.git20250818.el9

This commit is contained in:
eabdullin 2025-09-15 11:53:54 +00:00
parent 0bd7c8bbd2
commit 668cd5f0c0
14 changed files with 786 additions and 1 deletions

241
SOURCES/0087.patch Normal file
View File

@ -0,0 +1,241 @@
From 844ce987255eddd9cc36b3e2c6070e9a82403750 Mon Sep 17 00:00:00 2001
From: Pavel Valena <pvalena@redhat.com>
Date: Mon, 9 Jun 2025 22:32:14 +0200
Subject: [PATCH] chore: sync backport tool with rawhide
---
.distro/backport_fix.sh | 225 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 225 insertions(+)
diff --git a/.distro/backport_fix.sh b/.distro/backport_fix.sh
new file mode 100755
index 00000000..50e4c233
--- /dev/null
+++ b/.distro/backport_fix.sh
@@ -0,0 +1,225 @@
+#!/usr/bin/zsh
+#
+# .distro/backport_fix.sh [options] DISTRO_VERSION JIRA_ISSUE DRACUT_PR [COMMIT_COUNT [COMMITS_ORIGIN_REPO]]
+#
+
+set -xe
+zsh -n "$0"
+
+[[ -z "$EDITOR" ]] && EDITOR=nano
+
+: "OPT: continue after solving cherry-pick conflict"
+[[ "$1" == "-c" ]] && {
+ {
+ shift ||:
+ } 2>/dev/null
+ CON=y
+ :
+} || CON=
+
+: "OPT: delete conflicting branch"
+[[ "$1" == "-d" ]] && {
+ {
+ shift ||:
+ } 2>/dev/null
+ DEL=y
+ :
+} || DEL=
+
+: "OPT: Fedora distro"
+[[ "$1" == "-f" ]] && {
+ {
+ shift ||:
+ } 2>/dev/null
+ FED=y
+ :
+} || FED=
+
+: "OPT: local changes only"
+[[ "$1" == "-l" ]] && {
+ {
+ shift ||:
+ } 2>/dev/null
+ LOC=y
+
+} || LOC=
+
+: "OPT: expect ref (commit-ish to get commits from) instead of PR #"
+[[ "$1" == "-r" ]] && {
+ {
+ shift ||:
+ } 2>/dev/null
+ REF=y
+
+} || REF=
+
+: "OPT: skip already applied commits"
+[[ "$1" == "-s" ]] && {
+ SKI="$2"
+ {
+ shift 2 ||:
+ } 2>/dev/null
+ :
+} || SKI=0
+
+: 'No more opts (check order)'
+{
+ [[ -n "$1" ]] && [[ "${1:0:1}" == "-" ]] && exit 4
+
+} 2>/dev/null
+
+{ echo ; } 2>/dev/null
+
+: 'DISTRO version #'
+rv="${1}"
+{
+ [[ -n "$rv" ]]
+ shift
+} 2>/dev/null
+
+: 'Jira issue #'
+bn="${1}"
+{
+ [[ -n "$bn" ]]
+ shift ||:
+} 2>/dev/null
+
+: 'Dracut pull request or REF'
+pr="${1}"
+{
+ [[ -n "${pr}" ]]
+ shift ||:
+} 2>/dev/null
+
+: 'Commit count'
+cc="${1:-1}"
+{
+ [[ -n "$cc" ]]
+ shift ||:
+} 2>/dev/null
+
+: 'Commits origin repo'
+or="${1:-upstream-ng}"
+{
+ [[ -n "$or" ]]
+ shift ||:
+} 2>/dev/null
+
+: 'No extra arg'
+{
+ [[ -z "$1" ]]
+
+} 2>/dev/null
+
+{ echo ; } 2>/dev/null
+
+[[ -z "$FED" ]] && dist=rhel || dist=fedora
+
+remote="${dist}-${rv}"
+
+[[ -z "$REF" ]] && rf="pr${pr}" || rf="${or}/${pr}"
+
+{ echo ; } 2>/dev/null
+
+[[ -z "$CON" ]] && {
+ : "Create ${remote}-fix-${bn}?"
+ read '?-->continue?'
+
+ gitt
+ gitc "${remote}"
+
+ [[ -n "$DEL" ]] && gitbd "${remote}-fix-${bn}" ||:
+
+ gitp "${remote}"
+
+ gitcb "${remote}-fix-${bn}"
+
+ gitrh "${remote}/main"
+
+ [[ -z "$REF" ]] && gitf "${or}" "refs/pull/${pr}/head:${rf}"
+}
+
+: "List Commits"
+cis="$(gitl1 "${rf}" "-${cc}" --reverse | cut -d' ' -f1)"
+[[ -n "${cis}" ]]
+
+com="\nCherry-picked commits:\n${cis}\n"
+
+com="${com}\nResolves: RHEL-${bn}\n"
+
+echo -e "${com}"
+
+read '?-->continue?'
+
+i=0
+echo "${cis}" \
+| while read ci; do
+ [[ -n "${ci}" ]] || continue
+
+ i=$(($i+1))
+
+ [[ $i -le $SKI ]] && continue
+
+ gityx "${ci}" || {
+
+ mod="$(gits | grep '^\s*both modified: ')" ||:
+
+ [[ -z "$mod" ]] || {
+
+ mod="$(echo "$mod" | tr -s ' ' | cut -d' ' -f3)"
+
+ ls -d $mod
+
+ $EDITOR $mod
+
+ gita $mod
+
+ gitdh
+
+ gits
+
+ exit 2
+ }
+
+ gits | grep -q '^nothing to commit' \
+ && {
+ gits | grep 'git cherry-pick --skip'
+
+ gity --skip
+ :
+ } || {
+
+ gits
+
+ exit 3
+ }
+ }
+ done
+
+read '?-->continue?'
+
+[[ -z "$CON" ]] && {
+ [[ ${cc} -gt 1 ]] && {
+
+ gitei HEAD~${cc}
+ :
+ } || {
+
+ gitia --amend
+ }
+ :
+} || {
+ gits | grep -q '^\s*both modified: ' \
+ && gita `gits | grep '^\s*both modified: ' | tr -s ' ' | cut -d' ' -f3`
+
+ gityc ||:
+}
+
+gitl ||:
+gitlp ||:
+
+[[ -z "$LOC" ]] || exit 0
+
+gituu "${remote}"
+
+gh pr create -f -a '@me' -R "redhat-plumbers/dracut-rhel${rv}"

23
SOURCES/0088.patch Normal file
View File

@ -0,0 +1,23 @@
From 5dcc483cbe28534671aa12f4f651d85267911a72 Mon Sep 17 00:00:00 2001
From: Pavel Valena <pvalena@redhat.com>
Date: Mon, 9 Jun 2025 22:52:21 +0200
Subject: [PATCH] ci: switch differential-shellcheck to ubuntu-latest
---
.github/workflows/differential-shellcheck.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/differential-shellcheck.yml b/.github/workflows/differential-shellcheck.yml
index 63a022bf..20e10c17 100644
--- a/.github/workflows/differential-shellcheck.yml
+++ b/.github/workflows/differential-shellcheck.yml
@@ -5,7 +5,7 @@ on:
jobs:
test:
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-latest
steps:
- name: Repository checkout

33
SOURCES/0089.patch Normal file
View File

@ -0,0 +1,33 @@
From 6d0f4d436f54ac07eb3ffcc8879b8f8477506a00 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Tue, 20 May 2025 09:31:52 +0200
Subject: [PATCH] fix(dracut.sh): don't pass empty string as dir
That causes dropindirs_sort() to look for .conf files in / due to
expansion:
for d in "$@"; do
for i in "$d/"*"$suffix"; do
Fixes #1275
(cherry picked from commit 000cfa0c278c0858e81c8dd2ff7231f069f0afb1)
Resolves: RHEL-92584
---
dracut.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut.sh b/dracut.sh
index dcdeaf5f..43bc2ad0 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -962,7 +962,7 @@ if [[ -f $conffile ]]; then
fi
# source our config dir
-for f in $(dropindirs_sort ".conf" "$confdir" "$add_confdir" "$dracutbasedir/dracut.conf.d"); do
+for f in $(dropindirs_sort ".conf" "$confdir" ${add_confdir:+"$add_confdir"} "$dracutbasedir/dracut.conf.d"); do
check_conf_file "$f"
# shellcheck disable=SC1090
[[ -e $f ]] && . "$f"

38
SOURCES/0090.patch Normal file
View File

@ -0,0 +1,38 @@
From 31bc18ffe0bdec790e18166e44c8a545410f8198 Mon Sep 17 00:00:00 2001
From: Antonio Alvarez Feijoo <antonio.feijoo@suse.com>
Date: Wed, 21 Sep 2022 11:54:17 +0200
Subject: [PATCH] fix(systemd): add missing modprobe@.service
sys-kernel-config.mount needs modprobe@configfs.service since systemd v246.7
(https://github.com/systemd/systemd/commit/42cc2855), so the kernel configfs
fails to mount in the initrd.
(cherry picked from commit 928252a145ca44627ba5873e01245eabe246992f)
Resolves: RHEL-97169
---
modules.d/00systemd/module-setup.sh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh
index 38393855..2d6fc9ff 100755
--- a/modules.d/00systemd/module-setup.sh
+++ b/modules.d/00systemd/module-setup.sh
@@ -83,6 +83,7 @@ install() {
\
"$systemdsystemunitdir"/sys-kernel-config.mount \
\
+ "$systemdsystemunitdir"/modprobe@.service \
"$systemdsystemunitdir"/kmod-static-nodes.service \
"$systemdsystemunitdir"/systemd-tmpfiles-setup.service \
"$systemdsystemunitdir"/systemd-tmpfiles-setup-dev.service \
@@ -176,6 +177,8 @@ install() {
/etc/systemd/journald.conf.d/*.conf \
/etc/systemd/system.conf \
/etc/systemd/system.conf.d/*.conf \
+ "$systemdsystemconfdir"/modprobe@.service \
+ "$systemdsystemconfdir/modprobe@.service.d/*.conf" \
/etc/hosts \
/etc/hostname \
/etc/nsswitch.conf \

52
SOURCES/0093.patch Normal file
View File

@ -0,0 +1,52 @@
From 27a740a5b37b5cc5dee808d4818a82746b98638b Mon Sep 17 00:00:00 2001
From: Coiby Xu <coxu@redhat.com>
Date: Mon, 26 May 2025 15:34:30 +0800
Subject: [PATCH] fix: let check_vol_slaves_all return 1 when checks on all
slaves fail
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Currently check_vol_slaves_all return 0 even after checks on all slaves
fail. And this leads to an issue that "dracut -hostonly-mode strict"
gets stuck forever because instmods keeps waiting for user input when
it's passed empty argument in the kernel-modules module.
Fixes: c7c8c498 ("dracut-functions.sh: catch all lvm slaves")
Reported-by: Tomáš Bžatek <tbzatek@redhat.com>
Signed-off-by: Coiby Xu <coxu@redhat.com>
(cherry picked from commit 1fcfb2bffdad22873a804043eeeb9bb65a99caa8)
Resolves: RHEL-104222
---
dracut-functions.sh | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 2e582ebc..0cf605dc 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -661,7 +661,7 @@ check_vol_slaves() {
}
check_vol_slaves_all() {
- local _vg _pv _majmin
+ local _vg _pv _majmin _ret=1
_majmin="$2"
_dm="/sys/dev/block/$_majmin/dm"
[[ -f $_dm/uuid && $(< "$_dm"/uuid) =~ LVM-* ]] || return 1
@@ -675,11 +675,10 @@ check_vol_slaves_all() {
fi
for _pv in $(lvm vgs --noheadings -o pv_name "$_vg" 2> /dev/null); do
- check_block_and_slaves_all "$1" "$(get_maj_min "$_pv")"
+ check_block_and_slaves_all "$1" "$(get_maj_min "$_pv")" && _ret=0
done
- return 0
fi
- return 1
+ return $_ret
}
# fs_get_option <filesystem options> <search for option>

43
SOURCES/0094.patch Normal file
View File

@ -0,0 +1,43 @@
From 61c98d1ce74f96e1089ada51b161632c0ca1e079 Mon Sep 17 00:00:00 2001
From: Tomas Bzatek <tbzatek@redhat.com>
Date: Tue, 3 Jun 2025 18:34:39 +0200
Subject: [PATCH] improvement(74nvmf): lookup required NIC kernel modules for
NBFT interfaces
When dracut is called with '--hostonly-mode strict' and perhaps even
with --hostonly-nics '' as done by kdump/mkdumprd, all the kernel
modules related to hostonly networking are stripped down. In such
a case it is viable to lookup and install the required kernel modules
ourselves, based on any currently present nbft interfaces.
Note: the lookup depends on the current 'nbftX' network interface
naming.
Signed-off-by: Tomas Bzatek <tbzatek@redhat.com>
(cherry picked from commit e949a76aaa8f1a1e4cb01d4cacf89c69c7bbd801)
Resolves: RHEL-104222
---
modules.d/95nvmf/module-setup.sh | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/modules.d/95nvmf/module-setup.sh b/modules.d/95nvmf/module-setup.sh
index 0b90d8be..bf051e41 100755
--- a/modules.d/95nvmf/module-setup.sh
+++ b/modules.d/95nvmf/module-setup.sh
@@ -61,6 +61,14 @@ depends() {
installkernel() {
instmods nvme_fc lpfc qla2xxx
hostonly="" instmods nvme_tcp nvme_fabrics 8021q
+ # lookup NIC kernel modules for active NBFT interfaces
+ if [[ $hostonly ]]; then
+ for i in /sys/class/net/nbft*; do
+ [ -d "$i" ] || continue
+ _driver=$(basename "$(readlink -f "$i/device/driver/module")")
+ [ -z "$_driver" ] || instmods "$_driver"
+ done
+ fi
}
# called by dracut

36
SOURCES/0095.patch Normal file
View File

@ -0,0 +1,36 @@
From 5015e56e3dc0e67b8115cfbddb1b575cf0551784 Mon Sep 17 00:00:00 2001
From: Tomas Bzatek <tbzatek@redhat.com>
Date: Tue, 24 Jun 2025 16:50:31 +0200
Subject: [PATCH] fix(74nvmf): set root=nvmf
In a restricted image like kdump the kernel commandline argument root=
is typically absent. However it is required by the 45net-lib/netroot.sh
module that fails with:
[ 23.599862] dracut: FATAL: No or empty root= argument
[ 23.604956] dracut: Refusing to continue
Inspired by the 74iscsi module, let's set it to root=nvmf if not set
before.
Signed-off-by: Tomas Bzatek <tbzatek@redhat.com>
(cherry picked from commit a6dce328ea9738a558db848fa8dbed253b15ee3d)
Resolves: RHEL-104222
---
modules.d/95nvmf/parse-nvmf-boot-connections.sh | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/modules.d/95nvmf/parse-nvmf-boot-connections.sh b/modules.d/95nvmf/parse-nvmf-boot-connections.sh
index 66018371..4721efce 100755
--- a/modules.d/95nvmf/parse-nvmf-boot-connections.sh
+++ b/modules.d/95nvmf/parse-nvmf-boot-connections.sh
@@ -324,3 +324,7 @@ fi
/sbin/initqueue --settled --onetime --name nvmf-connect-settled /sbin/nvmf-autoconnect.sh settled
/sbin/initqueue --timeout --onetime --name nvmf-connect-timeout /sbin/nvmf-autoconnect.sh timeout
+
+# shellcheck disable=SC2034
+rootok=1
+[ -z "$root" ] && root="nvmf"

56
SOURCES/0096.patch Normal file
View File

@ -0,0 +1,56 @@
From f7e5515272ec62735a283addc642a3930ee5e943 Mon Sep 17 00:00:00 2001
From: Antonio Alvarez Feijoo <antonio.feijoo@suse.com>
Date: Mon, 3 Mar 2025 15:22:14 +0100
Subject: [PATCH] chore(multipath): remove `rd_NO_MULTIPATH` kernel command
line option
Deprecated since 778b3543609d8c9d32df7111229f4072d00d02f0 (Nov 25, 2014).
(cherry picked from commit 954420374a63be32f6ece5fc1476ba18163da1f7)
Related: RHEL-96106
---
man/dracut.cmdline.7.asc | 2 --
modules.d/90multipath/multipathd.service | 1 -
modules.d/90multipath/multipathd.sh | 2 +-
3 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/man/dracut.cmdline.7.asc b/man/dracut.cmdline.7.asc
index abe1ec3f..697f81d9 100644
--- a/man/dracut.cmdline.7.asc
+++ b/man/dracut.cmdline.7.asc
@@ -1383,8 +1383,6 @@ rd_NO_MD:: rd.md=0
rd_MD_UUID:: rd.md.uuid
-rd_NO_MULTIPATH: rd.multipath=0
-
rd_NFS_DOMAIN:: rd.nfs.domain
iscsi_initiator:: rd.iscsi.initiator
diff --git a/modules.d/90multipath/multipathd.service b/modules.d/90multipath/multipathd.service
index e8182533..1ff7201a 100644
--- a/modules.d/90multipath/multipathd.service
+++ b/modules.d/90multipath/multipathd.service
@@ -11,7 +11,6 @@ Conflicts=shutdown.target
Conflicts=initrd-cleanup.service
ConditionKernelCommandLine=!nompath
ConditionKernelCommandLine=!rd.multipath=0
-ConditionKernelCommandLine=!rd_NO_MULTIPATH
ConditionKernelCommandLine=!multipath=off
ConditionVirtualization=!container
diff --git a/modules.d/90multipath/multipathd.sh b/modules.d/90multipath/multipathd.sh
index 385a95fb..62649003 100755
--- a/modules.d/90multipath/multipathd.sh
+++ b/modules.d/90multipath/multipathd.sh
@@ -5,7 +5,7 @@ if [ "$(getarg rd.multipath)" = "default" ] && [ ! -e /etc/multipath.conf ]; the
mpathconf --enable
fi
-if getargbool 1 rd.multipath -d -n rd_NO_MULTIPATH && [ -e /etc/multipath.conf ]; then
+if getargbool 1 rd.multipath && [ -e /etc/multipath.conf ]; then
modprobe dm-multipath
multipathd -B || multipathd
need_shutdown

46
SOURCES/0097.patch Normal file
View File

@ -0,0 +1,46 @@
From b0c8aaecda1d62aa925d70fcadc071e9c85c2621 Mon Sep 17 00:00:00 2001
From: Antonio Alvarez Feijoo <antonio.feijoo@suse.com>
Date: Mon, 3 Mar 2025 15:23:41 +0100
Subject: [PATCH] refactor(multipath): remove custom multipathd.service
Install `multipathd.service` provided by upstream, and add a dropin to support
`rd.multipath=0`.
(cherry picked from commit bb343fa83de4c73890e9054329249a1491733a5c)
Resolves: RHEL-96106
---
modules.d/90multipath/module-setup.sh | 3 ++-
modules.d/90multipath/multipathd-dracut.conf | 2 ++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
index 541e243a..2f4ac869 100755
--- a/modules.d/90multipath/module-setup.sh
+++ b/modules.d/90multipath/module-setup.sh
@@ -90,6 +90,7 @@ install() {
[[ -d $config_dir ]] || config_dir=/etc/multipath/conf.d
inst_multiple \
+ "$systemdsystemunitdir"/multipathd.service \
pkill \
pidof \
kpartx \
@@ -137,7 +138,7 @@ install() {
inst_simple "${moddir}/multipathd-configure.service" "${systemdsystemunitdir}/multipathd-configure.service"
$SYSTEMCTL -q --root "$initdir" enable multipathd-configure.service
fi
- inst_simple "${moddir}/multipathd.service" "${systemdsystemunitdir}/multipathd.service"
+ inst_simple "$moddir/multipathd-dracut.conf" "$systemdsystemunitdir/multipathd.service.d/multipathd-dracut.conf"
$SYSTEMCTL -q --root "$initdir" enable multipathd.service
else
inst_hook pre-trigger 02 "$moddir/multipathd.sh"
diff --git a/modules.d/90multipath/multipathd-dracut.conf b/modules.d/90multipath/multipathd-dracut.conf
new file mode 100644
index 00000000..783b05d5
--- /dev/null
+++ b/modules.d/90multipath/multipathd-dracut.conf
@@ -0,0 +1,2 @@
+[Unit]
+ConditionKernelCommandLine=!rd.multipath=0

37
SOURCES/0098.patch Normal file
View File

@ -0,0 +1,37 @@
From 90d1ed6f5acf7ba916197db1c08bb2d0de4715bc Mon Sep 17 00:00:00 2001
From: Jo Zzsi <jozzsicsataban@gmail.com>
Date: Sun, 25 May 2025 16:16:40 -0400
Subject: [PATCH] fix(systemd): systemd.volatile needs overlayfs kernel module
See https://www.freedesktop.org/software/systemd/man/latest/systemd-volatile-root.service.html
> This service is only enabled if full volatile mode is selected,
> for example by specifying "systemd.volatile=yes" on the kernel command line.
> This service runs only in the initrd, before the system transitions to the host's root directory.
> Note that this service is not used if "systemd.volatile=state" is used, as in that mode the root
> directory is non-volatile.
Support for this systemd feature has been added in systemd v242 .
https://github.com/systemd/systemd/pull/11243
(cherry picked from commit 33f2e49d600294fb54620f029e10fd74de54bfa8)
Resolves: RHEL-94663
---
modules.d/00systemd/module-setup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh
index 2d6fc9ff..658640ac 100755
--- a/modules.d/00systemd/module-setup.sh
+++ b/modules.d/00systemd/module-setup.sh
@@ -18,7 +18,7 @@ depends() {
installkernel() {
hostonly='' instmods autofs4 ipv6 algif_hash hmac sha256 sg
- instmods -s efivarfs
+ instmods -s efivarfs overlay
}
# called by dracut

45
SOURCES/0099.patch Normal file
View File

@ -0,0 +1,45 @@
From ba41a1864778fb949253d4492c8c5d553ef3badc Mon Sep 17 00:00:00 2001
From: Chris Riches <chris.riches@nutanix.com>
Date: Thu, 3 Jul 2025 13:42:09 +0000
Subject: [PATCH] refactor(dracut): introduce clamp_mtimes helper function
Avoid code duplication by introducing `clamp_mtimes`.
(cherry picked from commit b1f5842b36182d556f76d1bf9a023c74800b0880)
Related: RHEL-101901
---
dracut.sh | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/dracut.sh b/dracut.sh
index 43bc2ad0..d9f2ed83 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -2452,9 +2452,13 @@ if [[ $uefi == yes ]]; then
mkdir -p "$uefi_outdir"
fi
-if [[ $DRACUT_REPRODUCIBLE ]]; then
- find "$initdir" -newer "$dracutbasedir/dracut-functions.sh" -print0 \
+clamp_mtimes() {
+ find "$1" -newer "$dracutbasedir/dracut-functions.sh" -print0 \
| xargs -r -0 touch -h -m -c -r "$dracutbasedir/dracut-functions.sh"
+}
+
+if [[ $DRACUT_REPRODUCIBLE ]]; then
+ clamp_mtimes "$initdir"
if [[ "$(cpio --help)" == *--reproducible* ]]; then
CPIO_REPRODUCIBLE=1
@@ -2469,8 +2473,7 @@ if [[ $create_early_cpio == yes ]]; then
echo 1 > "$early_cpio_dir/d/early_cpio"
if [[ $DRACUT_REPRODUCIBLE ]]; then
- find "$early_cpio_dir/d" -newer "$dracutbasedir/dracut-functions.sh" -print0 \
- | xargs -r -0 touch -h -m -c -r "$dracutbasedir/dracut-functions.sh"
+ clamp_mtimes "$early_cpio_dir/d"
fi
# The microcode blob is _before_ the initramfs blob, not after

67
SOURCES/0100.patch Normal file
View File

@ -0,0 +1,67 @@
From 45c50b57bfc5b6675604f90e3f6ff65511ead59c Mon Sep 17 00:00:00 2001
From: Chris Riches <chris.riches@nutanix.com>
Date: Wed, 9 Jul 2025 16:40:18 +0000
Subject: [PATCH] fix(dracut): ensure hardlink deduplication is reproducible
By default, hardlink will only deduplicate files with identical mtimes,
down to one-second granularity. If a dracut module rapidly generates
multiple identical files, it is completely up to chance as to whether
their mtimes cross a second boundary or not, and thus whether they get
deduplicated or not. This results in non-reproducible output.
Re-order hardlink with respect to clamping to avoid this problem.
Fixes: https://issues.redhat.com/browse/RHEL-101901
(cherry picked from commit f779e439ec60eafcb400501d4741c755a95fdc86)
Resolves: RHEL-101901
---
dracut.sh | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/dracut.sh b/dracut.sh
index d9f2ed83..47adee2f 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -2245,12 +2245,6 @@ for ((i = 0; i < ${#include_src[@]}; i++)); do
fi
done
-if [[ $do_hardlink == yes ]] && command -v hardlink > /dev/null; then
- dinfo "*** Hardlinking files ***"
- hardlink "$initdir" 2>&1 | dinfo
- dinfo "*** Hardlinking files done ***"
-fi
-
# strip binaries
if [[ $do_strip == yes ]]; then
# Prefer strip from elfutils for package size
@@ -2453,7 +2447,7 @@ if [[ $uefi == yes ]]; then
fi
clamp_mtimes() {
- find "$1" -newer "$dracutbasedir/dracut-functions.sh" -print0 \
+ find "$@" -newer "$dracutbasedir/dracut-functions.sh" -print0 \
| xargs -r -0 touch -h -m -c -r "$dracutbasedir/dracut-functions.sh"
}
@@ -2467,6 +2461,19 @@ if [[ $DRACUT_REPRODUCIBLE ]]; then
fi
fi
+# Hardlink is mtime-sensitive; do it after the above clamp.
+if [[ $do_hardlink == yes ]] && command -v hardlink > /dev/null; then
+ dinfo "*** Hardlinking files ***"
+ hardlink "$initdir" 2>&1 | ddebug
+ dinfo "*** Hardlinking files done ***"
+
+ # Hardlink itself breaks mtimes on directories as we may have added/removed
+ # dir entries. Fix those up.
+ if [[ $DRACUT_REPRODUCIBLE ]]; then
+ clamp_mtimes "$initdir" -type d
+ fi
+fi
+
[[ $EUID != 0 ]] && cpio_owner="0:0"
if [[ $create_early_cpio == yes ]]; then

38
SOURCES/0101.patch Normal file
View File

@ -0,0 +1,38 @@
From f09dbb1a57b79e0a9dd4f02134b048ec6326ff78 Mon Sep 17 00:00:00 2001
From: Pavel Valena <pvalena@redhat.com>
Date: Sun, 17 Aug 2025 03:47:43 +0200
Subject: [PATCH] fix(systemd): partial backport of
Author: Jo Zzsi <jozzsicsataban@gmail.com>
Date: Wed Apr 23 19:21:59 2025 -0400
fix: load more kernel modules in sloppy hostonly mode
When hostonly_mode is set to "sloppy" instmods consults the host for currently loaded kernel modules and
refuses to copy the Linux kernel module into the generated initramfs unless the kernel
module is already loaded on the host.
Let's set hostonly explicitly to a better default before calling instmods.
For compatibility, we should not change the default in the instmods function itself.
(cherry picked from commit de862885ec55bb19bfa3e3f1afd27577b7c5e309)
Resolves: RHEL-94663
---
modules.d/00systemd/module-setup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh
index 658640ac..6f07f329 100755
--- a/modules.d/00systemd/module-setup.sh
+++ b/modules.d/00systemd/module-setup.sh
@@ -18,7 +18,7 @@ depends() {
installkernel() {
hostonly='' instmods autofs4 ipv6 algif_hash hmac sha256 sg
- instmods -s efivarfs overlay
+ hostonly=$(optional_hostonly) instmods -s efivarfs overlay
}
# called by dracut

View File

@ -5,7 +5,7 @@
# strip the automatically generated dep here and instead co-own the # strip the automatically generated dep here and instead co-own the
# directory. # directory.
%global __requires_exclude pkg-config %global __requires_exclude pkg-config
%define dist_free_release 87.git20250311 %define dist_free_release 102.git20250818
Name: dracut Name: dracut
Version: 057 Version: 057
@ -115,6 +115,19 @@ Patch83: 0083.patch
Patch84: 0084.patch Patch84: 0084.patch
Patch85: 0085.patch Patch85: 0085.patch
Patch86: 0086.patch Patch86: 0086.patch
Patch87: 0087.patch
Patch88: 0088.patch
Patch89: 0089.patch
Patch90: 0090.patch
Patch93: 0093.patch
Patch94: 0094.patch
Patch95: 0095.patch
Patch96: 0096.patch
Patch97: 0097.patch
Patch98: 0098.patch
Patch99: 0099.patch
Patch100: 0100.patch
Patch101: 0101.patch
Source1: https://www.gnu.org/licenses/lgpl-2.1.txt Source1: https://www.gnu.org/licenses/lgpl-2.1.txt
@ -571,6 +584,23 @@ echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/
%{_prefix}/lib/kernel/install.d/51-dracut-rescue.install %{_prefix}/lib/kernel/install.d/51-dracut-rescue.install
%changelog %changelog
* Mon Aug 18 2025 Pavel Valena <pvalena@redhat.com> - 057-102.git20250818
- fix(systemd): partial backport of
* Fri Aug 08 2025 Pavel Valena <pvalena@redhat.com> - 057-101.git20250808
- fix(systemd): add missing modprobe@.service
- fix: let check_vol_slaves_all return 1 when checks on all
- improvement(74nvmf): lookup required NIC kernel modules for
- fix(74nvmf): set root=nvmf
- chore(multipath): remove `rd_NO_MULTIPATH` kernel command
- refactor(multipath): remove custom multipathd.service
- fix(systemd): systemd.volatile needs overlayfs kernel module
- refactor(dracut): introduce clamp_mtimes helper function
- fix(dracut): ensure hardlink deduplication is reproducible
* Mon Jun 09 2025 Pavel Valena <pvalena@redhat.com> - 057-90.git20250609
- fix(dracut.sh): don't pass empty string as dir
* Tue Mar 11 2025 Pavel Valena <pvalena@redhat.com> - 057-87.git20250311 * Tue Mar 11 2025 Pavel Valena <pvalena@redhat.com> - 057-87.git20250311
- fix(rescue): create hmac file for rescue kernel - fix(rescue): create hmac file for rescue kernel