Hi,
Neal Gompa wrote:
I don't know if it's been mentioned,
IIRC, Chris Murphy did.
but until very recently, pretty
much all TianoCore based UEFI implementations failed to boot
protective MBR marked GPT partitions.
[...]
https://github.com/tianocore/edk2/commit/b3db0cb1f8d163f22b769c205c634737...
First of all: Thanks for fixing this.
But yes, the problem is known and a workaround is known in form of the little
dummy MBR partition which takes the plight of carrying the boot/active flag.
Old Tianocore will find the 0xEE partition first, see no boot flag there,
and break the loop before it inspects the dummy partition.
Ubuntu's current ISOs have this dummy MBR partition of type 0x00 and size 1.
They seem to boot with the EFI implementations which are around.
(Not a complaint towards Tianocore but just an observation:
That loop is still barely specs compliant. But now it is on the liberal side.
UEFI 2.8 says
"5.2.3 Protective MBR
[...]
One of the Partition Records shall be as defined in table 12, reserving
the entire space on the disk after the Protective MBR itself for the GPT
disk layout.
[...]
The remaining Partition Records shall each be set to zeros.
"
Well, i guess "table 12" was meant as "table 20" which describes the
partition
slot of type 0xEE. Whether "shall" should be implemented as "must" is
a matter
of hairsplitting.
A picky loop would not break at the first success but rather check all four
partition slots. On the other hand it would be nice if it would project the
"may be ignored" of
"5.2.1 Legacy Master Boot Record (MBR)
[...]
A Partition Record that contains an OSType value of zero or a SizeInLBA
value of zero may be ignored.
"
onto the rules for a Protective MBR.
It would be unfortunate if this fragile compromise would be broken by
increased pickiness of EFI implementations. To my understanding only the
liberal interpretation of a "shall" and a slightly displaced "may" in
the
specs protects it.
)
I am somewhat astonished that no BIOS machine was encountered yet in the
tests of boot-grub2-f36.iso which would refuse to boot with its pure
GPT-marking MBR table but would boot if the boot/active flag is set somwhere
in the MBR partition table.
Testers of grub-mkrescue ISOs and of Ubuntu ISOs encountered such machines.
Have a nice day :)
Thomas