【Linux】引导扇区(boot sector)的结构

  Boot sector是硬盘(严格来说是所有可引导的存储介质)上的第一个扇区,大小为512字节,这个扇区对于计算机启动来说至关重要。
  这个小小的512字节包含了很多内容,主要分为三个部分,分别是: 

  1. MBR(master boot record,主引导记录)446字节

  2. DPT(disk partition table,磁盘分区表)64字节

  3. BRID(boot record ID引导记录标识)2字节

有很多人把主引导扇区和MBR混为一谈,实际上是不对的。
  

主引导记录MBR(446字节)

  主引导记录的作用是安装基本的引导加载程序(boot loader),在Linux中是grub。这个引导加载程序主要有以下三个功能:  

  • 提供菜单:用户可以选择不同的开机选项,这是多重引导的重要功能。
  • 载入内核文件:直接指向可开机的程序区段来开始操作系统
  • 转交其他loader:将引导加载功能转交给其他loader处理。

转交其他loader功能在安装了多个系统的时候非常重要,例如在电脑上安装了windows和Linux双系统的时候,开机的时候,Linux的boot loader(grub)会提供菜单让用户选择需要进入的系统(在倒计时界面,按任意键即可进入菜单界面),如果用户选择的是Windows系统,grub则将控制权转交给windows的loader,由windows的loader来加载windows内核,启动windows系统。

注意:在安装双系统的时候,要先安装windows系统,再安装Linux系统。因为Linux在安装的时候,你可以选择将boot loader安装在MBR或各别分区的启动分区, 而且Linux的loader可以手动配置菜单,所以你可以在Linux的boot loader里面加入Windows启动的选项,Windows在安装的时候,他的安装程序会主动覆盖掉MBR以及自己所在分区的启动扇区,你没有选择的机会。当然,如果非要先装Linux再装windows也可以,只不过要对MBR进行特别的处理,比较麻烦。

磁盘分区表DPT(64字节)

DPT占用64个字节,每16个字节表示一个分区,这16个字节的含义如下:

字节 长度 定义
第1个字节 1 0x00表示非活动分区,0x80表示活动分区,四个分区只有一个是激活的
第2~4字节 3 该分区第一个扇区的物理位置
第5个字节 1 分区类型,0x83就是Linux分区
第6~8字节 3 该分区最后一个扇区的物理位置
第9-12字节 4 该分区第一个扇区的逻辑地址
第13-16字节 4 该分区的扇区总数

由这个表13-16字节可以看出来,每个分区支持的最大的扇区数是 232 个,每个扇区是512字节,因此,每个分区的最大容量为:

512232240=2T

再看9~12字节,分区的逻辑地址也是四字节,因此,单个硬盘可利用的最大空间也是2TB。

BRID(引导记录标识)

  BRID的主要作用就是判断该设备是否可以用于启动。BIOS按照“启动顺序”,把控制权转交给排在第一位的储存设备。这时,计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给“启动顺序”中的下一个设备。其实主引导记录的作用就是告诉计算机到硬盘的哪一个位置去找操作系统。

你可能感兴趣的:(Linux)