The RedHat developer mongowgarret found that Lenovo seems to think that there are only two operating systems in the world, one is Windows and the other is RedHatEnterpriseLinux (RHEL ). He checked Lenovo ThinkcentreM92p desktops and found that the UEFI firmware on the computer will check the descriptive strings of the operating system to prevent unspecified operating systems from starting. The firmware lists WindowsBootManager and FedoraLinux, allowing R
Red Hat Developer Matthew Garret found that Lenovo seems to think that there are only two operating systems in the world, one is Windows and the other is Red Hat Enterprise Linux (RHEL ).He checked Lenovo Thinkcentre M92p desktops and found that UEFI firmware on the computer would check the descriptive strings of the operating system to prevent startup of unspecified operating systems.
The firmware lists Windows Boot Manager and Fedora Linux, which allow Red Hat Enterprise Linux to run. If the operating system does not match, an error message is returned.
Garret speculated that RHEL was later added. Some people may test RHEL and find that it cannot be started, so the developer added RHEL to the firmware. Lenovo's official Twitter account said it was investigating the problem.
More in the series of bizarre UEFI bugs
A (well, now former) coworker let me know about a problem he was having with a Lenovo Thinkcentre M92p. it booted Fedora UEFI install media fine, but after an apparently successful installation refused to boot. UEFI installon Windows worked perfectly. secure Boot was quickly ruled out, but this cocould still have been a number of things. the most interesting observation was that the Fedora boot option didn't appear in the firmware boot menu at all, but Windows did. we spent a little while comparing the variable contents, gradually ruling out potential issues-Linux was writing an entry that had an extra 6 bytes in a structure, for instance [1], and a sufficiently paranoid firmware implementation may have been tripping up on that. fixing that didn't help, though. finally we tried just taking the Windows entry and changing the descriptive string. and it broke.
Every UEFI boot entry has a descriptive string. this is used by the firmware when it's presenting a menu to users-instead of "Hard drive 0" and "USB drive 3 ", the firmware can list "Windows Boot Manager" and "Fedora Linux ". there's no reason at all for the firmware to be parsing these strings. but the evisponseemed pretty strong-given two identical boot entries, one saying "Windows Boot Manager" and one not, only the first wocould work. at this point I downloaded a copy of the firmware and started poking at it. turns out that yes, actually, there is a function that compares the descriptive string against "Windows Boot Manager" and appears to return an error if it doesn't match. what's stranger is that it also checks for "Red Hat Enterprise Linux" and lets that one work as well.
This is, obviusly, bizarre. A vendor appears to have actually written additional code to check whether an OS claims to be Windows before it'll let it boot. someone then presumably tested booting RHEL on it and discovered that it didn't work. rather than take out that check, they then addded another check to let RHEL boot as well. we haven'tyet verified whether this is an absolute string match or whether a prefix of "Red Hat Enterprise Linux" is sufficient, and further examination of the code may reveal further workarounds. for now, if you want to run Fedora [2] on these systems you're probably best off changing the firmware to perform a legacy boot.
[1] src/include/efi. h: uint8_t padding [6];/* Emperically needed */, says the efibootmgr source code. Unhelpful.
[2] Or Ubuntu, or SUSE, or...