双系统引导原理说明
| 项目 | 内容 |
|---|---|
| 适用机器 | Lenovo ThinkPad E14 Gen 6(21M7A001CD) |
| 适用系统 | Omarchy(Arch Linux,Limine 引导)+ Windows 11 家庭中文版 |
| 固件模式 | UEFI,安全启动关闭,TPM 2.0 开启 |
| 文档日期 | 2026-09-30 |
| 关联文档 | 双系统安装指南(安装操作步骤) |
结论:双系统中,每个操作系统都有自己的引导程序,它们同时存在于同一个 EFI 系统分区中,互不替换。
- Omarchy 的引导程序是 Limine。
- Windows 的引导程序是 Windows Boot Manager。
- 主板的 UEFI 固件根据启动项清单,决定开机时先运行哪一个。
- 本机的方案是让 Limine 作为“总入口”:开机显示菜单,选 Omarchy 就由 Limine 直接启动 Linux,选 Windows 就由 Limine 把控制权转交给 Windows Boot Manager。
2. 术语表
Section titled “2. 术语表”| 术语 | 英文 | 说明 |
|---|---|---|
| UEFI 固件 | UEFI Firmware | 主板芯片里的程序,开机后第一个运行。取代了老式 BIOS |
| 引导程序 | Bootloader | 负责把操作系统加载进内存并启动的程序。每个系统各带一个 |
| EFI 系统分区 | ESP(EFI System Partition) | FAT32 格式的小分区,存放所有系统的引导程序。本机为 nvme0n1p1,2GB,挂载在 /boot |
.efi 文件 |
EFI Executable | UEFI 固件能直接运行的程序格式。引导程序都是 .efi 文件 |
| UEFI 启动项 | Boot Entry | 保存在主板 NVRAM 中的记录,内容是“去哪个分区运行哪个 .efi 文件” |
| 启动顺序 | BootOrder | 固件依次尝试启动项的顺序 |
| NVRAM | Non-Volatile RAM | 主板上断电不丢失的存储,保存启动项和 BIOS 设置 |
| 链式引导 | Chainload | 一个引导程序不自己启动系统,而是把控制权转交给另一个引导程序 |
| UKI | Unified Kernel Image | 统一内核镜像,把 Linux 内核、initramfs、内核参数打包成一个 .efi 文件 |
| initramfs | Initial RAM Filesystem | 内核启动初期使用的临时小系统,负责解锁加密分区、挂载真正的根文件系统 |
| LUKS | Linux Unified Key Setup | Linux 的磁盘加密标准。本机 nvme0n1p2 使用 LUKS2 |
| BCD | Boot Configuration Data | Windows 的启动配置数据库,Windows Boot Manager 读取它来决定启动什么 |
| GPT / PARTUUID | GUID Partition Table | 分区表格式;每个分区有唯一 ID(PARTUUID),启动项用它来定位分区 |
3. 开机的三层模型
Section titled “3. 开机的三层模型”┌─────────────────────────────────────────────────────────┐│ 第 1 层:UEFI 固件(主板) ││ 读取 NVRAM 中的 BootOrder,按顺序尝试启动项 ││ 找到 EFI 分区里对应的 .efi 文件并运行 │└──────────────────────────┬──────────────────────────────┘ ↓┌─────────────────────────────────────────────────────────┐│ 第 2 层:引导程序(每个系统各一个) ││ Limine / Windows Boot Manager ││ 显示菜单或读取配置,加载对应的操作系统 │└──────────────────────────┬──────────────────────────────┘ ↓┌─────────────────────────────────────────────────────────┐│ 第 3 层:操作系统内核 ││ Linux 内核 / Windows 内核(ntoskrnl.exe) │└─────────────────────────────────────────────────────────┘关键点: UEFI 固件既不认识 Linux,也不认识 Windows。它只会做一件事:运行 EFI 分区里指定的 .efi 文件。怎样启动一个具体的操作系统,是引导程序的工作。
4. EFI 系统分区
Section titled “4. EFI 系统分区”4.1 本机基本信息
Section titled “4.1 本机基本信息”| 项目 | 值 |
|---|---|
| 设备 | /dev/nvme0n1p1 |
| 大小 | 2GB(已用约 218MB) |
| 文件系统 | FAT32(vfat) |
| PARTUUID | c97a6eef-1b97-4fb1-ad79-f8ca97c8243e |
| 挂载点 | /boot |
4.2 目录结构
Section titled “4.2 目录结构”当前(仅 Omarchy):
/boot(nvme0n1p1)├── EFI/│ └── limine/│ └── limine_x64.efi ← Limine 引导程序├── limine.conf ← Limine 菜单配置(由 limine-update 自动生成)└── ... ← Omarchy 的 UKI 内核镜像、回退镜像、快照等安装 Windows 后:
/boot(nvme0n1p1)├── EFI/│ ├── limine/│ │ └── limine_x64.efi ← Omarchy 的引导程序(保持不变)│ └── Microsoft/│ └── Boot/│ ├── bootmgfw.efi ← Windows Boot Manager(Windows 安装时新增)│ └── BCD ← Windows 启动配置数据库├── limine.conf└── ...两个系统各占一个文件夹,互不覆盖。这就是不需要为 Windows 新建 EFI 分区的原因。2GB 空间远超两个系统的需要(Windows 引导文件通常只占几十 MB)。
5. 两个引导程序对比
Section titled “5. 两个引导程序对比”| 对比项 | Limine | Windows Boot Manager |
|---|---|---|
| 所属系统 | Omarchy | Windows |
| 文件路径 | \EFI\limine\limine_x64.efi |
\EFI\Microsoft\Boot\bootmgfw.efi |
| 配置文件 | /boot/limine.conf |
\EFI\Microsoft\Boot\BCD |
| 配置管理方式 | limine-update 自动生成 |
Windows 内部管理(bcdedit) |
| 能启动 Linux | 能 | 不能 |
| 能启动 Windows | 能(链式引导) | 能 |
| 本机中的角色 | 总入口(排在启动顺序第一位) | 被 Limine 链式调用;也可以通过 F12 直接启动 |
为什么选 Limine 作为总入口: Windows Boot Manager 只认识 Windows,不会在菜单里列出 Linux。Limine 两个都能启动,所以由它来显示统一的选择菜单。
6. Omarchy 的引导链
Section titled “6. Omarchy 的引导链”6.1 启动流程
Section titled “6.1 启动流程”UEFI 固件 ↓ 运行 \EFI\limine\limine_x64.efiLimine ↓ 读取 /boot/limine.conf,显示菜单,用户选择 OmarchyUKI 统一内核镜像(内核 + initramfs + 内核参数) ↓initramfs ↓ 根据内核参数 cryptdevice=PARTUUID=7db017d2-... 找到 nvme0n1p2 ↓ 提示输入磁盘密码,解锁 LUKS2 → 得到 /dev/mapper/root ↓ 根据 rootflags=subvol=@ 挂载 btrfs 的 @ 子卷为根目录systemd ↓ 启动系统服务Hyprland 桌面6.2 本机内核参数
Section titled “6.2 本机内核参数”来自 /etc/kernel/cmdline:
cryptdevice=PARTUUID=7db017d2-3198-4013-8736-26e3eefbe635:rootroot=/dev/mapper/rootrootflags=subvol=@rootfstype=btrfszswap.enabled=0rw| 参数 | 含义 |
|---|---|
cryptdevice=PARTUUID=7db017d2-...:root |
要解锁的加密分区(即 nvme0n1p2),解锁后命名为 root |
root=/dev/mapper/root |
根文件系统所在设备(解锁后的映射设备) |
rootflags=subvol=@ |
挂载 btrfs 的 @ 子卷作为 / |
rootfstype=btrfs |
根文件系统类型 |
缩小分区时 PARTUUID 不会改变,所以这些参数无需修改。
6.3 Limine 菜单中的条目
Section titled “6.3 Limine 菜单中的条目”| 条目 | 说明 |
|---|---|
| Omarchy | 正常启动 |
| fallback | 回退镜像,正常镜像出问题时使用 |
| Snapshots | snapper 创建的系统快照,可启动到之前的系统状态(最多保留 6 个条目) |
| Windows | 安装 Windows 并运行 limine-update 后出现 |
6.4 相关配置文件
Section titled “6.4 相关配置文件”| 文件 | 作用 | 是否手动编辑 |
|---|---|---|
/etc/default/limine |
ESP 路径、内核参数、条目排序 | 可以 |
/etc/limine-entry-tool.conf |
limine-entry-tool 的主配置 | 可以 |
/etc/limine-entry-tool.d/omarchy-defaults.conf |
Omarchy 默认值:FIND_BOOTLOADERS=yes、启动排序、快照数量 |
不建议(Omarchy 更新可能覆盖) |
/etc/limine-entry-tool.d/omarchy-uki.conf |
启用 UKI:ENABLE_UKI=yes |
不建议 |
/etc/limine-snapper-sync.conf |
快照同步到启动菜单的配置 | 可以 |
/boot/limine.conf |
最终生效的菜单配置 | 一般不需要,运行 limine-update 会自动生成 |
FIND_BOOTLOADERS=yes 的作用:运行 limine-update 时,自动扫描 EFI 分区里的其他引导程序(如 bootmgfw.efi),并把它们加入 Limine 菜单。
7. Windows 的引导链
Section titled “7. Windows 的引导链”UEFI 固件(或 Limine 链式调用) ↓ 运行 \EFI\Microsoft\Boot\bootmgfw.efiWindows Boot Manager ↓ 读取同目录下的 BCD 配置数据库 ↓ 找到 Windows 所在分区(C 盘)winload.efi(位于 C:\Windows\System32\) ↓ 加载 Windows 内核和驱动ntoskrnl.exe(Windows 内核) ↓Windows 桌面BitLocker 的相关性: 如果启用了 BitLocker 设备加密,TPM 会记录启动过程中各环节的“指纹”。从 Limine 链式启动和从固件直接启动,指纹可能不同,从而触发 BitLocker 恢复密钥提示。详见 安装指南第 3.3 节。
8. UEFI 启动项与 efibootmgr
Section titled “8. UEFI 启动项与 efibootmgr”8.1 查看启动项
Section titled “8.1 查看启动项”efibootmgr8.2 输出头部说明
Section titled “8.2 输出头部说明”| 行 | 本机值 | 含义 |
|---|---|---|
BootCurrent |
0002 |
本次开机使用的启动项(Limine) |
Timeout |
0 seconds |
固件不等待,直接按顺序启动。需要手动选择时按 F12 |
BootOrder |
0002,0000,001D,... |
启动顺序,固件依次尝试,找不到就试下一个 |
启动项编号后有 * 表示启用,没有 * 表示禁用(只能手动选择)。
8.3 启动项路径格式
Section titled “8.3 启动项路径格式”Boot0002* Limine HD(1,GPT,c97a6eef-...,0x800,0x400000)/\EFI\limine\limine_x64.efi │ │ │ │ │ │ │ │ │ │ │ └ 要运行的 .efi 文件 │ │ │ │ └ 分区长度(扇区数,0x400000 × 512 字节 = 2GB) │ │ │ └ 分区起始扇区 │ │ └ 分区的 PARTUUID │ └ 分区表类型 └ 第几个分区8.4 本机启动项分类(2026-09-30 记录)
Section titled “8.4 本机启动项分类(2026-09-30 记录)”第一类:操作系统启动项
| 编号 | 名称 | 指向的 PARTUUID | 状态 |
|---|---|---|---|
| Boot0002 | Limine | c97a6eef-...(= nvme0n1p1) |
正在使用,不能删除 |
| Boot0000 | Pop!_OS 22.04 LTS | cea4e271-... |
失效,分区已不存在(以前安装的系统残留) |
| Boot0001 | Windows Boot Manager | c4e926d3-... |
失效,分区已不存在(出厂 Windows 残留) |
Windows 启动项末尾的长串十六进制是 Windows 附带的数据,解码后为
WINDOWS ... BCDOBJECT={9dea862c-...},用于指示读取哪份 BCD 配置,无需处理。
第二类:联想固件内置工具(路径为 FvFile(...),程序在主板芯片中,不在硬盘上)
| 编号 | 名称 | 说明 |
|---|---|---|
| Boot0010 | Setup | BIOS 设置界面(开机按 F1) |
| Boot0011 | Boot Menu | 启动菜单(开机按 F12) |
| Boot0013 | Lenovo Diagnostics | 硬件诊断 |
| Boot0016 | Reinstall Windows from Cloud | 联网重装出厂 Windows |
| Boot0012–001C 其余 | 诊断画面、资产信息、内存自修复等 | 均为禁用状态,无需处理 |
第三类:按设备类型启动(路径为 VenMsg(...),联想定义的设备类别)
| 编号 | 名称 | 说明 |
|---|---|---|
| Boot0021 | USB HDD | U 盘、移动硬盘(Ventoy U 盘走这一类) |
| Boot001F / 0020 | NVMe0 / NVMe1 | 内置固态硬盘 |
| Boot001D / 001E | USB CD / USB FDD | USB 光驱、软驱 |
| Boot0022 | PXE BOOT | 网络启动 |
| Boot0023 | LENOVO CLOUD | 从联想服务器下载启动程序 |
| 其余 | ATA HDD、IDER 等 | 兜底选项 |
作用:当排在前面的启动项都失败时,固件按设备类别寻找可启动的设备。
8.5 启动项管理命令
Section titled “8.5 启动项管理命令”| 操作 | 命令 |
|---|---|
| 查看 | efibootmgr |
| 查看详细路径 | efibootmgr -v |
| 删除某项 | sudo efibootmgr -b XXXX -B |
| 设置启动顺序 | sudo efibootmgr -o 0002,XXXX |
| 仅下次启动某项 | sudo efibootmgr -n XXXX |
| 核对分区 PARTUUID | lsblk -o NAME,PARTUUID,SIZE |
删除启动项只删除 NVRAM 中的记录,不会删除 EFI 分区里的文件,也不会影响对应的系统。删错了可以重新添加。
9. 双系统下的启动路径
Section titled “9. 双系统下的启动路径”9.1 路径图
Section titled “9.1 路径图” ┌──────────────┐ │ UEFI 固件 │ └──────┬───────┘ BootOrder 第一位 │ F12 手动选择 ┌──────────────┴──────────────┐ ↓ ↓ ┌───────────────┐ ┌─────────────────────┐ │ Limine │ │ Windows Boot Manager│ │ (菜单) │ └──────────┬──────────┘ └───┬───────┬───┘ │ 选 Omarchy 选 Windows │ │ │ 链式引导 │ │ └──────────────→ bootmgfw.efi ↓ ↓ UKI → 解锁 LUKS → btrfs Windows ↓ Omarchy| 路径 | 经过 | 用途 |
|---|---|---|
| 日常启动 Omarchy | 固件 → Limine → Omarchy | 默认 |
| 日常启动 Windows | 固件 → Limine → Windows Boot Manager → Windows | 默认 |
| 备用启动 Windows | 固件(F12)→ Windows Boot Manager → Windows | Limine 出问题时 |
9.2 链式引导配置
Section titled “9.2 链式引导配置”limine-update 会自动生成类似下面的条目;自动识别失败时,可以手动追加到 /boot/limine.conf 末尾:
/Windows 11 protocol: efi path: boot():/EFI/Microsoft/Boot/bootmgfw.efi| 配置项 | 含义 |
|---|---|
/Windows 11 |
菜单中显示的名称 |
protocol: efi |
以 EFI 程序方式运行目标文件,即链式引导 |
path: boot():/... |
boot() 表示 Limine 自身所在的分区(即 EFI 分区),后面是文件路径 |
10. 安装 Windows 对引导的影响
Section titled “10. 安装 Windows 对引导的影响”| 变化 | 说明 | 处理 |
|---|---|---|
EFI 分区新增 EFI/Microsoft/ 目录 |
Windows 写入自己的引导程序 | 无需处理 |
NVRAM 新增 Windows Boot Manager 启动项 |
指向 bootmgfw.efi |
保留,作为备用路径 |
| Windows 启动项被排到 BootOrder 第一位 | 开机会直接进 Windows,看不到 Limine | 用 efibootmgr -o 把 Limine 调回第一位 |
| Limine 菜单中暂时没有 Windows | 菜单配置还没更新 | 运行 sudo limine-update |
EFI/limine/ 目录 |
不会被删除或修改 | 无需处理 |
Windows 大版本更新后,偶尔会再次把自己排到第一位。遇到时按 F12 进 Limine,重新调整顺序即可。
11. 常用命令速查
Section titled “11. 常用命令速查”| 目的 | 命令 |
|---|---|
| 查看固件模式和安全启动状态 | bootctl status |
| 查看 UEFI 启动项 | efibootmgr |
| 调整启动顺序 | sudo efibootmgr -o 0002,XXXX |
| 删除失效启动项 | sudo efibootmgr -b XXXX -B |
| 查看分区和 PARTUUID | lsblk -o NAME,PARTUUID,FSTYPE,SIZE,MOUNTPOINTS |
| 重新生成 Limine 菜单 | sudo limine-update |
| 查看 Limine 菜单中的 Windows 条目 | sudo grep -i -A3 windows /boot/limine.conf |
| 查看 EFI 分区内容 | sudo ls -R /boot/EFI |
| 查看当前内核参数 | cat /proc/cmdline |
12. 常见问题
Section titled “12. 常见问题”Q1:删除 Windows Boot Manager 启动项,会把 Windows 删掉吗?
不会。启动项只是 NVRAM 里的一条记录,删除后 EFI 分区里的 bootmgfw.efi 和 C 盘都还在。Limine 仍然可以链式启动 Windows,也可以在 Windows 里用 bcdboot 重新创建启动项。
Q2:能不能反过来,用 Windows Boot Manager 启动 Linux?
基本不行。Windows Boot Manager 只支持启动 Windows,这也是选择 Limine 作为总入口的原因。
Q3:Windows 更新会破坏 Limine 吗?
Windows 不会删除 EFI/limine/ 目录,但可能把自己的启动项重新排到第一位。表现为开机直接进 Windows,按 F12 进 Limine,再用 efibootmgr -o 调整顺序即可。
Q4:Limine 坏了,还能进 Windows 吗?
能。开机按 F12,直接选 Windows Boot Manager,绕过 Limine。修复 Limine 需要从 Live U 盘启动后重新安装,或进入 Omarchy 后运行 limine-update。
Q5:两个引导程序和安全启动(Secure Boot)有什么关系?
安全启动开启时,固件只运行带有受信任签名的 .efi 文件。Windows Boot Manager 有微软签名;Limine 默认没有,需要用 sbctl 等工具自行签名。本机安全启动保持关闭,LoL 的反作弊 Vanguard 只要求 TPM 2.0,不要求安全启动,所以不需要处理签名问题。
Q6:为什么 Timeout 是 0 秒?
这是固件层面的等待时间,为 0 表示不显示固件菜单,直接按 BootOrder 启动。这不影响 Limine 自己的菜单,需要手动选择启动设备时按 F12。
Q7:缩小 Linux 分区后需要改引导配置吗?
不需要。缩小分区不会改变 PARTUUID,内核参数中的 cryptdevice=PARTUUID=7db017d2-... 仍然有效。
13. 附录:通俗比喻
Section titled “13. 附录:通俗比喻”| 技术概念 | 比喻 |
|---|---|
| UEFI 固件 | 大楼门口的保安,只看名单(BootOrder),按顺序放人进去 |
| EFI 分区 | 大堂,每家公司都在这里设了接待台 |
| Limine | 综合前台,哪家公司都能带你过去 |
| Windows Boot Manager | Windows 公司自己的前台,只接待去 Windows 的客人 |
| 链式引导 | 综合前台把客人领到 Windows 前台,由对方继续接待 |
| 安装 Windows 后启动顺序被改 | Windows 跟保安说“以后先把人领到我这儿”,你需要再告诉保安“还是先去综合前台” |