[PATCH v3 04/11] core-image-initramfs-boot: add option to build systemd based initrd

Mikko Rapeli
2025-04-04T16:30:04Z

If "systemd-initramfs" is in DISTRO_FEATURES then convert
core-image-initramfs-boot from shell scripts to systemd.
The resulting initramfs is much bigger than shell script one but
supports much more features like disk encryption and TPM devices.
Also includes udev which can load any drivers needed to mount
rootfs.

Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
---
.../images/core-image-initramfs-boot.bb | 20 ++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/meta/recipes-core/images/core-image-initramfs-boot.bb b/meta/recipes-core/images/core-image-initramfs-boot.bb
index 7258944751..c66c28db76 100644
--- a/meta/recipes-core/images/core-image-initramfs-boot.bb
+++ b/meta/recipes-core/images/core-image-initramfs-boot.bb
@@ -4,7 +4,23 @@ LICENSE = "MIT"

INITRAMFS_SCRIPTS ?= "initramfs-framework-base initramfs-module-udev"

-PACKAGE_INSTALL = "${INITRAMFS_SCRIPTS} ${VIRTUAL-RUNTIME_base-utils} base-passwd"
+inherit image
+
+PACKAGE_INSTALL = " \
+ ${VIRTUAL-RUNTIME_base-utils} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd-initramfs', ' \
+ base-files \
+ coreutils \
+ e2fsprogs-mke2fs \
+ os-release-initrd \
+ util-linux-blkid \
+ util-linux-mount \
+ util-linux-umount \
+ ${VIRTUAL-RUNTIME_init_manager} \
+ ${VIRTUAL-RUNTIME_dev_manager} \
+ ', '${INITRAMFS_SCRIPTS}', d)} \
+ base-passwd \
+"

# Ensure the initramfs only contains the bare minimum
IMAGE_FEATURES = ""
@@ -18,5 +34,3 @@ IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"
IMAGE_NAME_SUFFIX ?= ""
IMAGE_ROOTFS_SIZE = "8192"
IMAGE_ROOTFS_EXTRA_SPACE = "0"
-
-inherit image
--
2.43.0