Package: initramfs-tools
Version: 0.145
Severity: wishlist

So far, the kernel postinst.d hook unconditionally creates a new 
initramfs, and a potentially activated trigger will re-create this image 
at the end of the installation process. This cause extra delay which we 
specifically feel in our frequent offline installations via isar [2], 
even more when doing that cross. However, the issue affects all Debian 
installations.

Here [2] is a change proposal to only stub the initramfs creation and 
use the trigger to actually build it:

diff --git a/kernel/postinst.d/initramfs-tools 
b/kernel/postinst.d/initramfs-tools
index 6b6fef39..603901fa 100755
--- a/kernel/postinst.d/initramfs-tools
+++ b/kernel/postinst.d/initramfs-tools
@@ -2,6 +2,7 @@
 
 version="$1"
 bootopt=""
+bootdir="/boot"
 
 command -v update-initramfs >/dev/null 2>&1 || exit 0
 
@@ -20,7 +21,6 @@ fi
 # create the initrd in the same directory
 if [ -n "$2" ]; then
        bootdir=$(dirname "$2")
-       bootopt="-b ${bootdir}"
 fi
 
 # avoid running multiple times
@@ -31,6 +31,12 @@ if [ -n "$DEB_MAINT_PARAMS" ]; then
        fi
 fi
 
+# if there is already a pending trigger, just create a stub to allow the
+# 'mkinitramfs -u' of the trigger handler do the real work
+if [ -e /var/lib/dpkg/triggers/update-initramfs ]; then
+       touch "${bootdir}/initrd.img-${version}"
+       exit 0
+fi
+
 # we're good - create initramfs.  update runs do_bootloader
-# shellcheck disable=SC2086
-update-initramfs -c -k "${version}" ${bootopt} >&2
+update-initramfs -c -k "${version}" -b $"{bootdir}" >&2

I've tested this already successfully with our custom kernel recipes in 
isar. I'm sure there are nicer ways to achieve the same, and the above
may even have some issues I missed. But it would be great if something 
like this could be integrated into that standard package.

[1] https://github.com/ilbers/isar/
[2] 
https://salsa.debian.org/jan-kiszka/initramfs-tools/-/commit/17d04411408f693e1af8949b17a6aed89ccc73a2

Reply via email to