如何修复 Windows 10 的 grub 菜单项

如何修复 Windows 10 的 grub 菜单项

TL;DR 曾经有一段时间,Ubuntu 和 Windows 都可以从 f8 和 grub 菜单正常启动。我决定将 Win10 从慢速 HDD 升级到 SDD,然后 Windows 启动管理器给了我两个 Win10 选项。我重新格式化了旧 HDD,因为我不需要两个 win10,这时 grub 菜单停止启动 Windows。即便如此,f8 菜单仍然可以正常启动两个操作系统。

不太确定如何解释我的问题,我会尽力。几个月来我一直在 1TB SSD 上运行 Ubuntu 20.04,我决定在旧的 500 GB HDD 上安装 Win10。我注意到 Win10 安装程序没有在 HDD 上创建自己的 EFI,而是在主 1TB SSD efi 分区中与 Ubuntu efi 一起创建了它的启动项。不确定大多数人是否每个驱动器或每个系统都有一个 EFI 分区,但无论哪种方式,Win10 安装程序实际上都没有任何选项。在 Ubuntu 上启动以更新 grub 菜单,然后添加了 Windows 启动管理器菜单项。一切顺利,grub 上的每个菜单项都运行良好。

现在,我在新的 1TB SSD 上安装了新的 Win10,因为旧硬盘的启动和响应速度太慢。一切运行良好,但当我启动 Windows 启动管理器时,在 grub 菜单上,我现在有两个 Windows 操作系统选项。我决定重新格式化旧硬盘,这样当我选择 Windows 启动管理器时,它将直接启动到新的 Win10,而不是看到两个选项。

这是一个很大的错误,现在我无法通过 F8 启动选项或 grub 菜单启动任何 Windows。我弹出安装程序以启动 cmd 提示符,然后运行bootrec命令,然后我能够使用 F8 启动 Windows 10。此外,如果我将 Windows 启动管理器作为第一个启动选项,新的 Win10 操作系统将毫无问题地启动。我以为现在所有问题都解决了。我将 Ubuntu 重新设置为启动选项 1,从 grub 菜单中选择 Windows 启动管理器,Windows 10 仅启动一次,任何后续尝试每次都会给我一个恢复蓝屏,提示未找到设备错误代码 0x000000e。

我尝试了各种各样的东西,efibootmgr、boot-repair、update-grub,我查看了 UUID,它似乎对于 Windows 启动管理器来说是正确的。

最大的问题是我不知道哪里坏了,Windows 启动正常,所以我相信 grub 菜单坏了,但我认为 grub 只是使用 efi 条目,但我不明白 Windows 如何仍然能够正常启动。

bcd 編輯:

Windows Boot Manager
--------------------
identifier              {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device                  partition=\Device\HarddiskVolume3
path                    \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description             Windows Boot Manager
locale                  en-US
default                 {d0fb23a8-0a09-11eb-9dac-82074bc046f4}
resumeobject            {928ea8ee-0a01-11eb-8113-806e6f6e6963}
displayorder            {d0fb23a8-0a09-11eb-9dac-82074bc046f4}
timeout                 30

Windows Boot Loader
-------------------
identifier              {d0fb23a8-0a09-11eb-9dac-82074bc046f4}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows 10 Pro
locale                  en-US
recoverysequence        {d0fb23a9-0a09-11eb-9dac-82074bc046f4}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {928ea8ee-0a01-11eb-8113-806e6f6e6963}
bootmenupolicy          Standard

efibootmgr:

~ ❯❯❯ efibootmgr -v
BootCurrent: 000C
Timeout: 1 seconds
BootOrder: 000C,0000,000D,0009,000A,0004,0005,0001,0002,0003
Boot0000* Windows Boot Manager  HD(1,GPT,f00bcd52-36bd-4a75-9dc8-098d39d94539,0x800,0x100000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................
Boot0001* UEFI:CD/DVD Drive     BBS(129,,0x0)
Boot0002* UEFI:Removable Device BBS(130,,0x0)
Boot0003* UEFI:Network Device   BBS(131,,0x0)
Boot0004  UEFI: PXE IP4 Intel(R) Ethernet Connection (7) I219-V PciRoot(0x0)/Pci(0x1f,0x6)/MAC(a85e45e7f8fa,0)/IPv4(0.0.0.00.0.0.0,0,0)..BO
Boot0005  UEFI: PXE IP6 Intel(R) Ethernet Connection (7) I219-V PciRoot(0x0)/Pci(0x1f,0x6)/MAC(a85e45e7f8fa,0)/IPv6([::]:<->[::]:,0,0)..BO
Boot0009  UEFI: PXE IP4 Intel(R) Ethernet Connection (7) I219-V PciRoot(0x0)/Pci(0x1f,0x6)/MAC(a85e45e7f8fa,0)/IPv4(0.0.0.00.0.0.0,0,0)..BO
Boot000A  UEFI: PXE IP6 Intel(R) Ethernet Connection (7) I219-V PciRoot(0x0)/Pci(0x1f,0x6)/MAC(a85e45e7f8fa,0)/IPv6([::]:<->[::]:,0,0)..BO
Boot000C* ubuntu        HD(1,GPT,f00bcd52-36bd-4a75-9dc8-098d39d94539,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)
Boot000D* UEFI: PNY USB 2.0 FD 1100, Partition 1        PciRoot(0x0)/Pci(0x14,0x0)/USB(7,0)/HD(1,GPT,9ea75237-6b11-4b0b-ad58-54fe8ebe30ba,0x800,0x1df2edf)..BO

使用 lsblk 查看两个 SSD 驱动器的信息:

Disk /dev/nvme1n1: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 970 EVO Plus 1TB            
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: D38640D2-C120-4733-A4F8-9B4F1FFE7138

Device         Start        End    Sectors   Size Type
/dev/nvme1n1p1  2048      34815      32768    16M Microsoft reserved
/dev/nvme1n1p2 34816 1953523711 1953488896 931.5G Microsoft basic data


Disk /dev/nvme0n1: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Sabrent Rocket Q                        
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: 041DB30D-EAB3-460B-A8EC-F056C3B33024

Device           Start        End    Sectors  Size Type
/dev/nvme0n1p1    2048    1050623    1048576  512M EFI System
/dev/nvme0n1p2 1050624 1953523711 1952473088  931G Linux files

带有 blkid 的 efi 部件信息:

/dev/nvme0n1p1: UUID="8505-DD3A" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="f00bcd52-36bd-4a75-9dc8-098d39d94539

答案1

以下是我发现 Windows 分区被锁定的原因。我当时正在使用 clonezilla 预安装 Windows 来恢复 EFI 分区。我注意到 clonezilla 说由于休眠或快速启动,无法读取 Windows 分区。我没有太注意它,因为我专注于 ESP 分区。

然后我重新安装了 Windows 10。令我惊讶的是,grub 菜单仍然出现 BSOD,但 F8 却没有出现。这时我检查了 Windows 休眠设置和 uefi 设置上的快速启动。然后,无论是在重启还是关机后,grub 菜单中的 Win10 都可以正常启动。

由于 Windows 在关机期间锁定了驱动器,因此需要三天时间来进行故障排除。

相关内容