主引导扇区

来源:互联网 发布:路易十六知乎 编辑:程序博客网 时间:2024/05/01 15:36

                              

       主引导扇区是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)= (0,0,1)。

主引导扇区由三部分构成:

  • 主引导记录(Master Boot Record, MBR): 可以安装开机管理程序,446 bytes
  •  磁盘分区表(Disk Partition Table, DPT): 记录整个磁盘分区状态,64 bytes
  • 主引导扇区结束标志 0XAA55,    2 bytes

这里的MBR术语泛指整个主引导分区,需要根据具体情况判断。

       主引导记录扇区记录着磁盘本身的相关信息以及磁盘各个分区的大小及位置信息,是数据信息的重要入口。如果它受到破坏,硬盘上的基本数据结构信息将会丢失,难以恢复。主引导扇区内的信息可以通过任何一种基于某种操作系统分区工具软件写入,但是和某种操作系统没有特定的关系,即只要创建了有效的主引导记录就可以引导任意一种操作系统(操作系统是创建在高级格式化的硬盘分区上,是和一定的文件系统相联系的)。

 

 

主引导分区组成:

启动代码:

       主引导分区最开头是第一阶段引导代码。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成加电自检以后将控制权交给硬盘上的引导程序(如GNU GRUB)。它不依赖任何操作系统,而且启动代码也是可以改变的,从而实现多系统引导。

硬盘分区表

       硬盘分区表占据主引导扇区的64个字节(偏移01BEH—偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节。

 

结束标志

       结束标志字 55,AA(偏移1FEH-偏移1FFH)是主引导扇区的最后两个字节,是检验主引导记录是否有效的标志。

 

 

主引导扇区的读取流程:

 系统开机或者重启

1.  BIOS 加电自检 ( Power On Self Test -- POST )。BIOS执行内存地址为 FFFF:0000H 处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。

2.  读取主引导记录(MBR)。当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H 处。

3.  检查0000:7DFEH-0000:7DFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示"NO ROM BASIC"然后死机。

4.  当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。启动设备的MBR将自己复制到0000:0600H处, 然后继续执行。

5.  根据MBR中的引导代码启动引导程序

·        事实上,BIOS不仅检查0000:7DFEH-0000:7DFFH(MBR的结束标志位)是否等于55AAH,往往还对磁盘是否有写保护、主引导扇区中是否存在活动分区等进行检查。如果发现磁盘有写保护,则显示磁盘写保护出错信息;如果发现磁盘中不存在活动分区,则显示类似如下的信息“Remove disk or other media Press any key to restart”。

 

主引导记录与硬盘分区

         从主引导记录的结构可以知道,它仅仅包含一个64个字节的硬盘分区表。由于每个分区信息需要16个字节,所以对于采用MBR型分区结构的硬盘,最多只能识别4个主要分区(Primarypartition)。所以对于一个采用此种分区结构的硬盘来说,想要得到4个以上的主要分区是不可能的。这里就需要引出扩展分区了。扩展分区也是主要分区的一种,但它与主分区的不同在于理论上可以划分为无数个逻辑分区。

        扩展分区中逻辑驱动器的引导记录是链式的。每一个逻辑分区都有一个和MBR结构类似的扩展引导记录(EBR),其分区表的第一项指向该逻辑分区本身的引导扇区,第二项指向下一个逻辑驱动器的EBR,分区表第三、第四项没有用到。

Windows系统默认情况下,一般都是只划分一个主分区给系统,剩余的部分全部划入扩展分区。这里有下面几点需要注意:

·        在MBR分区表中最多4个主分区或者3个主分区+1个扩展分区,也就是说扩展分区只能有一个,然后可以再细分为多个逻辑分区。

·        在Linux系统中,硬盘分区命名为sda1-sda4或者hda1-hda4(其中a表示硬盘编号可能是a、b、c等等)。在MBR硬盘中,分区号1-4是主分区(或者扩展分区),逻辑分区号只能从5开始。

·        在MBR分区表中,一个分区最大的容量为2T,且每个分区的起始柱面必须在这个disk的前2T内。你有一个3T的硬盘,根据要求你至少要把它划分为2个分区,且最后一个分区的起始扇区要位于硬盘的前2T空间内。[3]如果硬盘太大则必须改用GPT

MBR分区表与GPT分区表的关系

        与支持最大卷为2 TB(Terabytes)并且每个磁盘最多有4个主分区(或3个主分区,1个扩展分区和无限制的逻辑驱动器)的MBR磁盘分区的样式相比,GPT磁盘分区样式支持最大卷为18 EB(Exabytes)并且每磁盘的分区数没有上限,只受到操作系统限制(由于分区表本身需要占用一定空间,最初规划硬盘分区时,留给分区表的空间决定了最多可以有多少个分区,IA-64版Windows限制最多有128个分区,这也是EFI标准规定的分区表的最小尺寸)。与MBR分区的磁盘不同,至关重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区。另外,GPT分区磁盘有备份分区表来提高分区数据结构的完整性。


分区

  • 所谓的分区, 只是针对那个64 bytes的分区表进行设定而已。
  • 硬盘默认的分区表仅能写入四组分区信息,扩展分区也属于主分区的一种
  • 分区的最小单位为磁柱(cylinder)
  • 当系统要读/写磁盘时,一定会参考磁盘分区表,然后到相应的磁柱范围内操作

 

扩展分区的作用: 提供额外的扇区来记录更多的分区信息。它自己无法被格式化,如果扩展分区被破坏, 那么所有的逻辑分区都会被删除,因为逻辑分区的分区记录全部都记录在扩展分区内。

逻辑分区: Linux 系统,1~4分区编号是保留给主/扩展分区的,因此第一个逻辑分区一定是从5号开始。

Boot Loader:除了可以安装在MBR之外,还可以安装在每个分区的启动扇区(boot sector)中。

文件系统(分区)与目录树的关系

       Linux通过目录树结构来管理文件。那么目录树和分区如何关联起来呢?? 通过挂载这个动作完成。 也就是说,进入此目录就可以访问该分区。由于整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区。

          目录树的关系是逻辑上的。所有的分区都可以挂载到相应的目录上。Linux在目录这一层作了些抽象,可以说是在目录和分区之间作了一个映射。具体通过两种方式:(1)安装linux时,在分区的同时并选择相应的挂载点;(2)安装后的mount命令。


原创粉丝点击