Patch is part of https://github.com/gentoo/gentoo/pull/34024

Best regards,
Andrew

From 03e17149eef9eba08f8c8bf32845c18106d32290 Mon Sep 17 00:00:00 2001
From: Andrew Ammerlaan <andrewammerl...@gentoo.org>
Date: Mon, 11 Dec 2023 08:36:58 +0100
Subject: [PATCH] kernel-install.eclass: fix test phase on systemd systems

On systemd systems the dracut systemd modules are included automatically.
Systemd insists our dummy root has some valid /etc/os-release file, otherwise it refuses the switch root operation. However, with this fix it still does not boot up correctly on systemd systems, it gets stuck in an infinite boot loop. Presumably the reason has something to do with our dummy root not having a real systemd init to switch root to. We add the systemd dracut modules to the omit
list to prevent the problem and ensure the test phase behaves the same on
systemd and non-systemd systems.

Signed-off-by: Andrew Ammerlaan <andrewammerl...@gentoo.org>
---
 eclass/kernel-install.eclass | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass
index b4d84f3986c0d..f2a6ec75f2a88 100644
--- a/eclass/kernel-install.eclass
+++ b/eclass/kernel-install.eclass
@@ -231,6 +231,17 @@ kernel-install_create_qemu_image() {
        # some layout needed to pass dracut's usable_root() validation
        mkdir -p "${imageroot}"/{bin,dev,etc,lib,proc,root,sbin,sys} || die
        touch "${imageroot}/lib/ld-fake.so" || die
+       # Initrd images with systemd require some os-release file
+       cat <<-EOT >> "${imageroot}/etc/os-release" || die
+       NAME=Gentoo
+       ID=gentoo
+       PRETTY_NAME="Gentoo Linux"
+       ANSI_COLOR="1;32"
+       HOME_URL="https://www.gentoo.org/";
+       SUPPORT_URL="https://www.gentoo.org/support/";
+       BUG_REPORT_URL="https://bugs.gentoo.org/";
+       VERSION_ID="dist-kernel testing"
+       EOT

        kernel-install_create_init "${imageroot}/sbin/init"

@@ -263,6 +274,7 @@ kernel-install_test() {
                plymouth # hangs, or sometimes steals output
                rngd # hangs or segfaults sometimes
                i18n # copies all the fonts from /usr/share/consolefonts
+               dracut-systemd systemd systemd-initrd # gets stuck in boot loop
        )

        # NB: if you pass a path that does not exist or is not a regular

Reply via email to