The Words of the Sledge
Subscribe to the RSS feed.
Friends Matthew Garrett
Tracking broken UEFI implementations
There can be issues with shipping installer images
including UEFI. But they're mainly due to crappy UEFI implementations
that vendors have shipped. It's fairly well-known that Apple have
shipped some really shoddy firmware over the years, and to allow
people to install Debian on older Apple x86 machines we've now added
the workaround of a non-UEFI 32-bit installer image too. But Apple
aren't the only folks shipping systems with horrendously buggy UEFI,
and a lot of Linux folks have had to deal with this over the last few
I've been talking to a number of other UEFI developers lately, and
we've agreed to start a cross-distro resource to help here - a list of
known-broken UEFI implementations so that we can share our
experiences. The place for this in in the OSDev wiki
at http://wiki.osdev.org/Broken_UEFI_implementations. We're
going to be adding new information here as we find it. If you've got a
particular UEFI horror story on your own broken system, then please
either add details there or let me know and I'll try to do it for
Re: Tracking broken UEFI implementations
wrote on Fri, 07 Aug 2015 13:44
There's a similar issue as what Holzhaus described in my HP 2000 laptop, though not as severe.
Basically, the UEFI is broken in two ways: 1) It always creates, in Boot0000 slot, an entry to boot either EFI/Microsoft/Boot/bootmgfw.efi or EFI/Boot/bootx64.efi, in that order, if those files exist; 2) It ignores the BootOrder variable and boots in variable order, from Boot0000 to Boot0001 to Boot0002 to Boot1001 etc.
The best way to boot that is to make sure neither of the two files exist, and create a boot entry Boot0001 pointing to GRUB or whatnot.
Of course, then booting Windows is a bit of a problem. You need to change BCD settings to point to the new Windows EFI file name, and/or change GRUB settings to detect the new Windows filename. The GRUB os-prober is annoying in that it, too, simply checks for EFI/Microsoft/Boot/bootmgfw.efi and gives up if it's not there.