[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#997907: linux-image-arm64: CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER unset in 5.14 kernel



Control: tags -1 + pending

On Tue, Nov 23, 2021 at 08:22:03AM +0100, Salvatore Bonaccorso wrote:
> Hi Ard,
> 
> On Tue, Nov 23, 2021 at 07:58:32AM +0100, Ard Biesheuvel wrote:
> > On Tue, 23 Nov 2021 at 06:12, Salvatore Bonaccorso <carnil@debian.org> wrote:
> > >
> > > Hi Vincent,
> > >
> > > On Fri, Nov 19, 2021 at 10:04:57PM +0100, Vincent Blut wrote:
> > > > Hi,
> > > >
> > > > Le 2021-10-26 17:33, Zameer Manji a écrit :
> > > > > On Tue, Oct 26, 2021 at 5:05 PM Vincent Blut <vincent.debian@free.fr> wrote:
> > > > >
> > > > > > Control: reassign -1 src:linux
> > > > > >
> > > > > > Hi,
> > > > > >
> > > > > > Le 2021-10-26 20:44, Zameer Manji a écrit :
> > > > > > > Package: linux-image-arm64
> > > > > > > Version: 5.14.9-2
> > > > > > > Severity: important
> > > > > > >
> > > > > > > Dear Maintainer,
> > > > > > >
> > > > > > > In bullseye, version 5.10.70-1 has the
> > > > > > CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER
> > > > > > > kernel configuration set to 'y'. In bookworm it is unset which disable
> > > > > > this feature.
> > > > > > >
> > > > > > > This kernel configuration parameter allows for the EFI stub of the
> > > > > > kernel to
> > > > > > > parse and use a 'initrd=' parameter to set up an initrd when booting
> > > > > > from EFI.
> > > > > > > Boot loaders like 'systemd-boot' or 'refind' set this parameter if
> > > > > > configured
> > > > > > > to pass an initrd. If the kernel configuration parameter is unset, the
> > > > > > > `initrd=` paramater is ignored, and can result in an unbootable system
> > > > > > because
> > > > > > > the initrd has not setup the root filesystem.
> > > > > > >
> > > > > > > Without the kernel configuaration set, it is not possible to use
> > > > > > 'systemd-boot'
> > > > > > > or 'refind' on arm64 as both of these bootloaders assume the kernel will
> > > > > > > handle the 'initrd=' flag and setup the initrd.
> > > > > > >
> > > > > > > Please consider enabling CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER on
> > > > > > > arm64 so using 'systemd-boot' or 'refind' can continue to work. Until
> > > > > > these
> > > > > > > bootloaders have been updated to use an alternative method of passing the
> > > > > > > initrd to the EFI stub, it is not possible to have a booting system.
> > > > > >
> > > > > > Except on X86, EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER is no longer enabled
> > > > > > by
> > > > > > default. Please see [1] for some details.
> > > > > >
> > > > > > Cheers,
> > > > > > Vincent
> > > > > >
> > > > > > [1]
> > > > > > https://gitlab.com/linux-kernel/stable/-/commit/6edcf9dc2e1aff3aa1f5a69ee420fb30dd0e968a
> > > > > >
> > > > >
> > > > > Hello Vincent,
> > > > >
> > > > > I see and understand the rationale of upstream to deprecate this
> > > > > functionality.
> > > > > >From the commit you linked I see another commit [0] which says:
> > > > >
> > > > > > Loading an initrd passed via the kernel command line is deprecated: it
> > > > > > is limited to files that reside in the same volume as the one the kernel
> > > > > > itself was loaded from, and we have more flexible ways to achieve the
> > > > > > same. So make it configurable so new architectures can decide not to
> > > > > > enable it.
> > > > >
> > > > > I assume the 'more flexible ways' to do the same is referencing this
> > > > > feature [1]
> > > > > which is indeed more flexible. The problem is that the firmware/bootloader
> > > > > must
> > > > > support this new functionality, by populating the right EFI file with the
> > > > > right GUID.
> > > > >
> > > > > As far as I can see on arm64 there are three EFI bootloaders:
> > > > > * GRUB2
> > > > > * systemd-boot
> > > > > * refind
> > > > >
> > > > > Both systemd-boot and refind do not yet support this new mechanism,
> > > > > although I see
> > > > > that systemd has some unreleased code [2] to support the new way. I have
> > > > > not been
> > > > > able to test GRUB2 but my understanding is that this new method is still
> > > > > under active
> > > > > development [3].
> > > > >
> > > > > The problem is that upstream has deprecated this functionality by assuming
> > > > > the only
> > > > > active use was x86, but was completely possible to use it on arm64 (it
> > > > > works fine for me
> > > > > on bullseye). Since EFI bootloaders have not yet implemented the new way,
> > > > > and still
> > > > > rely on this deprecated method on all architectures, it results in
> > > > > unbootable systems
> > > > > on arm64.
> > > > >
> > > > > I would 100% think this should remain disabled on arm64 if most EFI
> > > > > bootloaders
> > > > > supported the new way, but unfortunately they do not.
> > > > >
> > > > > I hope you would consider enabling this kernel configuration for arm64
> > > > > until EFI
> > > > > bootloaders catch up to the recommended way.
> > > > >
> > > > >
> > > > > [0]
> > > > > https://gitlab.com/linux-kernel/stable/-/commit/cf6b83664895a5c7e97710df282e220bd047f0f5
> > > > > [1]
> > > > > https://gitlab.com/linux-kernel/stable/-/commit/ec93fc371f014a6fb483e3556061ecad4b40735c
> > > > > [2]
> > > > > https://github.com/systemd/systemd/commit/a6089431d52adda93eec251a3df0dffa1fe0661a#diff-76eb4030e88f340c9133388f17c65774b0f17a0a8105500978f6ce18ca1deb5a
> > > > > [3] https://www.mail-archive.com/grub-devel@gnu.org/msg32272.html
> > > >
> > > > Salvatore, I tend to agree with Zameer. I think we should explicitly enable
> > > > EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER until the support for loading initrd
> > > > from a device path is widespread among bootloaders.
> > >
> > > Yeah I guess it makes sense and understand. Before doing the switch
> > > and re-enabling it explicitly, let's ask Ard if there are known plans for
> > > !X86 and say so for example arm64 as well to revert the default
> > > upstream. The more we can follow those upstream the better for us :)
> > >
> > > Ard, this is about https://bugs.debian.org/997907 on non X86,
> > > specifically for arm64.
> > >
> > 
> > Hello all,
> > 
> > I don't see a reason to revert the default upstream. The feature
> > remains deprecated (and in the longer term, the EFI handover protocol
> > may be deprecated and removed as well), so the earlier the bootloaders
> > adapt, the better it is.
> > 
> > In the meantime, keeping it enabled in the distros for arm64 makes
> > sense because there is an established installed base. But that doesn't
> > mean this should be the upstream default.
> 
> Perfect thanks for commenting quickly. We will enable it donstream in
> Debian then explicitly for the time beeing.

Pending now for the next upload to experimental.

Regards,
Salvatore


Reply to: