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 启动管理器通常依据非易失变量中的 BootOrderBoot#### 项找到“设备 + 文件路径”。启动项丢失时,固件还可能使用标准回退路径;x86-64 可移动介质常见的是 \EFI\BOOT\BOOTX64.EFI。因此,“ESP 里有文件”“NVRAM 里有启动项”和“固件最终选中了它”是三个不同事实。

📝 ESP 不是普通的 /boot

ESP 是带有特定 GPT 类型标识、由 UEFI 固件可读取的系统分区,PC 上通常使用 FAT32。Linux 可能把它挂载到 /boot/efi/efi/boot,挂载路径取决于发行版与引导方案。已有 Windows 的机器通常已经有 ESP;双系统安装时应先识别并复用它,不要为了安装 Linux 而格式化现有 ESP

2. 固件模式与分区表不是一组强绑定

Legacy BIOS 与 UEFI 的启动路径对比

当前启动路径常见磁盘布局关键引导位置实际边界
Legacy BIOSMBR;也可使用 GPTMBR/后续嵌入区域;BIOS + GPT 常需 BIOS Boot Partition受固件、引导器和工具支持共同约束
UEFI现代安装通常选择 GPTESP 中的 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

阅读时逐层确认:

  1. TYPE=disk 是整盘,TYPE=part 是分区;不要把两者混为同一目标。
  2. PTTYPE 常见为 gptdos(后者表示 MBR 风格分区表)。
  3. ESP 常显示为 vfat,分区类型名称类似 EFI System;只凭“FAT32”不能断定它就是 ESP。
  4. 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 存在但固件菜单没有 LinuxNVRAM 项缺失、路径失效,或固件策略忽略它sudo efibootmgr -v;只读查看 ESP 的 EFI 目录保留现场,转到 引导流程与 GRUB 或救援教程处理
启用 Secure Boot 后内核/模块拒绝加载组件未签名、签名不受信任或被撤销mokutil --sb-state、`journalctl -k -b | grep -Ei ‘securelockdown
固件中找不到 CSM厂商隐藏选项、纯 UEFI 平台,或选项受其他设置影响查主板/整机官方手册与固件版本若系统已按 UEFI 工作,无需为了寻找 CSM 而改动其他设置

6. 可观察练习

练习一 生成本机启动画像 运行本篇的模式、lsblk、findmnt 与 Secure Boot 探测命令,把输出保存到文本文件。标出“本次启动模式”“分区表类型”“ESP 挂载点”和“Secure Boot 状态”;命令缺失时记录“未安装”,不要为了练习修改系统。
练习二 在虚拟机对比两条路径 创建一台没有重要数据的虚拟机,先记录其固件类型与空白虚拟盘,再分别选择 BIOS 与 UEFI 固件启动同一 Linux Live 镜像。每次只运行只读探测,截图比较 /sys/firmware/efi 与安装器分区提示;不要在宿主机真实磁盘实验。
练习三 只观察固件菜单 仅在有本地控制台且知道如何退出的机器上进入一次性启动菜单,记录安装介质是否出现两个入口。不要保存设置,不要调整 Secure Boot、CSM、存储模式或启动顺序;远程服务器跳过此练习。

7. 你现在应该能解释什么

你已经能把“固件模式”“分区表”“ESP”“NVRAM 启动项”和“Secure Boot”拆成不同层次,也能用只读证据判断当前这次 Linux 的启动路径。接下来阅读 引导流程与 GRUB,把固件交棒之后的内核、initramfs 与用户空间串起来。

官方参考

修订记录

2026-02-24 初版发布 介绍 Legacy BIOS、UEFI 与安装时的基础判断。
2026-07-21 实质修订 修正固件模式与分区表的绝对绑定,补充 ESP、NVRAM、回退路径、Secure Boot 边界、只读探测、排障与可观察练习。
Navigation