什么是MBR
硬盘的0柱面、0磁头、1扇区称为主引导扇区,该记录占用512个字节,它用于硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统区。
磁盘的第一个扇区主要记录了两个重要的信息,分别是
1.主引导记录(Master Boot Record,MBR),可以安装开机管理程序(系统引导程序,BootLoader)的地方,有446个字节。
2.分区表,记录整个硬盘的分割状态,有64字节。
MBR的组成
一个扇区的硬盘主引导记录MBR由如下图所示的4个部分组成。
- 主引导程序(偏移地址0000H—0088H),它负责从活动分区中装载,并运行系统引导程序。
- 出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。
- 分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。
- 结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。
0000-0088 0089-01BD 出错信息数据区 数据区 … … … 结束标志 …
MBR中的分区信息结构
占用512个字节的MBR中,偏移地址01BEH--01FDH的64个字节,为4个分区项内容(分区信息表)。它是由磁盘介质类型及用户在使用 FDISK定义分区说确定的。在实际应用中,FDISK对一个磁盘划分的主分区可少于4个,但最多不超过4个。每个分区表的项目是16个字节,其内容含义 如表6-19所示。
表6-19 分区项表(16字节)内容及含义
存贮字节位 内容及含义 第1字节 引导标志。若值为80H表示活动分区,若值为00H表示非活动分区。 第2、3、4字节 第5字节 第6、7、8字节 第9、10、11、12字节 本分区之前已用了的扇区数 第13、14、15、16字节 本分区的总扇区数
为什么需要分区?
(1)数据安全性
各个分区的数据是分离的,C盘出问题了,D盘不会受到影响。
(2)效率
由于分区将数据集中在某个磁柱的区段,第一个分割槽位于磁柱号码 1~100
号,如此一来当有数据要读取自该分割槽时, 磁盘叧会搜寻前面 1~100 的磁柱范围,由于数据
集中了,将有助于数据读取的速度。
分区表只有记录四组数据的空间,并不意味着只能有4个分区,可以使用扩展分区,扩展分区内可以划分逻辑分区。
X86开机流程
引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的引导程序一起组成。BIOS在完成硬件检测和资源分配后,将硬盘MBR中的引导程序读到系统的RAM中,然后将控制权交给引导程序。引导程序的主要运行任务就是将内核映象从硬盘上读到RAM中 然后跳转到内核的入口点去运行,也即开始启动操作系统。即如下四步:
(1)BIOS: CPU会执行的第一个程序,保存在固件中。
(2)MBR:BIOS会依据设定去取得能够开机的硬盘,并且会读取该硬盘的第一个扇区的MBR,内涵开机管理程序。
(3)开机管理程序(Boot Loader),找到操作系统内核
(4)执行操作系统
MBR中会存放开机管理程序(BootLoader),而且只有446个字节,所有这个BootLoader是非常小的。它主要完成以下功能:
(1)提供选项:用户可以选择不同的开机选项,这也是多重引导的重要功能。
(2)载入操作系统内核:直接指向操作系统入口
(3)转交给其他开机管理程序(Boot Loader)
备注:开机管理程序除了可以安装在MBR之外,也可以安装在其他主分区的启动扇区中(实现多重引导)。
举一个例子来说,假设你的个人计算机只有一个硬盘,里面切成四个分割槽,其中第一、二分割槽
分别安装了 Windows 及 Linux, 你要如何在开机的时候选择用 Windows 还是 Linux 开机呢?假设
MBR 内安装的是可同时认识 Windows/Linux 操作系统的开机管理程序,那么整个流程如下: