[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



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.

Cheers,
Vincent

Attachment: signature.asc
Description: PGP signature


Reply to: