Linux启动过程的五个阶段(新手必看)
Linux 中的启动序列,涉及硬件和操作系统的初始化步骤,包括加载内核和启动服务(或守护)程序,目的是使 Linux 进入可以使用的状态。
在下图中,你可以看到启动过程从头到尾包括以下 5 个步骤:

图 1 Linux启动过程
1) 在现代环境中,统一可扩展固件接口(Unified Extensible Firmware Interface,UEFI)规范定义了启动配置(存储在 NVRAM 中)和启动加载器。在旧系统中,在这一步,开机自检(POST)完成后,基本 I/O 系统(BIOS)将初始化硬件(管理 I/O 端口和中断)并将控制权移交给引导程序。
2) 引导程序有一个目标,引导内核。细节可能根据启动介质的不同而略有不同。有一系列引导加载程序选项,包括当前的(例如,GRUB 2、systemd-boot、SYSLINUX、rEFInd)和旧的(例如,LILO、GRUB 1)。
3) 内核通常以压缩形式位于 /boot 目录下。这意味着第一步是提取并将内核加载到主内存中。在对其子系统、文件系统和驱动程序进行初始化后,内核将控制权移交给 init 系统,启动过程也随之结束。
4) init 系统负责在系统范围内启动守护进程(服务进程)。这个 init 进程是进程层次结构的根,它的进程 ID(PID)为 1。换句话说,PID 为 1 的进程一直运行到你关闭该系统。除了负责启动其他守护进程外,PID 1 进程传统上还负责处理孤立进程(不再有父进程的进程)。
5) 通常,在此之后会发生一些其他用户空间级别的初始化,具体取决于环境:
在下图中,你可以看到启动过程从头到尾包括以下 5 个步骤:

图 1 Linux启动过程
1) 在现代环境中,统一可扩展固件接口(Unified Extensible Firmware Interface,UEFI)规范定义了启动配置(存储在 NVRAM 中)和启动加载器。在旧系统中,在这一步,开机自检(POST)完成后,基本 I/O 系统(BIOS)将初始化硬件(管理 I/O 端口和中断)并将控制权移交给引导程序。
2) 引导程序有一个目标,引导内核。细节可能根据启动介质的不同而略有不同。有一系列引导加载程序选项,包括当前的(例如,GRUB 2、systemd-boot、SYSLINUX、rEFInd)和旧的(例如,LILO、GRUB 1)。
3) 内核通常以压缩形式位于 /boot 目录下。这意味着第一步是提取并将内核加载到主内存中。在对其子系统、文件系统和驱动程序进行初始化后,内核将控制权移交给 init 系统,启动过程也随之结束。
4) init 系统负责在系统范围内启动守护进程(服务进程)。这个 init 进程是进程层次结构的根,它的进程 ID(PID)为 1。换句话说,PID 为 1 的进程一直运行到你关闭该系统。除了负责启动其他守护进程外,PID 1 进程传统上还负责处理孤立进程(不再有父进程的进程)。
5) 通常,在此之后会发生一些其他用户空间级别的初始化,具体取决于环境:
- 通常会有一个终端、环境和 shell 的初始化过程;
- 在考虑用户偏好和配置的情况下,启动显示管理器、图形服务器以及类似的带有图形用户界面的桌面环境。