void-linux / void-packages

The Void source packages collection
https://voidlinux.org
Other
2.59k stars 2.16k forks source link

gummiboot broken with linux-mainline #42566

Closed ghost closed 1 year ago

ghost commented 1 year ago

Is this a new report?

Yes

System Info

Void 6.1.14_1 x86_64-musl AuthenticAMD uptodate rFF

Package(s) Affected

gummiboot-48.1_8, linux6.2-6.2.0_1

Does a report exist for this bug with the project's home (upstream) and/or another distro?

No response

Expected behaviour

The system is supposed to boot up normally.

Actual behaviour

When trying to boot the system, my computer gets stuck in an infinite loop of the fans spinning up and down. I did a bit of reading around and testing, and if I build the kernel with EFI_HANDOVER_PROTOCOL=y, the computer boots without issue, which leads me to believe the the issue is that gummiboot uses the deprecated efi handover protocol, and therefore cannot boot on linux-mainline where EFI_HANDOVER_PROTOCOL is not set.

Steps to reproduce

  1. Install gummiboot as bootloader
  2. Install linux-mainline
  3. reboot
paper42 commented 1 year ago

According to https://gitlab.alpinelinux.org/alpine/aports/-/issues/14679, we can either enable CONFIG_EFI_HANDOVER_PROTOCOL and this will keep working for a while or just remove gummiboot which didn't have a release since it was merged to systemd in 2015. I would be in favor of removing gummiboot.

classabbyamp commented 1 year ago

I am not, I use its efistub for booting most of my machines. If an alternative efistub source existed, that would be fine, however.

zdykstra commented 1 year ago

I'd like to see gummiboot limp along for a while, too, if there's nothing else to fill that specific package gap.

paper42 commented 1 year ago

It might be possible to build systemd-boot from the systemd sources as a separate binary.

sonnysighedup commented 1 year ago

One stop-gap measure - which might not work for the OP, but will work for those who just need gummiboot for efi stub - would be to break out the gummiboot-efistub sub-package into its own entity and have it track systemd's version of linuxx64.efi.stub a la this Arch AUR package.

I just tried it against the Void repo's 6.2 kernel, and was able to successfully boot a self-signed UEFI kernel image, something which I could only do previously by compiling linux6.2 from xbps-src with CONFIG_EFI_HANDOVER_PROTOCOL=y.

ghost commented 1 year ago

One stop-gap measure - which might not work for the OP, but will work for those who just need gummiboot for efi stub - would be to break out the gummiboot-efistub sub-package into its own entity and have it track systemd's version of linuxx64.efi.stub a la this Arch AUR package.

While not a solution, this would certainly fill the hole for me. I have no particular affinity for gummiboot as a bootloader. I was simply using it, as it already provided the efistub I was using for UKI.

However, doesn't void require packages to be compiled, meaning this wouldn't be possible to be redistributed through the official mirrors? Gentoo seems to provide systemd-boot as an option for openrc under their sys-apps/systemd-utils. Perhaps looking at what they do is an option?