尽管通常情况下Ubuntu的启动并不需要用户过多地参与,但是Ubuntu系统的启动本身是一个非常复杂的过程。在这个过程中,有硬件的检测、系统内核的准备以及各种系统服务的启动等。作为系统管理员,需要深入了解其中所经历的阶段,才能在系统无法启动时准备判断问题所在。
按照Linux系统从打开电源到进入系统的顺序,整个启动过程可分为以下阶段。
- BIOS阶段
- 引导程序阶段
- 内核阶段
- 进入系统
本节将重点介绍BIOS阶段,其他阶段后续分别在其他博文介绍。
7.1.1 BIOS阶段
BIOS又称为基本输入输出系统,是计算机中非常重要的一个软件系统。BIOS有着悠久的历史,诞生于1975年。在PC引导的过程中,BIOS担负着初始化硬件、检测硬件功能以及引导操作系统的责任。
即使计算机断电之后,BIOS也不会丢失。早期的BIOS存储在主板上的只读存储器中,用户不可以修改其内容。随着BIOS功能越来越多以及硬件更新的速度越来越快,BIOS也需要不断地更新以及支持新的硬件。所以,BIOS的存储设备改为EEPROM或者闪存,这样方便用户更新BIOS。
BIOS是用户打开计算机后运行的第一个程序。当用户按下计算机的电源按钮,接通电源,存储在闪存等介质上的BIOS就开始执行。首先完成芯片组和内存的初始化,然后把自身加载到计算机的主存中,继续完成下面三个任务:
(1)加电自检。加电自检是指计算机刚接通电源时对硬件部分的检测,主要目的是检查计算机的硬件是否良好。检查的硬件主要包括CPU、内存、主板、CMOS存储器、串并口、显卡、磁盘以及键盘等,一旦发现问题,系统将给出相应的提示信息或者声音报警。对于严重故障,则停止启动;对于非严重故障,则给出提示等待用户处理。
(2)初始化。初始化包括创建中断向量、设置寄存器、对一些外部设备进行初始化和检测等,其中很重要的一部分是读取CMOS中保存的配置信息,并和实际硬件设置进行比较,如果不符合,就会影响系统的启动。
(3)加载引导程序。当BIOS检查到硬件正常并且与CMOS中的设置相符后,按照CMOS中对启动设备的设置顺序检测可用的启动设备,例如硬盘或者U盘等。BIOS将相应启动设备的第一个扇区,也就是主引导记录扇区读入内存,根据主引导记录中的引导代码启动引导程序。
本文节选自《Ubuntu Linux系统管理与运维实战》,获出版社和作者授权发布。
《Ubuntu Linux系统管理与运维实战(Linux技术丛书)》(张春晓,肖志健)【摘要 书评 试读】- 京东图书 (jd.com)