一、前言
当我们按下电源的那一刻,到我们进入操作系统,计算机内部进行了一系列复杂的操作。而对于用户来说,这些操作都是看不到的,这里以linux为例,简要的描述一下系统的启动流程。
二、POST加电自检
POST(Power-on self-test)加电自检,又称之为开机自动检测。
当我们按下电源键的时候,电流流过主板的芯片组,芯片组会向CPU发送一个RESET信号,让CPU初始化,同时等待电源发出的POWER GOOD信号(电源准备好信号)。当电源开始稳定供电后,芯片组便撤去RESET信号,CPU马上就从地址FFFF0H处开始执行第一条指令,而这个地址就是指向BIOS的地址,同时将控制权限交给BIOS。系统BIOS的启动代码首先要做的事情就是进行POST,负责完成对CPU 、主板、内存 、硬盘子系统、显示子系统、 串并行接口、键盘、CD-ROM 光驱等硬件情况的检测 。POST是BIOS的一个重要功能。
如果某个设备测试没有通过,检测程序会中止,并根据已定的报警声进行报警,BIOS厂商对报警声也分别作了定义,不同的设置出现故障,其报警声也是不同的,我们可以根据报警声的不同,分辨出故障所在。
这个操作我们称之为POST加电自检。
三、BIOS系统启动自举程序
BIOS是 Base Input/Output System 的缩写,意思是“基本输入输出系统”,这是固化在主板上只读的ROM中的一组基本输入输出驱动程序,除驱动程序外,BIOS的主要内容还有上述的开机通电自检程序,系统启动自举程序、系统参数设置程序。由于这些程序是存放在ROM中,所以它的完整名称又叫ROM BIOS。
BIOS系统启动自举程序。在完成POST自检后,BIOS将按照系统CMOS设置中的启动顺序搜寻软/硬盘及CD-ROM、网络服务器等有效的启动驱动器,读取磁盘的引导记录到内存中,然后将系统控制权交给引导记录,有引导记录完成系统的启动。
CMOS,互补金属氧化物半导体,原意是一种大规模集成电路芯片制造的原料,但在这里它是表示PC主板上的一块可读写的RAM芯片,该RAM芯片中存放着各种系统设置参数,并且可对这些参数随时进行更新。因此,此处CMOS的全称应为CMOS RAM,其特点是功耗低,关机后由电池供电,因而在它上面存放的系统信息不会消失。
对CMOS RAM的各项参数的设置要通过专门的程序来完成,这个专门程序就是我们在前面提到过的,存放在BIOS中的系统参数设置程序。BIOS中的程序在停电后不会消失,所以每次开机时通过特定的按键,就可进入这种CMOS设置程序。由于CMOS设置程序是存放在BIOS中的,所以CMOS设置又称之为BIOS设置,这两种说法都是一回事,但是BISO和CMOS确实是两种不同性质,不同任务的芯片。
四、引导阶段
引导阶段也就是计算机加电自检之后到装载操作系统的过程,这个过程有三个阶段,stage 1 - -> stage 1.5 - -> stage 2
1、stage 1 阶段
BIOS会按照定义在CMOS中的顺序去搜索活跃的可引导的存储设备,并读取存储设备中的主引导记录MBR(Master Boot Record)加载到内存中,并将控制权限转交给MBR。然后系统可以根据启动区安装的引导加载程序Boot Loader开始执行核心识别的工作。同时将控制权限转交给stage 1.5 阶段。
MBR(Master Boot Record)主引导记录,又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区。其开头的446字节内容特指为“主引导记录”(BootLoader),其后是4个16字节的“磁盘分区表”(DPT),以及2字节的结束标志(55AA)。因此,在使用“