Skip to content

双系统引导原理说明

项目 内容
适用机器 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。

术语 英文 说明
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),启动项用它来定位分区

┌─────────────────────────────────────────────────────────┐
│ 第 1 层:UEFI 固件(主板) │
│ 读取 NVRAM 中的 BootOrder,按顺序尝试启动项 │
│ 找到 EFI 分区里对应的 .efi 文件并运行 │
└──────────────────────────┬──────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 第 2 层:引导程序(每个系统各一个) │
│ Limine / Windows Boot Manager │
│ 显示菜单或读取配置,加载对应的操作系统 │
└──────────────────────────┬──────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 第 3 层:操作系统内核 │
│ Linux 内核 / Windows 内核(ntoskrnl.exe) │
└─────────────────────────────────────────────────────────┘

关键点: UEFI 固件既不认识 Linux,也不认识 Windows。它只会做一件事:运行 EFI 分区里指定的 .efi 文件。怎样启动一个具体的操作系统,是引导程序的工作。


项目 值
设备 /dev/nvme0n1p1
大小 2GB(已用约 218MB)
文件系统 FAT32(vfat)
PARTUUID c97a6eef-1b97-4fb1-ad79-f8ca97c8243e
挂载点 /boot

当前(仅 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)。


对比项 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 两个都能启动,所以由它来显示统一的选择菜单。


UEFI 固件
↓ 运行 \EFI\limine\limine_x64.efi
Limine
↓ 读取 /boot/limine.conf,显示菜单,用户选择 Omarchy
UKI 统一内核镜像(内核 + initramfs + 内核参数)
↓
initramfs
↓ 根据内核参数 cryptdevice=PARTUUID=7db017d2-... 找到 nvme0n1p2
↓ 提示输入磁盘密码,解锁 LUKS2 → 得到 /dev/mapper/root
↓ 根据 rootflags=subvol=@ 挂载 btrfs 的 @ 子卷为根目录
systemd
↓ 启动系统服务
Hyprland 桌面

来自 /etc/kernel/cmdline:

cryptdevice=PARTUUID=7db017d2-3198-4013-8736-26e3eefbe635:root
root=/dev/mapper/root
rootflags=subvol=@
rootfstype=btrfs
zswap.enabled=0
rw
参数 含义
cryptdevice=PARTUUID=7db017d2-...:root 要解锁的加密分区(即 nvme0n1p2),解锁后命名为 root
root=/dev/mapper/root 根文件系统所在设备(解锁后的映射设备)
rootflags=subvol=@ 挂载 btrfs 的 @ 子卷作为 /
rootfstype=btrfs 根文件系统类型

缩小分区时 PARTUUID 不会改变,所以这些参数无需修改。

条目 说明
Omarchy 正常启动
fallback 回退镜像,正常镜像出问题时使用
Snapshots snapper 创建的系统快照,可启动到之前的系统状态(最多保留 6 个条目)
Windows 安装 Windows 并运行 limine-update 后出现
文件 作用 是否手动编辑
/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 菜单。


UEFI 固件(或 Limine 链式调用)
↓ 运行 \EFI\Microsoft\Boot\bootmgfw.efi
Windows Boot Manager
↓ 读取同目录下的 BCD 配置数据库
↓ 找到 Windows 所在分区(C 盘)
winload.efi(位于 C:\Windows\System32\)
↓ 加载 Windows 内核和驱动
ntoskrnl.exe(Windows 内核)
↓
Windows 桌面

BitLocker 的相关性: 如果启用了 BitLocker 设备加密,TPM 会记录启动过程中各环节的“指纹”。从 Limine 链式启动和从固件直接启动,指纹可能不同,从而触发 BitLocker 恢复密钥提示。详见 安装指南第 3.3 节。


Terminal window
efibootmgr
行 本机值 含义
BootCurrent 0002 本次开机使用的启动项(Limine)
Timeout 0 seconds 固件不等待,直接按顺序启动。需要手动选择时按 F12
BootOrder 0002,0000,001D,... 启动顺序,固件依次尝试,找不到就试下一个

启动项编号后有 * 表示启用,没有 * 表示禁用(只能手动选择)。

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 等 兜底选项

作用:当排在前面的启动项都失败时,固件按设备类别寻找可启动的设备。

操作 命令
查看 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 分区里的文件,也不会影响对应的系统。删错了可以重新添加。


┌──────────────┐
│ 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 出问题时

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 分区),后面是文件路径

变化 说明 处理
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,重新调整顺序即可。


目的 命令
查看固件模式和安全启动状态 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

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-... 仍然有效。


技术概念 比喻
UEFI 固件 大楼门口的保安,只看名单(BootOrder),按顺序放人进去
EFI 分区 大堂,每家公司都在这里设了接待台
Limine 综合前台,哪家公司都能带你过去
Windows Boot Manager Windows 公司自己的前台,只接待去 Windows 的客人
链式引导 综合前台把客人领到 Windows 前台,由对方继续接待
安装 Windows 后启动顺序被改 Windows 跟保安说“以后先把人领到我这儿”,你需要再告诉保安“还是先去综合前台”