From a00a7c500abdfc0ab950a23eb15389b5135bc008 Mon Sep 17 00:00:00 2001 From: Ryan Savino Date: Sun, 23 Feb 2025 00:01:53 -0600 Subject: [PATCH] build: initrd rootfs init symlink directly to systemd when no AGENT_INIT In some cases, /init is not following two levels of symlinks i.e. /init to /sbin/init to /lib/systemd/systemd Setting /init directly to /lib/systemd/systemd when AGENT_INIT is not mandated Signed-Off-By: Ryan Savino --- tools/osbuilder/initrd-builder/initrd_builder.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/osbuilder/initrd-builder/initrd_builder.sh b/tools/osbuilder/initrd-builder/initrd_builder.sh index 47af6d0a9..f3c1c2883 100755 --- a/tools/osbuilder/initrd-builder/initrd_builder.sh +++ b/tools/osbuilder/initrd-builder/initrd_builder.sh @@ -74,7 +74,16 @@ OK "Agent is installed" # initramfs expects /init, create symlink only if ${ROOTFS}/init does not exist # Init may be provided by other packages, e.g. systemd or GPU initrd/rootfs -[ -x "${ROOTFS}/init" ] || [ -L "${ROOTFS}/init" ] || sudo ln -sf /sbin/init "${ROOTFS}/init" +if [ ! -x "${ROOTFS}/init" ] && [ ! -L "${ROOTFS}/init" ]; then + # ATTN: In some instances, /init is not following two or more levels of symlinks + # i.e. (/init to /sbin/init to /lib/systemd/systemd) + # Setting /init directly to /lib/systemd/systemd when AGENT_INIT is disabled + if [ "${AGENT_INIT}" = "yes" ]; then + sudo ln -sf /sbin/init "${ROOTFS}/init" + else + sudo ln -sf /lib/systemd/systemd "${ROOTFS}/init" + fi +fi info "Creating ${IMAGE_DIR}/${IMAGE_NAME} based on rootfs at ${ROOTFS}" ( cd "${ROOTFS}" && sudo find . | sudo cpio -H newc -o | gzip -9 ) > "${IMAGE_DIR}"/"${IMAGE_NAME}"