启动是一连串信任与控制权转移,把平台复位转变为运行中的用户空间环境。常见 PC 路径可以概括为固件、启动管理器或加载程序、带有可选早期用户空间的内核,以及作为 PID 1 的 init 系统。不同架构、虚拟机、嵌入式系统和容器可能采用不同路径。
启动系统 · 第 1 课
启动过程概述
了解从平台固件到内核,再到第一个用户空间进程的主要控制权交接。
固件初始化
平台固件会初始化足够的 CPU、内存和设备状态,以选择启动目标。传统 PC 使用 BIOS 约定,当前 PC 通常使用 UEFI。固件设置、启动顺序、平台验证和安全启动策略会决定哪个下一阶段可执行文件获准运行。
固件不一定理解已安装的 Linux 根文件系统。它会根据自身接口定位启动路径,例如选定磁盘上的 BIOS 启动代码,或指向 EFI 系统分区中 EFI 可执行文件的 UEFI 启动条目。
典型 PC 复位后,哪个组件首先开始平台初始化?
引导加载程序或启动管理器
GRUB 等加载程序可以显示启动条目、把选定 Linux 内核和初始 RAM 文件系统载入内存、构造内核命令行并移交控制权。UEFI 也可以直接加载构建为 EFI 可执行文件的内核,因此独立的多阶段加载程序很常见,但并非普遍必需。
所选内容必须相互匹配:内核版本、initramfs 内容、根目录标识符、安全签名和命令行选项都会影响下一次交接能否成功。
Linux 引导加载程序通常承担什么职责?
内核与早期用户空间
内核会按需解压或重定位、初始化核心子系统、解析命令行并发现可用硬件。Initramfs 可以提供存储发现、RAID、加密、LVM、网络或其他组装真实根文件系统所需的模块与早期工具。
预期根目录可用后,早期用户空间会切换到它,内核再执行配置的第一个用户空间程序。由谁执行文件系统检查或重新以读写方式挂载等细节,取决于发行版的启动设计,并不存在一套通用顺序。
系统为什么可能使用 initramfs?
PID 1 与系统就绪
第一个用户空间进程获得 PID 1。许多发行版使用 systemd,其他系统则使用 sysvinit、OpenRC、runit、BusyBox init 或专用程序。PID 1 建立用户空间服务环境、回收孤儿子进程并负责关闭系统。
到达 PID 1 并不表示系统已经完全就绪。服务可能仍在启动,存储可能仍在挂载,网络配置可能尚未完成,而图形或控制台登录也只是可能的目标状态之一。
什么操作开始主要的用户空间初始化阶段?
自定义 GRUB2 引导菜单实验演示了一种加载程序配置路径。只能在具备恢复能力的实验系统中应用更改。
课程已完成
你已完成 启动过程概述
现在,你可以追踪 Linux 启动的主要控制权交接,而不会把它们误认为通用实现细节。
从固件初始化和目标选择开始。
理解加载程序与内核、initramfs 和命令行选择之间的关系。
通过早期用户空间理解复杂根存储的组装。
把 PID 1 视为服务初始化的开始,而不是系统已经就绪的证明。