On Mon, 2023-12-11 at 12:22 +0100, Andrew Ammerlaan wrote: > > > + # 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 > > > > > > > Can't we just copy it from host? > > > I guess we can, we would be assuming that the host has a valid one but > this shouldn't be a problem since at least for systemd systems you can > apparently not boot at all if it is not valid. v2: > >  From 0a22dcc93c8ba16cdb450f2443ad256e56111d6e Mon Sep 17 00:00:00 2001 > From: Andrew Ammerlaan > 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 > --- >   eclass/kernel-install.eclass | 3 +++ >   1 file changed, 3 insertions(+) > > diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass > index b4d84f3986c0d..e244f6d51a9cd 100644 > --- a/eclass/kernel-install.eclass > +++ b/eclass/kernel-install.eclass > @@ -231,6 +231,8 @@ 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 > + cp /etc/os-release "${imageroot}/etc/os-release" || die This should probably be BROOT. > >    kernel-install_create_init "${imageroot}/sbin/init" > > @@ -263,6 +265,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 > > -- Best regards, Michał Górny