我的机器上同时运行 Ubuntu 和 Windows。昨晚 Windows 开始安装一些更新,它显示机器在更新过程中会重启几次。
好吧,第一次重启后,它出现了这个 GRUB 救援屏幕,似乎我的机器找不到 Ubuntu 分区。我开始认为 Windows 可能通过更新破坏了它。
到目前为止,我发现的所有其他威胁都要求执行“ls”命令来查找所有分区,并执行“set”命令来查看 GRUB 已设置的内容。
ls
返回:
(hd0) (hd0,msdos5) (hd0,msdos2) (hd0,msdos1)
确定,设置返回:
cmdpath=(hd0)
prefix=(hd0,msdos7)/boot/grub
root=hd0,msdos7
现在我明白这是错的。解决方案是遍历ls
每个分区,直到找到 Ubuntu 分区。我尝试执行中显示的数字之一ls (hd0,msdos#)/
。所有命令都返回:#
ls
错误:未知的文件系统。
我也尝试boot/grub
在命令中添加和组合,但没有任何效果。
现在,我的下一个计划是使用别人的电脑获取 Ubuntu live USB,但我现在还不能。
这是怎么回事?我的硬盘坏了吗?未完成的更新是否损坏了硬盘?还有其他解决方案吗?
答案1
我遇到了非常类似的问题。
我双启动 Windows 10 和 Debian(本生实验室),如果相关,则使用 (U)EFI BIOS 系统。以下是我解决问题的方法。
昨天,我自夏天以来第一次打开 Windows,它需要安装更新并重新启动,第二次重新启动时我收到了 GRUB 救援提示。
error: unknown filesystem
grub rescue>
ls
给了:
(hd0) (hd0,gpt6) (hd0,gpt5) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1)
为了找到 GRUB 救援可以识别的文件系统,我浏览了ls (hd0,#)
标签为 1 到 6 之间的数字的位置(注意:如果使用旧的分区表,则可以省略“gpt”部分,也可能省略“msdos”部分)。
事实证明gpt5
这是我的主分区和gpt4
Debian 根分区。其他分区都没有可以识别的文件系统(通过 GRUB 救援)。
我现在关注的是 Carla Schroder“如何在 Linux 上修复无法启动的 GRUB 2”指南。在指南的最后,她提供了从 GRUB 救援启动的命令。请注意,阅读指南时,她首先解决了从正常 GRUB 提示符启动的问题 - 那不是与我们相关的救援提示符,因此请阅读该部分,您将看到救援提示符。
由于我的启动分区是gpt4
,因此我运行了以下命令:
set prefix=(hd0,4)/boot/grub
set root=(hd0,4)
insmod normal
最后一个使提示符的字体发生了一些变化,然后命令
normal
它启动了我的正常 GRUB 2 图形启动菜单。指南没有提到这一点,会发生这种情况……但它工作得很好。我选择了 Windows 启动程序,更新安装继续。它再次重新启动,并将我送回 GRUB 救援提示符,我重复该过程,再次选择启动 Windows,这一次更新安装完成了。
现在手动重启(配置 Windows 更新后)。我再次收到 GRUB 救援提示,然后重复,但这次在图形启动菜单中,我选择我的 Linux(BunsenLabs),登录后,我打开一个终端,仍然按照 Carla Schroder 的指南操作,我做到了
sudo update-grub
它找到我的 Linux 映像和 Windows 启动管理器,然后我执行以下操作:
sudo grub-install /dev/sda
最后我再次重新启动以检查一切是否正常。我现在直接获得图形 GRUB 启动菜单,并且可以选择 Linux 和 Windows。
如果有人遇到类似的问题,我希望这会有所帮助。
答案2
主要的 Windows 更新程序有一个错误,会更改 MBR 磁盘上的 Linux 分区类型。请使用testdisk
点击此处查看如何来修复你的 MBR 分区问题,或者在这种情况下需要完整的 Ubuntu 安装来修复该问题。