-
主引导扇区位于整个硬盘的0磁道0柱面1扇区 ,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。
-
MBR结构
在总共512字节的MBR扇区中,由四部分组成:
(引导程序)
引导程序在0号扇区的开始位置,共占用440字节。
(Windows磁盘签名)
Windows磁盘签名占用引导程序后的4个字节,是windows系统对硬盘初始化时写入的一个硬盘标签。
(分区表)
分区表占用64字节,是MBR中非常重要的一个结构。
(结束标志)
扇区最后两个字节“55AA”是MBR的结束标志。 - 一般来说,MBR的工作是检查其偏移量为0x1BE(在内存中就是0x7DBE)开始的四项16字节的主分区表项,找到活动分区,加载活动分区的首个扇区(卷引导记录,英文volume boot record,缩写VBR)到0x7C00~0x7DFF处并转移控制权(跳转执行0x7C00处的语句)。MBR在加载VBR之前,很可能需要将自己复制到内存中的另外一个地方。许多MBR的做法是把自己复制到中断向量表IVT的后面内存地址0x400之后,0x6000之前,把临时的栈设在0x7C00之前的一段内存。
- 卷引导记录VBR除了包含引导启动代码,还包含文件系统的元数据。VBR的引导启动代码的主要工作是从该卷中加载操作系统引导启动的文件(例如Windows XP的NTLDR和Windows Vista、7、8的BOOTMGR)到内存并转移控制权。
- MBR里面存放着电脑需要从哪个系统启动的信息,电脑便会自动转到系统所在的分区,继续执行该分区里的引导。
对于GPT,电脑会找到硬盘里第一个FAT格式 (比如:FAT32格式) 的主分区,默认该分区为引导所在位置。而且电脑会读取分区里面的固定的引导文件。
(FAT分区):\efi\boot\bootia32.efi(IA32构架的启动文件)
或者
(FAT分区):\efi\boot\bootx64.efi(X64构架的启动文件)
前面是32位电脑的启动文件,后面是64位电脑的启动文件。根据文件指向,继续引导相应的系统
BIOS-->MBR-->DPT-->PBR--> Bootmgr-->bcd-->Winload.exe-->内核加载 -->整个windows7系统
四、VBR
主分区和逻辑分区的第一个扇区被称为VBR,在VBR中可以保存在本分区安装的操作系统的引导代码
五、开机加载流程
1、单操作系统
1)需加载操作系统在主分区
i、首先BIOS加载MBR
ii、执行MBR中的引导代码,这时候分为两种情况,一种是引导代码直接加载操作系统;另外一种是加载活动分区中的VBR,让其加载操作系统,在后者情形下,会发生如下这些步骤
iii、读取MBR中的分区信息,确定活动分区(这里某条主分区的partion entry被标识为active)
iv、加载活动主分区的VBR
v、执行VBR中的引导代码,加载操作系统
2)需加载操作系统在逻辑分区
i、首先BIOS加载MBR
ii、执行MBR中的引导代码,这时候分为两种情况,一种是引导代码直接加载操作系统;另外一种是加载活动分区中的VBR,让其加载操作系统,在后者情形下,会发生如下这些步骤
iii、读取MBR中的分区信息,确定活动分区(这里扩展分区partion entry被标识为active)
iv、加载扩展分区上的第一个扇区中的第一个EBR,根据这个EBR遍历EBR链接表,找到被标识为active的逻辑分区位置
v、加载活动逻辑分区的VBR
vi、执行VBR中的引导代码,加载操作系统
2、双操作系统
i、首先BIOS加载MBR
ii、执行MBR中的引导代码,给出可选择加载操作系统列表供用户选择
iii、在用户选择加载某个操作系统后,MBR中的引导代码根据某个映射机制能够得到需加载操作系统所在的活动分区位置信息
iv、加载活动分区的VBR
v、执行VBR中的引导代码,加载操作系统
学习样本:
f377e0f7c8f1a37cd5c92cf7aea3c8f7
参考:http://blog.youkuaiyun.com/dslztx/article/details/46640699
转载于:https://blog.51cto.com/antivirusjo/2049737