相关概念:

BIOS(Basic Input/Output System)
基本输入输出系统,全称是ROM-BIOS,是只读存储器基本输入/输出系统的简写,它实际是一组被固化到电脑中,为电脑提供最低级最直接的硬件控制的程序。

CMOS(ComplementaryMetal Oxide Semiconductor)
本意是指互补金属氧化物半导体,一种大规模应用于集成电路芯片制造的原料,在计算机领域,CMOS常指保存计算机基本启动信息(如日期、时间、启动设置等)的芯片。

CMOS 的功耗很低,计算机主板上一个纽扣电池就可以给它长时间地提供电力,即使系统掉电,信息也不会丢失。而当主板电池供电不足时CMOS的信息会丢失,此时启动机器会有一些特殊的现象,如启动时提示 CMOS 参数丢失需重新设置,甚至机器黑屏,不能启动,更换主板上的纽扣电池即恢复正常。

有时人们会把CMOS和BIOS混称,其实CMOS是主板上的一块可读写的RAM芯片,是用来保存BIOS的硬件配置和用户对某些参数的设定。而对CMOS中各项参数的设定要通过专门的程序,现在多数厂家将CMOS设置程序做到了BIOS芯片中,在开机时通过按下某个特定键就可进入CMOS设置程序而非常方便地对系统进行设置,因此这种CMOS设置又通常被叫做BIOS设置。

ESCD(Extended System Configuration Data)
扩展系统配置数据,ESCD是系统BIOS用来与操作系统交换硬件配置信息的一种手段,这些数据被存放在CMOS(一小块特殊的RAM,由主板上的电池来供电)之中,通常ESCD数据只在系统硬件配置发生改变后才会更新


二、主机启动过程


1. 内部电源打开,初始化,等待一小段时间用来产生稳定的电流。如果主板芯片和 CPU 收到了不符合规定的电流,将自动产生一个RESET信号。在主板没有收到电源的 Power Good 信号之前,重复步骤1


2. 执行 BIOS 中 0FFF0h 处的代码。这里只有一条 JMP 指令,将跳转到真正的 BIOS 启动程序处


3. BIOS 开始加电自检(Power-On Self Test, POST),如果出现错误,启动停止


4. BIOS 开始寻找显卡,找到的话将执行显卡的 BIOS,接着显卡初始化,将显示一段显卡信息,我们开机看到的第一屏就是它


5. BIOS 开始执行所有其他设备的 BIOS,包括软驱,硬盘、光驱等


6. BIOS 显示启动信息


7. BIOS 开始额外的检测。一般有内存检测,如果内存有问题,将显示错误消息


8. BIOS 探测所有的硬件,将显示如硬盘、光驱信息等


9. BIOS 给出一个已知硬件的列表


10. BIOS 更新 ESCD


10. BIOS 按照设置的驱动器顺序找驱动器,如果驱动器存在的话继续找 MBR,如果找不到驱动器,系统显示错误信息并停止


11. MBR 从分区表中找到第一个活动分区(分区描述中第一个字节为 80H),然后读取并执行这个活动分区的分区引导记录,而分区引导记录将负责引导系统(如 XP)


步骤11中若为 grub4dos MBR则依次查找各个分区的根目录是否有grub4dos 的启动文件(通常为 grldr,写入 MBR 时可以指定此文件名),也就是说若是 grub4dos MBR 可以不设置活动分区


上面是打开电源开关(或按Reset键)进行冷启动时的过程,在DOS下按Ctrl+Alt+Del组合键(或从Windows中选择重新启动计算机)来进行热启动时将从步骤8开始



完整的 0 扇区(XP 的 MBR)如下



其中 0x0000~0x01FF 即为硬盘的 0 扇区,这个扇区的内容分为 3 部分


第 1 部分(0x0000~0x01BD)446 个字节为完整的 XP MBR,选中这部分内容保存到文件即可作为 MBR 的备份,将此备份内容写入硬盘的 0x0000~0x01BD 位置即可恢复 XP MBR,其中左边可读的部分即为 MBR 找不到活动分区时的错误信息,使用 Paragon Partition Manager、PTDD 磁盘分区表医生等工具均可将硬盘的 MBR 恢复为(写入) XP MBR


第 2 部分(0x01BE~0x01FD)64 个字节为硬盘的分区表(Disk Partition Table, DPT),每 16 个字节描述一个主分区,所以一个硬盘最多可以有 4 个主分区

分区表的每一分区的第 1 个字节是活动标志,其值为80H时,表示该分区是当前活动分区,可引导,其值为00H时,表示该分区不可引导


第 3 部分(0x01FE~0x01FF)2 个字节“55 AA”是分区有效结束标志


主引导程序

出错信息数据区

分区表

结束标志

0000-0088

主引导程序

0089-01BD

数据区

01BE-01CD

分区项1(16字节)

01CE-01DD

分区项2(16字节)

01DE-01ED

分区项3(16字节)

01EE-01FD

分区项4(16字节)

01FE

55

01FF

AA