MBR、开机流程与主引导分区

如题所述

第1个回答  2022-07-11

在预备知识中我们就知道了,开机运行的第一个程序就是 BIOS ,那么开机引导操作系统的切入点也肯定是它了。

BIOS 识别 CMOS 读取硬件信息,从中找出可开机设备,一般自然是硬盘了。

当然,可开机设备不一定是硬盘,或者说你有两个硬盘,这里就不做讨论了。

BIOS 找到第一个扇区之后就查找 MBR 的位置,这是最基本的引导程序(Boot loader),这个程序一旦启动,BIOS 的任务才算圆满。

MBR 中的引导程序运行,这个时候用户可以对开机选项进行操作,例如转交引导加载的任务给其他引导程序(之后还会提到)。

什么都做完了,当然该操作系统登场,负责提供其基本功能。

Step 2 中提到了第一个扇区。实际上,这个扇区不止包含 MBR,它还包含了一个分区表,用来对硬盘进行分割,文件系统的最小单位是柱面,所以它是以记录柱面号来分割硬盘的。

例如第一分区是 1~100 柱面,那么分区记录项第一个的内容就是 1 和 100,其他以此类推。
我们所谓的"分区"实际上就是对这个分区表的记录进行修改。

由于分区表只有 64 bytes,所以最多只能有 4 个分区,这四个分区被称为主(Primary)分区。
那么你肯定要有疑问:分区可不一定只有 4 个啊。
是的,这种情况下就有一个相对于主引导分区的概念——扩展(Extended)分区。

如果我们拿主分区的其中一个存放另外一个分区表储存更多的分区信息,那我们就可以拥有更多分区。不是么。有时间理解一下下图吧。

这里需要注意的地方是,如果有 4 个主分区,我们就再也没有办法存放另外的分区信息,所以一般情况下会留下一个分区存放扩展分区信息,主分区因此最多只有 3 个。

扩展分区只能有一个(操作系统限制),扩展分区持续切割,形成新的分区,这就是逻辑分区(logical partition)。我们平时能作为数据访问的分区是主分区和逻辑分区,扩展分区不能格式化。

这里需要说明一下,每个分区都拥有自己的启动扇区,可以用来存放引导程序,并且该引导程序可以将管理权交给另一引导程序(其他分区的引导扇区)或者自己引导所在的分区,是的,可开机的内核文件不是在引导扇区内,而是在各分区内。

意思就是,你可以引导不止一种操作系统,根据你在 boot menu 的选择,可以引导任何在 MBR 指向中的系统。

上述两个原因表明了为何需要先安装 windows 操作系统,再安装 linux,否则将不会在开机的时候看到 linux 引导选项。

相对于 MBR 分区方案,GUID有以下优点 ( 源自百度百科 ):

GUID 扩展了分区表头,并且兼容了 MBR(第一扇区还是留有 MBR 的空间,为了兼容不支持 GUID 的硬盘),分区信息存放于分区表中,由 GUID HEADER 中的信息标识引导程序 efi 所在的分区。

开机过程(以下是我个人的理解,欢迎指正):

MBR 的引导过程中的知识来源于 《鸟哥的 linux 私房菜》一书,对于 linux 操作系统感兴趣的同学我觉得很值得一读,GUID 相关知识还不够全面,如果各位看客发现了错误,欢迎指正,也欢迎各位与我交流,共同成长。

相似回答