启动过程:引导加载程序
100%

启动系统 · 第 3 课

启动过程:引导加载程序

了解引导加载程序如何选择 Linux 启动内容、构造内核命令行并移交控制权。

引导加载程序连接固件发现与内核执行。GRUB 常用于 Linux PC,但 systemd-boot、U-Boot、固件直接加载 EFI stub 内核等设计会实现这一角色的不同部分。

选择启动内容

加载程序条目可以标识:

  • Linux 内核映像
  • 可选的 initramfs 或传统 initrd 映像
  • 内核命令行
  • 平台特有元数据或另一个操作系统的加载程序

GRUB 可以显示多个内核和恢复条目。只有匹配的模块与 initramfs 仍然可用且经过测试时,后备内核才真正有用。加载程序通过自身支持的存储和文件系统模块读取文件,并不依赖尚未运行的 Linux VFS。

Linux 引导加载程序通常把控制权交给什么?

内核命令行参数

加载程序传递一段文本命令行,由内核和早期用户空间解析。常见示例包括:

  • root=...:标识预期根文件系统或早期用户空间的来源说明
  • ro 或 rw:请求初始根目录挂载模式
  • quiet:减少内核控制台消息
  • init=...:为专门恢复请求另一个第一个用户空间程序
  • 由 initramfs 工具解释的发行版特有 rd.* 参数

initrd 通常是指定映像的加载程序指令,而不是通用内核参数。BOOT_IMAGE= 可能出现在某些 GRUB 配置生成的命令行中,但它并不是加载内核的机制。

使用以下命令检查当前启动所用命令行:

$ cat /proc/cmdline

root= 内核命令行参数有什么用途?

quiet 参数通常请求什么?

临时编辑与恢复

GRUB 通常允许获授权的控制台用户编辑一个只用于本次启动的条目,常通过菜单显示的编辑按键进入。这可用于移除 quiet、选择恢复参数或纠正错误的根目录标识符。具体界面和授权方式有所不同,尤其是在启用安全启动或 GRUB 密码保护时。

命令行参数可能通过 /proc/cmdline、启动日志和崩溃报告暴露敏感文本,也可能削弱安全性或使系统无法启动。绝不能把密钥放在其中,并应保留已知可用条目和控制台恢复路径。

在 GRUB 菜单中交互编辑条目以启动一次,通常具有什么特性?

持久 GRUB 配置

发行版通常会根据模板、默认值、脚本和发现的内核生成最终 GRUB 配置。除非发行版明确规定此流程,否则不要直接编辑生成的 grub.cfg;重新生成可能覆盖它。

应对配置源进行一项限定范围的更改,运行发行版文档规定的重新生成命令,检查输出并测试,同时保留较旧的已知可用条目和可启动恢复介质。Debian、Fedora、UEFI 和 BIOS 安装所用命令和输出路径会有所不同。

为什么直接编辑生成的 grub.cfg 通常不可靠?

课程已完成

你已完成 启动过程:引导加载程序

现在,你可以区分加载程序指令与内核命令行参数。

  • 识别内核、initramfs、命令行和备选条目。

  • 根据实际用途使用 root=、ro 和 quiet。

  • 通过 /proc/cmdline 检查当前启动参数。

  • 把交互编辑视为临时且涉及安全的操作。

  • 通过发行版工作流程更改持久的生成配置。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 启动系统