我有一台双启动笔记本电脑,装有 Windows 11(原版),然后我添加了 Ubuntu 22.04.05,一切都运行良好,持续了一年,直到 Windows 更新消灭了我的 Grub 引导加载程序,我只能访问 Windows。然后我开始在 Google、AskUbuntu、ChatGPT 等网站上搜索解决方案。经过多次尝试(尝试了许多不同的步骤来找到可行的方法),我不记得具体采取了哪些步骤起作用,但我认为是基于使用启动修复工具。我的 Grub 菜单在启动时出现,同时显示 Ubuntu 和 Windows 启动管理器,但只有 Ubuntu 选项可以工作,Windows 选项没有任何作用。经过更多的搜索和多次修复尝试,我能够恢复 Windows,但现在 Grub 引导加载程序又消失了,我快要束手无策了。再次使用 Boot-Repair 工具(几次徒劳的尝试),这是我最近的 Boot-Info 摘要,在再次进行推荐的修复尝试之前寻求任何建议 - https://paste.ubuntu.com/p/j9GsB79PTJ/。
附件是我的分区详细信息 - nvme0n1p3 - Windows 文件系统,nvme0n1p5 - Ubuntu 文件系统。
更新:我已运行推荐修复并尝试重新启动,但结果仍然相同,它只直接启动到 Windows,没有 Grub 菜单。修复后的启动信息摘要在此处 - https://paste.ubuntu.com/p/WcSb6hcHnP/。
解决了!我按照此链接中的“从 Live USB 修复 GRUB”部分解决了我的问题 - https://ithy.com/article/ubuntu-2404-boot-fix-v8xk7isg。
以下是我的 bash 历史记录:
ubuntu@ubuntu:~$ sudo mount /dev/nvme0n1p5 /mnt ubuntu@ubuntu:~$ sudo mount /dev/nvme0n1p1 /mnt/boot/efi ubuntu@ubuntu:~$ for i in /dev /dev/pts /proc /sys /run; do sudo mount --bind $i /mnt$i; done ubuntu@ubuntu:~$ sudo chrot /mnt sudo: chrot: 未找到命令 ubuntu@ubuntu:~$ sudo chroot /mnt root@ubuntu:/# sudo grub-install /dev/nvme0n1 正在为 x86_64-efi 平台安装。 grub-install: 警告:无法在此系统上设置 EFI 变量。 grub-install: 警告:您必须手动完成 GRUB 设置。 安装完成。未报告错误。 root@ubuntu:/# sudo update-grub 正在获取文件
/etc/default/grub' Sourcing file
/etc/default/grub.d/init-select.cfg' 正在获取文件 `/etc/default/grub.d/oem-flavour.cfg' 正在生成 grub 配置文件 ... 找到 linux 映像:/boot/vmlinuz-6.8.0-52-generic 找到 initrd 映像:/boot/initrd.img-6.8.0-52-generic 找到 linux 映像:/boot/vmlinuz-6.8.0-51-generic 找到 initrd 映像:/boot/initrd.img-6.8.0-51-generic 警告:将执行 os-prober 以检测其他可启动分区。其输出将用于检测其上的可启动二进制文件并创建新的启动项。在 /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi 上找到 Windows 启动管理器 错误:内存不足。 错误:语法错误。 错误:命令不正确。 错误:语法错误。 语法错误在第 262 行 生成的 GRUB 配置文件中检测到语法错误。 确保 /etc/default/grub 和 /etc/grub.d/* 文件中没有错误,或者请提交错误报告并附上 /boot/grub/grub.cfg.new 文件。root@ubuntu:/#完成上述操作并重新启动后,我的 Grub 菜单出现了,其中既有 Ubuntu 选项,也有 Windows 启动管理器选项,并且都可以使用。一切都很好,直到下一次 Winblowz 更新 :P