BenLunt wrote:
Here is my opinion, and please understand that I place great emphasis on that word, opinion.
The existence *and* the name of the PMBR (Protective MBR) is proof that GPT was meant to be backwards compatible. It was meant, if only for legacy BIOSes to see that a MBR was present with at least one valid Partition entry, though with an unknown System ID field. Then the intent was for the BIOS to "express concern" and choke.
However, how often will you actually run across this? I mean, how often will someone have a non-aware GPT BIOS and a bootable--as the primary boot device--GPT partitioned drive? Seriously. Not counting us few that might try it just to try it.
They say, PMBR was intended for non-aware utilities to not screw up GPT partitions (thus the name - "protective"). Legacy BIOS could use it, since MBR code in PMBR isn't prohibited and that code obviously should be able to understand GPT partitions¹.
I'm sure the authors were thinking that putting a GPT partitioned disk as a bootable media into a legacy BIOS system is a bad idea not worth considering.
Quote:
If GPT really meant that there cannot be Legacy partition entry(s), they would have not had a PMBR and started the GPT either at LBA zero, or if you care about reliability of the "edge" of the disk, at LBA 2048 or even LBA 4096, specifying that every sector before this sector must be zeros.
This even means that they wouldn't care that the first sector contained zeros (add [bx+si],al) and eventually would get to LBA 2048 and try to execute the first sector of the GPT.
If GPT really meant absolutely no other form of partitioning may be used, there would be no other form including a PMBR.
They clearly state the number of partitions in PMBR is 1. It answers everything.
PMBR isn't even partitioning, it's a remnant of the old partitioning scheme to protect the new one. From badass utilities.
Quote:
UEFI 2.5, section 5.2.1 states that a Legacy MBR may reside at LBA 0, though UEFI firmware will not execute it. This MBR pay contain up to four partition entries and each may point to partitions on the disk. It does not say that these partitions cannot be partitions already described in a GPT.
Sorry, but "legacy MBR" and protective MBR isn't the same in UEFI. The first may be a valid MBR (as MBR scheme), having up to 4 primary partitions. It also may contain EFI system partition (OSType 0xef).
And at the same time it means this disk doesn't have GPT at all. On the other hand, if it has GPT, the only MBR partition is:
UEFI_2_4 chapter 5.2.2 wrote:
0xEE (i.e., GPT Protective) is used by a protective MBR (see 5.2.2) to define a fake partition
covering the entire disk.
So it does say it. I see, they avoid situations with >1 schemes used simultaneously describing the same partitions. And I see it as a right way. Every "hybrid" approach fails on this. and introduces a lot more problems than resolves something. if it resoves anything.
Quote:
"A legacy MBR may be located at LBA 0 (i.e., the first logical block) of the disk if it is not using the GPT disk layout (i.e., if it is using the MBR disk layout)."
Define "it" as in "if it is not using the GPT layout". Does this mean that the MBR is not using the GPT layout or the disk is not using the GPT layout? Most likely the latter than the former.
Just my opinion, so please don't take it as anything else. My Father-in-law always said, "Opinions are like ****holes, everyone has one and they usually stink".
Ben
It's interesting. MBR isn't using vs. disk isn't using. I guess nobody took it so deep.
In my opinion it means "disk is not using gpt".
And in my opinion, I understand it like this:
1) for compatibility with legacy BIOS, you use legacy MBR and put EFI system partition (if it is still needed) in a MBR array, as a bootable partition. This would be understood by old and new systems.
2) for new systems, you use GPT only, that uses PMBR for the only purpose of protecting partitions from old utilities. You generally don't use this scheme on platforms with legacy BIOS.
¹ But some especially talented inventors might put a code into PMBR that reads GPTPA and finds there its own continuation say in the special "loader partition", loads it and jumps there. It's 100% compatible with GPT and I believe, it's 100% possible to fit GPTPA reading code into 440 bytes of space. This way a proper GPT disk might be used with legacy BIOS. Of course if everything BIOS does considering a disk as a candidate to boot from is reading first 512 bytes from disk and jumping there. As it's said here - didn't know that and forgot it.