Hi, Sorry for breaking the thread, but I just stepped in because I participated in the standarisation of the BIOS Boot Partition mechanism, and in early discussions about this hybrid DOS/GPT protocol which led to the standard being discussed, and I want to clarify something.
GRUB implements the BIOS Boot Partition, and SYSLINUX implements the hybrid DOS/GPT protocol [1]. It is too easy to get the impression that both protocols are somehow overlapping, or that they are different ways to solve the same problem. This is NOT TRUE. They're actually two solutions for two very different problems. The first problem is, if we have more than one OS, how do we select which one to boot? GRUB implements the obvious solution (ask the user!). But in the old days, MSDOS implemented an awkward scheme [2], designed with proprietary boot protocols in mind: multiple bootloaders can be installed; each bootloader can "chainload" another bootloader, so that even if the boot protocols are secret, it is possible to install more than one OS in the same PC. I believe current MBR used with SYSLINUX goes a step further and allows user to select an entry, but still with the constraints of 440 bytes, the user interface becomes very unfriendly and limited. Note that GRUB implements part of this "chainload" mechanism as well, for the sake of compatibility with Microsoft Windows. It ignores the "bootable flag", and allows user to chainload to a partition using this protocol, on request. With GPT, there's currently no point in implementing it, since Windows doesn't (yet?) follow this scheme [3]. The second problem is, 440 bytes is such a small space, can we do everything we want with it? Or can we have a bigger MBR? Can we increase the amount of unmanaged code? With MSDOS labels, GRUB solved this by using the post-MBR gap as an extension of the MBR. The idea is that this area is unmanaged, as in, whoever owns the MBR also takes ownership of those sectors, and there's no mechanism to have more than one such area (nor any need for such mechanism). SYSLINUX solved this by relying on poor, limited MBR as described earlier. When it comes to GPT, GRUB solved this by using a new instance of the same unmanaged extension of the MBR: the BIOS Boot Partition. It's effectively the same thing, except that with it being a partition, people tend to think it somehow plays a role in the MSDOS partition handover protocol, and mix things up. As described earlier in this list, SYSLINUX "solved" this problem by implementing a poor, limited MBR which skips parts of the GPT spec (CRC verification IIRC) in order to squeeze their code in 440 bytes. There's NO NEED to restrict for this kind of constraint. I would advice SYSLINUX developers to take advantage of the BIOS Boot Partition in order to fit whole GPT parser. I think this makes clear that both protocols aren't exclusive to each other, it just happens that they solve different problems, with GRUB and SYSLINUX only interested in one of each, and already having a solution (or simply not caring) about the other. [1] I refer to it in generic terms, because the implementation in SYSLINUX pre-dates the standard; based on my previous discussion with HPA, I believe he's been involved in the development of this standard, and the result is modeled after his implementation. [2] Partitions have a so-called "bootable flag". MBR probes for bootable flags and automatically selects a partition based on them. [3] Apparently, Microsoft drank the EFI kool-aid and still hasn't figured out that one can actually boot from a GPT label on a PC/BIOS system. _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel