关于mbr与gpt的一些疑惑
Tofloor
poster avatar
deepinfanspan
deepin
2015-01-05 23:25
Author
1.mbr格式下开电脑时会先读入磁盘0柱面,0磁道,1扇区的内容,然后执行主引导记录,由主引导记录确定跳转到哪里启动系统。这种情况下,装win+linux双系统时,grub会修改主引导记录,让其直接跳转到自己,再由grub决定引导哪一个系统。gpt格式下会先有一个pmbr,然后是分区表,我的电脑预装win8,有一个efi分区。
2.我的疑惑是1)gpt硬盘装系统,efi分区是否必须存在?(2)若是,efi分区中装的应该是引导记录,但电脑开机是读的还是0磁道,0柱面,1扇区,对于gpt硬盘,这里应该是pmbr,那么pmbr是不是负责读入efi分区内容,然后将引导权交给efi?(3)若以上两条都正确,如果装linux时选择legacy first,并选择将grub装在/boot分区,此时grub是不是修改了pmbr,使其不装efi分区,直接跳转到自己,但是这样由于没有efi分区的内容,所以这种情况下grub只能引导linux,如装linux用efi模式安装,会把grub装在efi分区,这样pmbr->efi->grub->选择系统,就能实现双系统引导?(4)如果我直接格式化linux所在分区,会不会造成win8无法引导?因为pmbr已被修改,它跳到原grub所在地方会发现什么都没有(5)有没有办法让legacy方式装的grub引导以efi方式装的win8?(6)如果以上推测都错误,希望有大神详解一下gpt格式下系统的启动过程以及此格式下双系统的引导原理,感激不尽
Reply Favorite View the author
All Replies
MattD
deepin
2015-01-06 01:12
#1
PMBR的作用是兼容某些无法直接通过UEFI进行引导的bootloader,比如extlinux,比如FreeBSD的boot0。
在GPT上,有两种引导模式:
1、UEFI Boot Manager—>ESP—>EFI Executable—>OS
2、UEFI Boot Manager—>MBR—>OS
两种模式可共存,只要你的主板固件支持的话。因此,对于安装在同一GPT磁盘上的同一Linux发行版,甚至可以同时采用这两种引导模式。
再针对你的第2个问题具体回答下:
(1)gpt硬盘装系统,efi分区是否必须存在?
从以上解释就可以看出来,对于Linux或者FreeBSD,ESP不必要,它们都可以借助PMBR引导。但是Windows不行,虽然有其他方法可以规避,但是不受官方支持。
(2)若是,efi分区中装的应该是引导记录,但电脑开机是读的还是0磁道,0柱面,1扇区,对于gpt硬盘,这里应该是pmbr,那么pmbr是不是负责读入efi分区内容,然后将引导权交给efi?
上一条不成立,这条就无需解释了。PMBR和ESP压根是两套独立的机制。
(3)若以上两条都正确,如果装linux时选择legacy first,并选择将grub装在/boot分区,此时grub是不是修改了pmbr,使其不装efi分区,直接跳转到自己,但是这样由于没有efi分区的内容,所以这种情况下grub只能引导linux,如装linux用efi模式安装,会把grub装在efi分区,这样pmbr->efi->grub->选择系统,就能实现双系统引导?
还是看最上面。
(4)如果我直接格式化linux所在分区,会不会造成win8无法引导?因为pmbr已被修改,它跳到原grub所在地方会发现什么都没有
不会,要从GPT引导Windows的话,UEFI是强制要求。
(5)有没有办法让legacy方式装的grub引导以efi方式装的win8?
可以的,chainloader给ESP里面的bootmgfw.efi就行,自己验证下,我手头没UEFI机器。
(6)如果以上推测都错误,希望有大神详解一下gpt格式下系统的启动过程以及此格式下双系统的引导原理
GPT上的双系统引导很大程度上取决于你的固件支持程度。有的固件甚至不支持legacy模式,只能以纯UEFI模式。何况还有非常规的GPT/MBR混合分区表这种黑科技存在,一时半会根本讲不清,得具体问题具体解释。
Reply View the author
MattD
deepin
2015-01-06 01:17
#2
另外,由于GPT没有MBR表那样的保留扇区,因此如果要通过legacy模式来使用grub2的话,需要单独分一个最小31KiB的BIOS Boot分区,分区ID为EF02,作用就是模拟MBR表上的保留扇区。
当然,由于现代文件系统不支持这么小的分区,因此往往要分1MiB。
Reply View the author
deepinfanspan
deepin
2015-01-06 01:25
#3
太厉害了,解释的非常清楚,膜拜一下
Reply View the author
gangbadaci
deepin
2015-01-06 05:27
#4
另外,由于GPT没有MBR表那样的保留扇区,因此如果要通过legacy模式来使用grub2的话,需要单独分一个最小31KiB的BIOS Boot分区,分区ID为EF02,作用就是模拟MBR表上的保留扇区。
当然,由于现代文件系统不支持这么小的分区,因此往往要分1MiB。
安装系统时专家模式里可以分BIOS boot分区吗?如果可以,分区格式选什么?是ext4吗?另外,该分区需要挂载吗?  有大神知道吗?先谢过! 查了很多资料,还没弄懂!
Reply View the author
gangbadaci
deepin
2015-01-06 19:14
#5
再顶,求指导。
Reply View the author
deepinfanspan
deepin
2015-01-06 21:10
#6
大神不出来了@_@
Reply View the author
gangbadaci
deepin
2015-01-07 20:37
#7
另外,由于GPT没有MBR表那样的保留扇区,因此如果要通过legacy模式来使用grub2的话,需要单独分一个最小31KiB的BIOS Boot分区,分区ID为EF02,作用就是模拟MBR表上的保留扇区。
当然,由于现代文件系统不支持这么小的分区,因此往往要分1MiB。
安装系统时专家模式里可以分BIOS boot分区吗?如果可以,分区格式选什么?是ext4吗?另外,该分区需要挂载吗? 有大神知道吗?求指导,先谢过!
Reply View the author
deepinfanspan
deepin
2015-01-08 08:14
#8
大神不来回答,我就说一说我的安装情况吧。我电脑原装的win8,我装的是linux mint 17。安装过程如下1)进win8用磁盘管理工具删除了100g的空间,用来装linux; (2)开机时f2(电脑不同可能有所差别)进bois关secure boot,并选择legacy first,插入u盘,保存退出;(3)之后会直接进win8,不知道为什么,但是可以再次重启,按f12选择启动项,我选择的是以efi开头的u盘项(还有一个u盘项不是以efi开头),进入安装界面后分区,我分的是/40g   /boot500m   /home50多g  /swap 2g   选择将grub安装在sda2(此分区为win8引导程序所在分区,不同情况会有所不同),grub很聪明的,它不会动里面原来的东西,只是把自己加了进去。然后安装就行了,装完后自动引导双系统。
Reply View the author
listenerri
deepin
2015-01-08 08:33
#9
另外,由于GPT没有MBR表那样的保留扇区,因此如果要通过legacy模式来使用grub2的话,需要单独分一个最小31KiB的BIOS Boot分区,分区ID为EF02,作用就是模拟MBR表上的保留扇区。
当然,由于现代文件系统不支持这么小的分区,因此往往要分1MiB。
涨姿势了~~
Reply View the author
MattD
deepin
2015-01-08 18:29
#10
[quote]另外,由于GPT没有MBR表那样的保留扇区,因此如果要通过legacy模式来使用grub2的话,需要单独分一个最小31KiB的BIOS Boot分区,分区ID为EF02,作用就是模拟MBR表上的保留扇区。
当然,由于现代文件系统不支持这么小的分区,因此往往要分1MiB。
安装系统时专家模式里可以分BIOS boot分区吗?如果可以,分区格式选什么?是ext4吗?另外,该分区需要挂载吗? 有大神知道吗?求指导,先谢过![/quote]
貌似不行,deepin的安装器没提供相应的选项。
Reply View the author