第一阶段:BIOS
上个世纪70年代初,rom被发明出来,开机程序被刷入ROM芯片,计算机通电后,第一件事就是读取它。这块芯片里的程序叫做”基本輸出輸入系統” (Basic Input/Output System),简称为BIOS。
1.1硬件自检
BIOS程序首先检查,计算机硬件能否满足运行的基本条件,这叫做”硬
件自检”(Power-On Self-Test),缩写为POST。
如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题, 屏幕就会显示出CPU、内存、硬盘等信息
1.2启动顺序
硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。
这时,BIOS需要知道,”下一阶段的启动程序”具体存放在哪一个设备。也 就是说,BIOS需要有一个外部储存设备的排序,排在前面的设备就是优先 转交控制权的设备。这种排序叫做”启动顺序BootSequence”
第二阶段:主引导记录
2.1什么是主引导
BIOS按照”启动顺序”,把控制权转交给排在第一位的储 存设备。 这时,计算机读取该设备的第一个扇区,也就是读取最 前面的512个字节。如果这512个字节的最后两个字节是 0x55和0xAA,表明这个设备可以用于启动;如果不是, 表明设备不能用于启动,控制权于是被转交给”启动顺序 “中的下一个设备。 这最前面的512个字节,就叫做”主引导记录”(Master boot record,缩写为MBR)。
2.2 主引导记录的结构
“主引导记录”只有512个字节,放不了太多东西。它的主要作用是,告诉计
算机到硬盘的哪一个位置去找操作系统。
主引导记录由三个部分组成:
(1) 第1-446字节:调用操作系统的机器码。
(2) 第447-510字节:分区表(Partition table)。
(3) 第511-512字节:主引导记录签名(0x55和0xAA)。
其中,第二部分”分区表”的作用,是将硬盘分成若干个区。
第三阶段:硬盘启动
第四阶段:操作系统
控制权转交给操作系统后,操作系统的内核首先被载入内存。
以Linux系统为例,先载入/boot目录下面的kernel。内核加载成功后,第 一个运行的程序是/sbin/init。它根据配置文件/etc/inittab产生init进程。这 是Linux启动后的第一个进程,pid进程编号为1,其他进程都是它的后代。 然后,init线程加载系统的各个模块,比如窗口程序和网络程序,直至执行 /bin/login程序,跳出登录界面,等待用户输入用户名和密码。 至此,全部启动过程完成。