• Re: [gentoo-dev] [PATCH v2] kernel-install.eclass: fix test phase on sy

    From Andrew Ammerlaan@21:1/5 to All on Mon Dec 11 12:30:01 2023
    + # 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 <andrewammerlaan@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 <andrewammerlaan@gentoo.org>
    ---
    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

    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 n
  • From =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?=@21:1/5 to Andrew Ammerlaan on Mon Dec 11 13:00:01 2023
    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 <andrewammerlaan@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 <andrewammerlaan@gentoo.org>
    ---
      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


    -----BEGIN PGP SIGNATURE-----

    iQFGBAABCgAwFiEEx2qEUJQJjSjMiybFY5ra4jKeJA4FAmV2+J8SHG1nb3JueUBn ZW50b28ub3JnAAoJEGOa2uIyniQOh5oIALBBRrSe+w9F5nqiU6WMuilquW5K4y8+ lnWOYufrHxO+l4rrLEZQuDJMdOC4eL1T/U0w8gD6RY+iFeqUC5ClIyzMJYCjt4Cx J5ZVFfx7rEYUqgcBNh6z6Gn2laEuQpagwQ7YF/Q4TF9VXTtSiT3z4Rad1G/uT353 JN15eOm5s3CoWketgQ6SJa12VvtDCKQnmpbNtb8oTZoqm24q4dO59Mt0gRg4+V+x b9WFD6a5KoubKemVfeshVcoKa0eM0PG1QOgEYZXVpEn1JlYWUYyU/lq9RJXfi6U6 9mIFOS9KMP1s2nrVeMHdp0yIwgvIaGqgANkYVwULrPEGILSGa+JiVpY=
    =gk5q
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)