我有一台双启动双驱动器 Dell Optiplex 7060,带有 SATA SSD 和 NVME 棒。
Ubuntu Linux 22.04 安装在 上/dev/nvme0
。Windows 11 安装在 上/dev/sda
。我首先在 NVME 上安装了 Ubuntu,然后在之前的 SATA 驱动器上安装了 Windows 11。最近,我用另一个更大的驱动器替换了 SATA 驱动器,并全新安装了 Windows 11。我在安装过程中断开了 NVME 驱动器的连接,以防止 Windows 在其上写入。
两种操作系统都运行良好,我可以在 中选择它们grub
。BIOS 中的 EFI 启动顺序是先启动 Ubuntu,然后启动 Windows 启动管理器。
但是,在os-prober
运行时update-grub
,它会找到一个额外的 Windows 启动管理器。grub 菜单如下所示:
*Ubuntu
Advanced options for Ubuntu
Windows Boot Manager (on /dev/nvmeon1p1) # <--This is a phantom and does not work.
Windows Boot Manager (on /dev/sda1)
UEFI Firmware Settings
选择Windows Boot Manager (on /dev/sda1)
可以正常工作。选择/dev/nvmeon1p1
会导致 Windows 蓝屏:
Your PC/Device needs to be repaired
A required device isn't connected or can't be accessed.
Error Code: 0xc000000e
这并不奇怪:它可能正在尝试查找之前的 SATA 驱动器。
efibootmgr
不显示幻影条目:
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0002,0000
Boot0000* Windows Boot Manager
Boot0002* ubuntu
我该如何删除幻影 Windows 条目?我猜想os-prober
在 EFI 分区中找到了一些东西nvme0
。我尝试在 Windows 中使用 BCDEDIT 列出内容,但我不知道如何编辑 NVME EFI 分区以保留 Ubuntu 条目并删除无用的 Windows 条目。
答案1
/boot/EFI/Microsoft/
我通过删除带有幻影条目的驱动器解决了我自己的问题。
$ sudo mount /dev/nvme0n1p1 /mnt
$ sudo su # avoid "Permission denied" when browsing around /mnt
# cd /mnt/EFI
# ls
BOOT Dell Microsoft ubuntu
# rm -rf Microsoft
# exit
$ sudo umount /mnt
$ sudo update-grub