File 0001-mkosi-initrd-build-initrds-directly-to-boot.patch of Package suse-module-tools
From 8ef6c7c43567dacf8fe962c247f87498d122e46a Mon Sep 17 00:00:00 2001
From: Antonio Alvarez Feijoo <antonio.feijoo@suse.com>
Date: Fri, 14 Feb 2025 15:33:33 +0100
Subject: [PATCH] mkosi-initrd: build initrds directly to /boot
Before v25, mkosi-initrd failed to copy files directly to /boot.
Fixed since https://github.com/systemd/mkosi/commit/3454f7bd4ef0336ec80a117d593baaef0fe53398
---
dracut-posttrans | 4 ----
mkosi-initrd-posttrans | 33 ++-------------------------------
regenerate-initrd-posttrans | 3 ---
weak-modules2 | 11 +++--------
4 files changed, 5 insertions(+), 46 deletions(-)
diff --git a/dracut-posttrans b/dracut-posttrans
index 5f7f2bb..d1620e1 100644
--- a/dracut-posttrans
+++ b/dracut-posttrans
@@ -19,7 +19,3 @@ initrd_regenerate() {
initrd_regenerate_all() {
"$DRACUT" -f --regenerate-all
}
-
-initrd_cleanup() {
- :
-}
diff --git a/mkosi-initrd-posttrans b/mkosi-initrd-posttrans
index 1a00c6a..ff05b1b 100644
--- a/mkosi-initrd-posttrans
+++ b/mkosi-initrd-posttrans
@@ -7,13 +7,6 @@ if [ ! -x "$MKOSI_INITRD" ]; then
exit 0
fi
-# FIXME: mkosi-initrd fails to cp files directly to /boot
-MKOSI_INITRD_STAGING_DIR="$(mktemp -p /var/tmp/ -d -t mkosi-initrd-stagingXXXXXXXX)"
-if [ ! -d "$MKOSI_INITRD_STAGING_DIR" ]; then
- echo "${0##*/}: failed to create mkosi-initrd staging directory." >&2
- exit 1
-fi
-
initrd_warn_chroot_build() {
# FIXME: mkosi-initrd does not provide anything like --regenerate-all yet
echo "Please regenerate all the initrds with \"$MKOSI_INITRD\" as soon as your system is complete." >&2
@@ -21,17 +14,7 @@ initrd_warn_chroot_build() {
initrd_regenerate() {
local kver="$1"
- local res
-
- "$MKOSI_INITRD" --kernel-version "$kver" -O "$MKOSI_INITRD_STAGING_DIR" -o "initrd-$kver"
- res=$?
- [ $res -ne 0 ] && return $res
-
- chmod 600 "$MKOSI_INITRD_STAGING_DIR/initrd-$kver"
- res=$?
- [ $res -ne 0 ] && return $res
-
- cp --reflink=auto "$MKOSI_INITRD_STAGING_DIR/initrd-$kver" "/boot/initrd-$kver"
+ "$MKOSI_INITRD" --kernel-version "$kver" -O "/boot" -o "initrd-$kver"
}
initrd_regenerate_all() {
@@ -41,18 +24,6 @@ initrd_regenerate_all() {
for d in /lib/modules/*; do
[ -d "$d" ] || continue
kver=${d##*/}
- # The staging dir will contain: initrd-<kver> -> initrd-<kver>.cpio.zst
- if "$MKOSI_INITRD" --kernel-version "$kver" -O "$MKOSI_INITRD_STAGING_DIR" -o "initrd-$kver" \
- && chmod 600 "$MKOSI_INITRD_STAGING_DIR/initrd-$kver" \
- && cp --reflink=auto "$MKOSI_INITRD_STAGING_DIR/initrd-$kver" "/boot/initrd-$kver"; then
- rm -f "$MKOSI_INITRD_STAGING_DIR/initrd-$kver"*
- else
- return $?
- fi
+ "$MKOSI_INITRD" --kernel-version "$kver" -O "/boot" -o "initrd-$kver" || return $?
done
}
-
-initrd_cleanup() {
- rm -rf "$MKOSI_INITRD_STAGING_DIR"
-}
-
diff --git a/regenerate-initrd-posttrans b/regenerate-initrd-posttrans
index 88ebdb2..f945978 100644
--- a/regenerate-initrd-posttrans
+++ b/regenerate-initrd-posttrans
@@ -118,9 +118,6 @@ for f in "$dir"/*; do
fi
done
-# Clean-up before exit
-trap 'initrd_cleanup' EXIT
-
# For XEN/grub2 configurations, make sure the updated initrds are copied
# to the EFI system partition. See /etc/grub.d/20_linux_xen.
# The test for xen*.gz is simplistic but should be correct here.
diff --git a/weak-modules2 b/weak-modules2
index 87392db..ba96c9b 100644
--- a/weak-modules2
+++ b/weak-modules2
@@ -534,9 +534,8 @@ needs_initrd() {
echo "Please run \"$DRACUT -f /boot/initrd-$krel $krel\" as soon as your system is complete." >&2
;;
"mkosi-initrd")
- # FIXME: mkosi-initrd fails to cp files directly to /boot
- echo "Please run \"$MKOSI_INITRD --kernel-version $krel -o initrd-$krel && \
-chmod 600 initrd-$krel && cp initrd-$krel /boot\" as soon as your system is complete." >&2
+ echo "Please run \"$MKOSI_INITRD --kernel-version $krel -O /boot -o initrd-$krel\" \
+as soon as your system is complete." >&2
;;
esac
return 1
@@ -607,11 +606,7 @@ run_depmod_build_initrd() {
doit "$DRACUT" -f "$initrd" $krel
;;
"mkosi-initrd")
- # FIXME: mkosi-initrd fails to cp files directly to /boot
- doit "$MKOSI_INITRD" --kernel-version "$krel" -O "$tmpdir" -o "initrd-$krel" && \
- doit chmod 600 "$tmpdir/initrd-$krel" && \
- doit cp --reflink=auto "$tmpdir/initrd-$krel" "$initrd" && \
- doit rm -f "$tmpdir/initrd-$krel"*
+ doit "$MKOSI_INITRD" --kernel-version "$krel" -O "/boot" -o "initrd-$krel"
;;
esac
fi
--
2.43.0