计算机启动:bios+MBR

1 基本概念

1.1 BIOS(基本输入输出系统)

   BIOS直接与硬件打交道,为操作系统提供控制硬件设备的基本功能。
   BIOS分为系统BIOS(即常说的主板BIOS)、显卡BIOS和其它设备(例如IDE控制器、SCSI卡或网卡等)的BIOS,其中系统BIOS是控制计算机的启动的主要代码。
   BIOS一般被存放在ROM(只读存储芯片)之中,即使在关机或掉电以后,这些代码也不会消失。

1.2 内存地址

   内存每一个字节都被赋予了一个地址,以便CPU访问。
   最初的8086处理器能够访问的内存最大只有1MB(0~FFFFFH): 低端640KB被称为基本内存;A0000H~BFFFFH保留给显示卡显存使用;C0000H~FFFFFH则保留给BIOS使用,其中显卡BIOS一般在C0000H~C7FFFH处,IDE控制器的BIOS在C8000H~CBFFFH处,系统BIOS一般占用了最后的64KB或更多一点的空间。

1.3 MBR

   磁盘指的是硬盘、软盘、U盘、光盘等等这种类型的设备。
   对每个类型磁盘,都有MBR和分区来组织这个磁盘。
   按照标准,每个磁盘可以有最多4各主分区,1个扩展分区。扩展分区上可以分多个逻辑分区。
   磁盘每个分区的第一个扇区是用来存放特别的信息,比如引导加载程序,而不用来存放文件等信息(每个分区的第一个扇区无法通过文件系统来访问)。
   注意:MBR不属于任何分区。MBR除了存放引导加载程序,还在后64个字节中存放这个磁盘的分区表。

2 BIOS启动过程

2.1 按下电源开关,电源就开始向主板和其它设备供电;此时电压还不太稳定,主板上的控制芯片组会向CPU发出并保持一个RESET(重置)信号,让CPU内部自动恢复到初始状态,但CPU在此刻不会马上执行指令;当芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去RESET信号(如果是手工按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号);CPU马上就从地址FFFF:0000H 处开始执行指令。从前面介绍可知,这个地址实际是系统BIOS的地址范围,无论是Award BIOS还是AMI BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。

2.2 系统BIOS的启动代码首先进行POST(Power-On Self Test,加电后自检)。

   POST的主要检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备;
   由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型;
   在正常情况下,POST过程进行得非常快,几乎无法感觉到它的存在。
   POST结束之后就会调用其它代码来进行更完整的硬件检测。

2.3 接下来系统BIOS将查找显卡的BIOS。

    前面说过,存放显卡BIOS的ROM芯片的起始地址通常设在C0000H处,系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡。此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。
   系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。

2.4 查找完所有其它设备的BIOS之后,系统BIOS将显示出它自己的启动画面,其中包括有系统BIOS的类型、序列号和版本号等内容。

2.5 接着系统BIOS将检测和显示CPU的类型和工作频率,测试所有的RAM,并同时在屏幕上显示内存测试的进度。可以在CMOS设置中自行决定使用简单耗时少或者详细耗时多的测试方式。

2.6 内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,包括硬盘、CD-ROM、串口、并口和软驱等设备,另外绝大多数较新版本的系统BIOS在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。

2.7 标准设备检测完毕后,系统BIOS内部支持即插即用的代码将开始检测和配置系统中安装的即插即用设备。每找到一个设备之后,系统BIOS都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、DMA通道和I/O端口等资源。

2.8 到这一步为止,所有硬件都已经检测配置完毕了,多数系统BIOS会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。

2.9 接下来系统BIOS将更新ESCD(Extended System Configuration Data,扩展系统配置数据)。ESCD是系统BIOS用来与操作系统交换硬件配置信息的一种手段,这些数据被存放在CMOS(一小块特殊的RAM,由主板上的电池来供电)之中。通常ESCD数据只在系统硬件配置发生改变后才会更新,所以不是每次启动机器时都能够看到“Update ESCD… Success”这样的信息。不过,某些主板的系统BIOS在保存ESCD数据时使用了与Windows 9x不相同的数据格式,于是Windows 9x在它自己的启动过程中会把ESCD数据修改成自己的格式。但在下一次启动机器时,即使硬件配置没有发生改变,系统BIOS也会把ESCD的数据格式改回来。如此循环,将会导致在每次启动机器时,系统BIOS都要更新一遍ESCD,这就是为什么有些机器在每次启动时都会显示出相关信息的原因。

2.10 ESCD更新完毕后,系统BIOS的启动代码将进行它的最后一项工作:即根据用户指定的启动顺序从软盘、硬盘或光驱启动MBR。

2.10.1 系统BIOS将读取磁盘上的主引导记录MBR,并放入指定位置(0000:7C00H )的内存;
2.10.2 检查0000:7DFEH-0000:7DFFH(MBR的结束标志位)是否等于 AA55H,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示"NO ROM BASIC"然后死机;
2.10.3 当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。启动设备的MBR将自己复制到0000:0600H处, 然后继续执行。
2.10.4 MBR从分区表中找到第一个活动分区,读取并执行这个活动分区的分区引导记录(读入内存地址 0000:7C00H 处)。
2.10.5 检查0000:7DFEH-0000:7DFFH(DBR的结束标志位)是否等于 AA55H, 若不等于则显示 : "Missing Operating System" 然后停止。
2.10.6 当检测到有分区满足要求后,MBR将控制权交给相应的活动分区。

MBR扇区的数据结构:

字节偏移(十六进制)      字 节 数         描 述

00~1BD                    446           引导代码

1BE~1CD                   16            分区表项1

1CE~1DD                   16            分区表项2

1DE~1ED                   16            分区表项3

1EE~1FD                   16            分区表项4

1FE~1FF                    2            签名值(55AA)

分区表项数据结构:

偏移(十六进制)         字节数            描 述

00~00                   1               可引导标志,0x00 - 不可引导;0x80 - 可引导

01~03                   3               分区起始CHS地址

04~04                   1               分区类型

05~07                   3               分区结束CHS地址

08~0B                   4               分区起始LBA地址(Little-endian顺序)

0C~0F                   4               分区大小扇区数(Little-endian顺序)


2.11 上面介绍的是计算机在打开电源开关进行冷启动时所要完成的各种初始化工作。如果从Windows中选择重新启动计算机来进行热启动,那么POST过程将被跳过去,直接从第三步开始,另外第五步的检测CPU和内存测试也不会再进行。

 

 

BIOS报警声音含义

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值