Boot Sector结构、系统启动过程简介

Boot Sector结构、系统启动过程简介

一.
 Boot Sector 的组成 

   Boot Sector 
也就是硬盘的第一个扇区(注10柱面,0磁道,1扇区) (注2 1磁道=16扇区,1扇区=512字节)它由 MBR (Master Boot Record)DPT (Disk Partition Table)  Boot Record ID  三部分组成
   MBR 
又称作主引导记录占用 Boot Sector 的前 446 个字节 ( 0 to 0x1BD ), 
存放系统主引导程序 (它负责检查硬盘分区表、寻找可引导分区并负责将可引导分区的引导扇区(DBR)装入内存).
   DPT 
即主分区表占用 64 个字节 (0x1BE to 0x1FD), 记录了磁盘的基本分区 
信息主分区表分为四个分区项每项 16 字节分别记录了每个主分区的信息 
(
因此最多可以有四个主分区). 
   Boot Record ID 
即引导区标记占用两个字节 (0x1FE and 0x1FF), 对于合法 
引导区它等于 0xAA55, 这是判别引导区是否合法的标志
   Boot Sector 
的具体结构如下图所示
     0000  |------------------------------------------------| 
           |                                                | 
           |                                                | 
           |             Master Boot Record                 | 
           |                                                | 
           |                                                | 
           |             
主引导记录(446字节)                | 
           |                                                | 
           |                                                | 
           |                                                | 
     01BD  |                                                | 
     01BE  |------------------------------------------------| 
           |                                                | 
     01CD  |             
分区信息  1(16字节)                | 
     01CE  |------------------------------------------------| 
           |                                                | 
     01DD  |             
分区信息  2(16字节)                | 
     01DE  |------------------------------------------------| 
           |                                                | 
     01ED  |             
分区信息  3(16字节)                | 
     01EE  |------------------------------------------------| 
           |                                                | 
     01FD  |             
分区信息  4(16字节)                | 
           |------------------------------------------------| 
           | 01FE                | 01FF                     | 
           |         55          |           AA             | 
           |------------------------------------------------|

系统启动过程简介 

   
系统启动过程主要由一下几步组成(以硬盘启动为例): 

   1. 
开机
   2. BIOS 
加电自检 ( Power On Self Test -- POST ) 
      
内存地址为 0ffff:0000 
   3. 
将硬盘第一个扇区 (001扇区也就是Boot Sector) 
      
读入内存地址 0000:7c00 .(注3:遇到最后两个字节55 AA读入内存执行 
   4. 
检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于 
      
则转去尝试其他启动介质如果没有其他启动介质则显示 
      "No ROM BASIC" 
然后死机
   5. 
跳转到 0000:7c00 处执行 MBR 中的程序
   6. MBR 
首先将自己复制到 0000:0600 然后继续执行
   7. 
在主分区表中搜索标志为活动的分区如果发现没有活动 
      
分区或有不止一个活动分区则转停止
   8. 
将活动分区的第一个扇区读入内存地址 0000:7c00 .

(注4在分区表的四个记录中,一般来说有且只有一个记录的标记是活动的,MBR主要负责从活动分区中装载并运行系统引导程序)会去找到这个分区记录,根据记录的起始扇区加载该分区的逻辑 0 扇区(起始扇区)的内容到 0x07C0:0000,并且执行 JUMP 0x07C0:0000(按照规范,BOOT RECORD 也应该从 0x07C0:0000 处开始执行,所以 MBR 通常都要先将自己搬移,以腾出位置去加载 BOOT RECORD)。控制权切换到 BOOT RECORDBOOT RECORD(包括boot loadergrub或lilo ) linux 为例,它会读取 linux 内核镜像到地址 0xArray000:0000,然后开始切换到 0xArray000:0000 继续运行。  MS-DOS 为例,则它会读取文件系统根目录下的 IO.SYS  MSDOS.SYS 两个文件然后加载到内存中继续运行。
   Array. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则 
      
显示 "Missing Operating System" 然后停止或尝试 
      
软盘启动
   10. 
跳转到 0000:7c00 处继续执行特定系统的启动程序
   11. 
启动系统 ... 

   
以上步骤中 2,3,4,5 步是由 BIOS 的引导程序完成. 6,7,8,Array,10 
步由MBR中的引导程序完成

   
一般多系统引导程序 ( SmartFDISK, BootStar, PQBoot 
都是将标准主引导记录替换成自己的引导程序在运行系统启动程序 
之前让用户选择要启动的分区
   
而某些系统自带的多系统引导程序 ( lilo, NT Loader 
则可以将自己的引导程序放在系统所处分区的第一个扇区中 Linux 
中即为 SuperBlock (其实 SuperBlock 是两个扇区). 
   
以上各步骤中使用的是标准 MBR, 其他多系统引导程序的引导过程与此不同.

5:一些早期的引导型病毒,以及某些 bootloader,还有些硬盘加密卡,他们会修改 MBR,做个钩子出来。

你可能感兴趣的:(Boot,系统引导,BootSector)