操作系统的启动分为两个阶段:引导boot和启动过startup,引导阶段开始于打开电源开关,结束于内核初始化完成和systemd进程成功运行,启动阶段接管了剩余工作,直到操作系统进入可操作状态。
总体可将LINUX开机启动过程分为四个步骤:
1. BIOS上电自检(POST)
2. 引导装载程序(GRUB2)
3. 内核初始化
4. 启动systemd,其为所有进程之父
注意,本文以 GRUB2 和 systemd 为载体讲述操作系统的开机引导和启动过程,是因为这二者是目前主流的 linux 发行版本所使用的引导装载程序和初始化软件。当然另外一些过去使用的相关软件仍然在一些 Linux 发行版本中使用。
一、引导过程
引导过程能以两种方式初始化,其一当系统处于关机状态时,打开电源即可开启系统引导过程;其二当操作系统已经在运行在本地用户,则用户可借助图形界面或命令行界面通过编程方式发起一个重启操作,从而触发系统引导过程。重启包括了一个关机和重新开始过程。
1. BIOS上电自检
上电自检主要是由硬件部分完成,当电脑电源接通时,即开始执行BIOS的POST(power on self test)过程,初始化硬件组件,用于检验电脑硬件基本功能是否正常。如果POST失败,那么电脑便不能使用,引导中断。
BIOS 上电自检确认硬件的基本功能正常,然后产生一个 BIOS 中断 INT 13H,该中断指向某个接入的可引导设备的引导扇区。它所找到的包含有效的引导记录的第一个引导扇区将被装载到