[8/8] rootfs: stub both dracut and update-initramfs on dracut

Message ID 20260915100125.1991311-9-felix.moessbauer@siemens.com
State Under Review
Headers show
Series [1/8] rootfs: generalize deployment of rootfs artifact | expand

Commit Message

Felix Moessbauer Sept. 15, 2026, 10:01 a.m. UTC
The former one can be used as a wrapper even if dracut is used to
actually generate the initrd. If it is used as wrapper and dracut is
stubbed, this might fail as the wrapper expects output from dracut.

As of now, this did not result in any issues, as all dracut-native
targets (where we do explicitly enable dracut in isar) just use the
wrapper instead of calling dracut directly.

Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
---
 meta/classes-recipe/rootfs.bbclass | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Patch

diff --git a/meta/classes-recipe/rootfs.bbclass b/meta/classes-recipe/rootfs.bbclass
index cea85626..d033bdf0 100644
--- a/meta/classes-recipe/rootfs.bbclass
+++ b/meta/classes-recipe/rootfs.bbclass
@@ -25,7 +25,6 @@  python () {
 
 ROOTFS_PACKAGES ?= ""
 ROOTFS_VARDEPS ?= ""
-ROOTFS_INITRAMFS_GENERATOR_CMD = "${@ d.getVar('ROOTFS_INITRAMFS_GENERATOR_CMDLINE').split()[0]}"
 ROOTFS_INITRAMFS_GENERATOR_CMDLINE = "update-initramfs -u -v -k $kernel_version"
 ROOTFS_BASE_DISTRO ?= "${BASE_DISTRO}"
 
@@ -71,6 +70,8 @@  ROOTFS_PACKAGE_SUFFIX ?= "${PN}-${DISTRO}-${DISTRO_ARCH}"
 
 # path to deploy stubbed versions of initrd update scripts during do_rootfs_install
 ROOTFS_STUBS_DIR = "/usr/local/isar-sbin"
+ROOTFS_INITRD_STUBS = "update-initramfs"
+ROOTFS_INITRD_STUBS += "${@ ' dracut' if bb.utils.to_boolean(d.getVar('ROOTFS_USE_DRACUT')) else '' }"
 
 # list of <outer>:<inner> or <outer> mount entries
 ROOTFS_MOUNTS ??= "${REPO_ISAR_DIR}/${DISTRO}:/isar-apt ${WORKDIR}:/isar-work"
@@ -321,7 +322,9 @@  rootfs_disable_initrd_generation() {
     set -e
 
     mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}"
-    ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/${ROOTFS_INITRAMFS_GENERATOR_CMD}
+    for stub in ${ROOTFS_INITRD_STUBS}; do
+        ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/$stub
+    done
 
     mkdir -p '${ROOTFSDIR}/etc/apt/apt.conf.d'
     echo 'DPkg::Path ${ROOTFS_STUBS_DIR}:/usr/sbin:/usr/bin:/sbin:/bin;' \