我有一个使用 Ubuntu 20.04 和 Windows 的双启动设置。今天我使用 Windows 更新将 Windows 10 更新到 Windows 11,但我丢失了 GRUB 引导加载程序(Windows 11 运行良好)。
我设法通过更改 UEFI 中的启动顺序来恢复 GRUB,之后一切似乎都正常。然后,我运行了,sudo update-grub
因为我读到你必须在这个论坛上这样做,输出中出现许多错误,重新启动了我的计算机,之后一切都出错了……现在,当我选择“Windows 启动管理器”时,我收到一个错误:
/EndEntire
error: cannot load image
我读到过可以通过启动 Windows 并运行一些命令来解决这个问题,但我无法再通过 UEFI 选择引导加载程序启动 Windows!如果我选择 Windows,我的电脑会重新启动,但失败这样做,默认为 GRUB又一次。看来 Windows 无法再启动了。
我尝试过的事情:
- 再次禁用安全启动
boot-repair
使用“修复 Windows 启动文件”选项运行boot-repair
使用“备份并重命名 Windows EFI 文件”选项运行sudo update-grub
多次运行
我第一次运行该工具时的启动修复结果:
输出update-grub
:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.15.0-72-generic
Found initrd image: /boot/initrd.img-5.15.0-72-generic
Found linux image: /boot/vmlinuz-5.15.0-71-generic
Found initrd image: /boot/initrd.img-5.15.0-71-generic
Found linux image: /boot/vmlinuz-5.13.0-52-generic
Found initrd image: /boot/initrd.img-5.13.0-52-generic
Found linux image: /boot/vmlinuz-5.11.0-46-generic
Found initrd image: /boot/initrd.img-5.11.0-46-generic
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings
done
输出fdisk -l
:
Disk /dev/nvme1n1: 931,53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: WDS100T3X0C-00SJG0
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: FFC58535-6B06-4DDC-81BC-ED4A4575504F
Device Start End Sectors Size Type
/dev/nvme1n1p1 2048 156250111 156248064 74,5G Linux filesystem
/dev/nvme1n1p2 156250112 234375167 78125056 37,3G Linux swap
/dev/nvme1n1p3 234375168 236328959 1953792 954M EFI System
/dev/nvme1n1p4 236328960 1701173247 1464844288 698,5G Linux filesystem
Disk /dev/nvme0n1: 476,96 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: SKHynix_HFS512GDE9X084N
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: AA11E4E4-987D-4872-88CD-DF2600D0C425
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 534527 532480 260M EFI System
/dev/nvme0n1p2 534528 567295 32768 16M Microsoft reserved
/dev/nvme0n1p3 567296 998166527 997599232 475,7G Microsoft basic data
/dev/nvme0n1p4 998166528 1000214527 2048000 1000M Windows recovery enviro
奇怪的是,即使通过 UEFI 启动 Windows 它也不起作用。
答案1
终于解决了!
由于 Ubuntu 的双启动和 Windows 10 的 Windows 更新,Windows 11 启动文件已损坏,甚至使用恢复闪存驱动器和故障排除选项也不起作用
解决方案
- 使用 Windows 11 恢复文件刷新 USB。前往https://www.microsoft.com/software-download/windows11并在另一台 Windows 机器上下载“Windows 11 安装媒体”文件。使用闪存 USB 选项运行安装程序。
- 使用刷新的 USB 重新启动计算机,并在 UEFI/BIOS 菜单中从 USB 驱动器启动以进入 Windows 11 安装 GUI。
- 选择一种语言,然后在第二步单击小“修复”按钮
- 从现在开始你可以关注这个视频https://www.youtube.com/watch?v=F72D7uL6cZg或继续阅读
- 选择“命令提示符”选项以在此恢复模式下打开 cmd。
- 类型
diskpart
list disk
并选择原始 Windows 正在使用的磁盘select disk #
(# 是磁盘编号)list partition
并select partition #
选择 Windows 启动文件所在的分区号(每个 Windows 安装都会有这个。它通常是一个 300-500 MB 的分区。这里要小心)format
格式化该启动分区- 现在,为该启动分区分配一个字母
assign letter=n:
- 选择通常存储文件的其他 WIndows 分区(这可能是列表中最大的分区)。使用
select partition #
- 给这个分区分配一个字母“C”:
asssign letter=c:
exit
bootsect /nt60 all /force
。这只是更新所有目标卷以与引导加载程序兼容。- 类型
c:
bcdboot c:\windows /s n: /f all
(而不是n:
使用您分配给启动分区的字母)- 现在最后的步骤是:
bootrec /scanos
bootrec /fixmbr
bootrec /fixboot
(注意:这可能会导致您出现权限被拒绝的错误。如果出现该错误,请跳过此步骤并继续执行下一个命令。它对我来说仍然有效。否则,请谷歌搜索错误并尝试一些解决方案。)bootrec /rebuildbcd
- 退出 Windows 恢复模式并继续使用 Windows 11,现在它应该可以正常工作。
也感谢@olfred 的帮助。