BIOS/UEFI 系统详解
同一只安装 U 盘,启动菜单里可能同时出现 UEFI: USB 和一个没有 UEFI 前缀的入口。它们指向相同介质,却会让安装程序按不同的固件路径工作。先认清这条路径,才能判断是否需要 EFI 系统分区,以及为什么一个系统能启动、另一个却没有出现在菜单里。
- 适合你:准备安装 Linux、规划双系统,或想理解固件与引导器边界的读者。
- 读完能做到:判断当前这次 Linux 是按 UEFI 还是 Legacy BIOS 启动;解释分区表、ESP、NVRAM 启动项与 Secure Boot 的关系。
- 前置知识:会打开终端并阅读命令输出。本篇探测命令只读,不要求修改固件或磁盘。
- 适用范围:截至 2026-07,重点讨论常见 x86-64 PC;ARM 服务器、Apple Silicon、Coreboot 等平台的启动模型可能不同。
- 预计用时:阅读约 15 分钟;在虚拟机完成观察练习约 20 分钟。
- 完成证据:保存一份包含启动模式、分区表类型、ESP 和 Secure Boot 状态的观察记录。
1. 固件处在启动链的第一棒
引导固件(firmware)是主板上的软件。开机后,它先初始化平台所需硬件,再依据自己的启动策略选择下一段可执行代码,最后把控制权交给引导器或操作系统加载器。
可以把它想成剧院开场前的舞台经理:它准备舞台并决定先请哪位演员上场。这个比喻的边界是,固件并不负责启动 Linux 的全部用户空间;内核、initramfs 和 init 系统属于后面的接力棒。
Legacy BIOS 路径
传统 PC BIOS 通常从选定磁盘的第一个扇区读取启动代码。经典 MBR(Master Boot Record)布局把少量引导代码与分区表放在同一个 512 字节扇区中;GRUB 等引导器还需要在后续位置保存更多代码。
BIOS 启动不等于只能使用 MBR 分区表。例如 GRUB 可以在 BIOS + GPT 的磁盘上工作,但通常需要一个很小、无文件系统的 BIOS Boot Partition 来容纳嵌入代码。反过来,分区表只是磁盘布局,不会单独决定机器以哪种固件模式启动。
UEFI 路径
UEFI(Unified Extensible Firmware Interface)定义了固件服务、可执行镜像格式和启动管理器。常见 PC 会在 FAT 格式的 EFI System Partition(ESP) 中保存 .efi 加载器,例如 \EFI\ubuntu\shimx64.efi 或 \EFI\systemd\systemd-bootx64.efi。
UEFI 启动管理器通常依据非易失变量中的 BootOrder 和 Boot#### 项找到“设备 + 文件路径”。启动项丢失时,固件还可能使用标准回退路径;x86-64 可移动介质常见的是 \EFI\BOOT\BOOTX64.EFI。因此,“ESP 里有文件”“NVRAM 里有启动项”和“固件最终选中了它”是三个不同事实。
ESP 是带有特定 GPT 类型标识、由 UEFI 固件可读取的系统分区,PC 上通常使用 FAT32。Linux 可能把它挂载到 /boot/efi、/efi 或 /boot,挂载路径取决于发行版与引导方案。已有 Windows 的机器通常已经有 ESP;双系统安装时应先识别并复用它,不要为了安装 Linux 而格式化现有 ESP。
2. 固件模式与分区表不是一组强绑定
| 当前启动路径 | 常见磁盘布局 | 关键引导位置 | 实际边界 |
|---|---|---|---|
| Legacy BIOS | MBR;也可使用 GPT | MBR/后续嵌入区域;BIOS + GPT 常需 BIOS Boot Partition | 受固件、引导器和工具支持共同约束 |
| UEFI | 现代安装通常选择 GPT | ESP 中的 EFI 镜像,加上 NVRAM 启动项或回退路径 | UEFI 规范并未把 GPT 变成所有介质的唯一布局;安装器支持情况仍需确认 |
MBR 使用 32 位扇区地址时,在 512 字节逻辑扇区上约受 2 TiB 寻址上限影响,并只有 4 个主分区表项;传统 PC 通过“扩展分区 → 逻辑分区”绕开数量限制。GPT 则有保护性 MBR、主 GPT Header、分区项数组,以及磁盘末尾的备份 Header/数组,并用 CRC 检查关键结构。
对现代 x86-64 PC 的默认建议是 UEFI + GPT + ESP,因为固件、安装器和大容量磁盘围绕这套组合测试得最充分;它是稳妥建议,不是描述所有可启动组合的物理定律。
3. 先观察当前环境
3.1 判断“这一次”是怎样启动的
if [ -d /sys/firmware/efi ]; then
echo "本次 Linux 通过 UEFI 启动"
else
echo "本次 Linux 未通过 UEFI 启动,常见情况是 Legacy BIOS/CSM"
fi/sys/firmware/efi 存在,说明当前内核从 UEFI 环境获得了 EFI 系统表。它只证明本次启动路径;目录不存在不能证明主板不支持 UEFI,也可能是安装 U 盘从 Legacy 入口启动了。
在 UEFI 启动的系统中,还可以观察固件位数和启动项:
cat /sys/firmware/efi/fw_platform_size 2>/dev/null
sudo efibootmgr -v常见输出中的 64 表示 64 位 UEFI 固件。efibootmgr 若未安装,或当前不是 UEFI 启动,可能提示 EFI variables 不受支持;这时不要据此改写启动项。
3.2 识别磁盘布局与 ESP
lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,PTTYPE,PARTTYPENAME,PARTUUID,MOUNTPOINTS
findmnt --mountpoint /boot 2>/dev/null
findmnt --mountpoint /boot/efi 2>/dev/null
findmnt --mountpoint /efi 2>/dev/null阅读时逐层确认:
TYPE=disk是整盘,TYPE=part是分区;不要把两者混为同一目标。PTTYPE常见为gpt或dos(后者表示 MBR 风格分区表)。- ESP 常显示为
vfat,分区类型名称类似EFI System;只凭“FAT32”不能断定它就是 ESP。 MOUNTPOINTS为空只表示当前未挂载,不表示分区没有用途。
3.3 观察 Secure Boot 状态
若系统已安装 mokutil:
mokutil --sb-state输出通常会明确显示 Secure Boot enabled/disabled。该命令用于观察,不会改变密钥或固件设置。
4. Secure Boot 与 CSM 的边界
Secure Boot 是 UEFI 的信任校验机制:启动链中的 EFI 组件必须能由固件或后续加载器信任的密钥验证。它不是磁盘加密,也不会代替系统更新、登录认证或数据备份。
截至 2026-07,Ubuntu 等发行版提供已签名的 shim、GRUB、内核与发行版模块,可在支持的 x86-64 硬件上保留 Secure Boot。自定义内核和第三方内核模块可能需要 Machine Owner Key(MOK)或其他签名流程。Arch 官方安装镜像本身仍不直接支持 Secure Boot,但安装后的系统可以自行构建签名链;这不等于“安装 Arch 必须永久关闭 Secure Boot”。完整配置属于后续的 安全启动与 TPM 专题。
CSM(Compatibility Support Module)让部分 UEFI 固件提供传统 BIOS 兼容路径。关闭 CSM 常有助于让现代安装统一走 UEFI,但旧显卡 Option ROM、旧系统或特殊扩展卡可能依赖它。不要照抄“必须关闭”的结论;先核对主板手册、现有系统启动模式和恢复介质。
同一台机器上的系统可以技术性地混用 UEFI 与 Legacy BIOS,但固件菜单、引导器互相发现和修复会明显复杂。若现有 Windows 通过 UEFI 启动,通常应让 Linux 安装介质也从 UEFI 入口启动,并复用已有 ESP。任何分区操作前都要另做数据备份。
5. 常见症状如何定位
| 症状 | 可能原因 | 只读诊断 | 下一步决策 |
|---|---|---|---|
| 安装器不提供 ESP/UEFI 选项 | 安装介质从 Legacy/CSM 入口启动 | 检查 /sys/firmware/efi,回看固件一次性启动菜单 | 退出安装器,从标有 UEFI 的介质入口重新启动;不要先改分区 |
efibootmgr 报 EFI variables 不受支持 | 当前不是 UEFI 启动,或 efivarfs 不可用 | test -d /sys/firmware/efi; findmnt --mountpoint /sys/firmware/efi/efivars | 先确认启动路径;不要尝试写 NVRAM |
| ESP 存在但固件菜单没有 Linux | NVRAM 项缺失、路径失效,或固件策略忽略它 | sudo efibootmgr -v;只读查看 ESP 的 EFI 目录 | 保留现场,转到 引导流程与 GRUB 或救援教程处理 |
| 启用 Secure Boot 后内核/模块拒绝加载 | 组件未签名、签名不受信任或被撤销 | mokutil --sb-state、`journalctl -k -b | grep -Ei ‘secure | lockdown |
| 固件中找不到 CSM | 厂商隐藏选项、纯 UEFI 平台,或选项受其他设置影响 | 查主板/整机官方手册与固件版本 | 若系统已按 UEFI 工作,无需为了寻找 CSM 而改动其他设置 |
6. 可观察练习
7. 你现在应该能解释什么
你已经能把“固件模式”“分区表”“ESP”“NVRAM 启动项”和“Secure Boot”拆成不同层次,也能用只读证据判断当前这次 Linux 的启动路径。接下来阅读 引导流程与 GRUB,把固件交棒之后的内核、initramfs 与用户空间串起来。
官方参考
- UEFI Specification 2.11:Boot Manager
- UEFI Specification 2.11:GPT Disk Layout
- Ubuntu Security:UEFI Secure Boot
- ArchWiki:Secure Boot(Arch 官方社区文档)