You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GRUB2:在单EFI系统上配置多Windows与Linux操作系统

GRUB2:在单EFI系统上配置多Windows与Linux操作系统

我在单SSD的笔记本上装了两个Windows 11实例和一个Ubuntu 23.10,现在遇到了个头疼的问题:GRUB菜单里只有「Windows Boot Manager」这一个Win相关选项,每次要进某个Win11都得先选它,然后在Win自带的引导菜单里挑实例,接着还要重启再选一次Windows Boot Manager才能进入系统——这流程绕得实在太麻烦了!

先给大家看看我的当前系统磁盘和引导配置:

当前系统磁盘与引导信息

lsblk 分区信息

sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
nvme0n1            953.9G
├─nvme0n1p1 vfat     100M /boot/efi
├─nvme0n1p2           16M
├─nvme0n1p3 ntfs   149.5G
├─nvme0n1p4 ntfs     604M
├─nvme0n1p5 ntfs     200G
├─nvme0n1p6 ntfs   310.7G                                    Shared
└─nvme0n1p7 ext4     293G /

fdisk -l 详细分区表

sudo fdisk -l
Disk /dev/nvme0n1: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: SAMSUNG MZVL21T0HCLR-00BL2
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 245C7941-919B-4473-8B05-92AA2608EB88

Device              Start        End   Sectors   Size Type
/dev/nvme0n1p1       2048     206847    204800   100M EFI System
/dev/nvme0n1p2     206848     239615     32768    16M Microsoft reserved
/dev/nvme0n1p3     239616  313743359 313503744 149.5G Microsoft basic data
/dev/nvme0n1p4  313743360  314980351   1236992   604M Windows recovery environment
/dev/nvme0n1p5  314980352  734410751 419430400   200G Microsoft basic data
/dev/nvme0n1p6  734410752 1386008575 651597824 310.7G Microsoft basic data
/dev/nvme0n1p7 1386008576 2000406527 614397952   293G Linux filesystem

Windows 引导配置 (bcdedit 输出)

C:\Windows\System32>bcdedit
Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-us
inherit                 {globalsettings}
default                 {default}
resumeobject            {2ac3aa28-69bf-11ee-b9c2-cbeab994cd57}
displayorder            {default}
{current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {default}
device                  partition=D:
path                    \Windows\system32\winload.efi
description             WINDOWS 11 (1)
locale                  en-us
inherit                 {bootloadersettings}
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=D:
systemroot              \Windows
resumeobject            {2ac3aa28-69bf-11ee-b9c2-cbeab994cd57}
nx                      OptIn
bootmenupolicy          Standard
quietboot               No
usefirmwarepcisettings  No
sos                     No

Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             WINDOWS 11 (2)
locale                  en-GB
inherit                 {bootloadersettings}
recoverysequence        {2ac3aa26-69bf-11ee-b9c2-cbeab994cd57}
displaymessageoverride  Recovery
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \Windows
resumeobject            {2ac3aa24-69bf-11ee-b9c2-cbeab994cd57}
nx                      OptIn
bootmenupolicy          Standard

核心问题

能不能直接在GRUB菜单里添加两个Win11的独立选项,跳过Windows Boot Manager的二次选择和重启,直接启动目标系统?

解决方案:手动添加GRUB引导项

最可靠的方法是直接给每个Win11实例添加独立的GRUB菜单项,绕开Windows Boot Manager,直接加载每个系统的winload.efi引导文件。

步骤1:挂载相关分区

首先确保EFI分区和两个Win11系统分区都挂载好(EFI一般默认挂载在/boot/efi,如果没挂载就手动挂载):

# 挂载EFI分区(如果未自动挂载)
sudo mount /dev/nvme0n1p1 /boot/efi

# 创建挂载点并挂载第一个Win11分区(对应D:盘,nvme0n1p3)
sudo mkdir /mnt/win1
sudo mount /dev/nvme0n1p3 /mnt/win1

# 创建挂载点并挂载第二个Win11分区(对应C:盘,nvme0n1p5)
sudo mkdir /mnt/win2
sudo mount /dev/nvme0n1p5 /mnt/win2

步骤2:编辑GRUB自定义配置

打开GRUB的自定义配置文件/etc/grub.d/40_custom:

sudo nano /etc/grub.d/40_custom

在文件末尾添加以下两个引导项(注意替换分区标识为你自己的):

# 第一个Win11实例:WINDOWS 11 (1)
menuentry 'WINDOWS 11 (1)' --class windows --class os {
    insmod part_gpt
    insmod ntfs
    insmod fat
    set root='hd0,gpt3'  # 对应nvme0n1p3,也就是D:盘
    chainloader /Windows/system32/winload.efi
}

# 第二个Win11实例:WINDOWS 11 (2)
menuentry 'WINDOWS 11 (2)' --class windows --class os {
    insmod part_gpt
    insmod ntfs
    insmod fat
    set root='hd0,gpt5'  # 对应nvme0n1p5,也就是C:盘
    chainloader /Windows/system32/winload.efi
}

如果担心磁盘顺序变化导致引导失败,也可以用UUID方式(更稳定):

  1. 先获取Win分区的UUID:
# 获取第一个Win分区UUID
sudo blkid /dev/nvme0n1p3
# 获取第二个Win分区UUID
sudo blkid /dev/nvme0n1p5
  1. 把UUID替换到配置里:
menuentry 'WINDOWS 11 (1)' --class windows --class os {
    insmod part_gpt
    insmod ntfs
    insmod fat
    search --no-floppy --fs-uuid --set=root 你的Win1分区UUID
    chainloader /Windows/system32/winload.efi
}

menuentry 'WINDOWS 11 (2)' --class windows --class os {
    insmod part_gpt
    insmod ntfs
    insmod fat
    search --no-floppy --fs-uuid --set=root 你的Win2分区UUID
    chainloader /Windows/system32/winload.efi
}

步骤3:更新GRUB配置

保存配置后,执行以下命令更新GRUB:

sudo update-grub

重启电脑后,你就会看到GRUB菜单里多了两个独立的Windows 11选项,直接选择就能启动对应的系统,再也不用绕弯子了!

注意事项

  • 如果你的Win11系统开启了BitLocker加密,这种方法可能无法直接启动,需要先解密或者调整BitLocker的引导配置。
  • 后续如果Win系统更新了引导文件,可能需要重新检查GRUB配置,但一般情况下不会有问题。

备注:内容来源于stack exchange,提问作者NanoBreaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:53:01