GPT的LBA0就是一个MBR,只不过是空白的Protect MBR而已(纯UEFI模式这个“MBR”只有451字节处的0xEE和511~512字节处的0x55AA,其余均是0x00)。既然是“MBR”,我们在这个 Protect MBR上写入GRUB/bootloader和DPT会怎么样?这就是苹果搞出来的混合分区表。
基本矛盾是——Mac OS X是完全EFI/UEFI引导的,而且苹果的系统构架并不需要PBR(Mac OS X的引导过程是直接从启动分区里找到引导程序加载系统内核);而WindowsXP是纯纯的MBR引导。
比较幸运的是——EFI/UEFI是一款足够强大的平台,EFI/UEFI是c语言写的,可以模块化的增加功能,而且UEFI网络和用户接口的加入使本来就技术激进苹果拥有了足够强大的底层支持(如果你用过苹果电脑的联网恢复功能,就知道苹果的UEFI有多么强大,在主硬盘被低格的情况下可以通过UEFI联网恢复系统)。
苹果的操作是——苹果开发了Boot Camp,这个东西实际就干了4件事:修改分区参数(给WinXP腾出一块磁盘空间),让Protect MBR称为真的MBR(把XP的启动引导程序放进GRUB、把GPT前四个分区拷贝DPT),激活NVRAM里的隐藏参数,准备整套的独家驱动。
BC魔改之后的Mac OS X的引导流程是——开机→初始化→加载→UEFI→苹果自己的EFI系统→加载NVRAM参数→引导程序→系统内核→Mac OS X。
BC魔改之后的WindowsXP的引导流程——开机→初始化→加载→UEFI→苹果自己的EFI系统→加载NVRAM参数→Boot Camp→MBR→DPT→PBR→NTLDR→boot.ini→winload.exe→系统内核加载→WindowsXP。