1. 系统开机或者重启。
2. BIOS 加电自检 ( Power On Self Test -- POST )。BIOS执行内存地址为 FFFF:0000H 处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
3. 当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。此时,BIOS直接将启动设备的第一个扇区(即主引导扇区)
附注:引导扇区是每个分区(Partition)的第一扇区,而主引导扇区是硬盘的第一扇区,它在硬盘上的三维地址为{(柱面,磁头,扇区)|(0,0,1)}。
它由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节(偏移0--偏移1BDH),DPT占64个字节(偏移1BEH--偏移1FDH),最后两个字节“55AA”(偏移1FEH--偏移1FFH)是硬盘有效标志。其结构如下:
标准主引导扇区结构 | |||
位址 | 长度(字节) | 描述 | |
0000 | 0 | 394 – 446 | 代码区 |
018A | 394 | 36 | 四个 9 byte 的主分区表入口(选用 IBM 的延伸 MBR 分区表规划) |
01B8 | 440 | 4 | 选用磁盘标志 |
01BC | 444 | 2 | 一般为空值:0x0000 |
01BE | 446 | 64 | 四个 16 byte 的主分区表入口(标准 MBR 分区表规划) |
01FE | 510 | 2 | MBR 有效标志 (0x55 0xAA) |
拷贝入内存地址:0000:7C00处,检查相应启动设备的0000:7DFEH-0000:7DFFH(主引导扇区的最后两个字节)是否等于 AA55H,若不等于则转去尝试其他启动设备,并将其第一个扇区拷贝入内存继续测试。如果尝试所有启动设备后,没有启动设备满足要求则显示"NO ROM BASIC"然后死机。
4. 当检测到有启动设备的第一个扇区最后两个字节等于AA55H后,则认为该启动设备符合要求。当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。此时可以执行主引导扇区中的MBR中的代码程序,比如LiLo,Grub程序等等。启动设备的MBR将自己复制到0000:0600H处, 然后继续执行
5. 在主分区表中搜索标志为活动的分区,也就是检验磁盘分区表
硬盘分区结构信息 | ||
偏移 | 长度(字节) | 意义 |
00H | 1 | 分区状态:00-->非活动分区;80--> 活动分区; |
01H | 1 | 分区起始磁头号(HEAD),用到全部8位 |
02H | 2 | 分区起始扇区号(SECTOR),占据02H的位0-5; |
04H | 1 | 文件系统标志位 |
05H | 1 | 分区结束磁头号(HEAD),用到全部8位 |
06H | 2 | 分区结束扇区号(SECTOR),占据06H的位0-5; |
08H | 4 | 分区起始绝对扇区 |
0CH | 4 | 分区总的扇区数 |
DPT的首字节是不是80H。如果检测到80H,则表示该分区为活动分区,将该活动分区的第一个扇区(操作系统引导记录区,Dos Boot Recorder,DBR)读入内存地址 0000:7C00H 处。
6. 检查0000:7DFEH-0000:7DFFH(DBR的结束标志位)是否等于 AA55H, 若不等于则显示 : "Missing Operating System" 然后停止。 当检测到有分区满足要求后,MBR将控制权交给相应的活动分区。