grub 和系统损坏

grub 和系统损坏

我正在尝试从 USB 驱动器修复 grub。我不确定问题发生的原因。我正在运行 Ubuntu 20.04 并正常重启,在重启时,我得到了 grub-rescue 屏幕。我没有安装 Windows,只有 Ubuntu。我目前正在使用 usb 来修复它。我运行了 Boot-repair,但出现以下错误

Error detected in grub_mkconfig

重启后,我被带到 grub 屏幕。我尝试了这些解决方案,但没有任何效果。

我运行以下命令:

sudo mount /dev/sda1 /mnt
sudo grub-install --root-directory=/mnt /dev/sda

我收到以下错误:

grub-probe: error: failed to get canonical path of /cow.

即使在跑步时

sudo grub-mkconfig > /boot/grub/grub.cfg

或者

update-grub

在 chroot 中,我遇到了同样的错误。有人可以解释这个错误并解释如何解决它吗?

这是运行 sudo fdisk /dev/sda 命令的结果

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sda1  *          2048 1901873141 1901871094 906.9G 83 Linux
/dev/sda2       1901875198 1953523711   51648514  24.6G  5 Extended
/dev/sda5       1901875200 1937033215   35158016  16.8G 82 Linux swap / Solaris
/dev/sda6       1937035264 1953523711   16488448   7.9G 83 Linux

编辑:Pastebin 链接到 Bootinfo 摘要报告:https://paste.ubuntu.com/p/sT23JKdBr8/ 执行启动修复后的 Pastebin 链接:https://paste.ubuntu.com/p/nRf4Q29pfv/

答案1

老实说,我认为最好的办法是重新安装 Ubuntu 20.04。你知道是否可以备份系统吗?尝试运行sudo rsync -a --info=progress2 --exclude="lost+found" --exclude=".cache" /home /path/to/disk/to/save/home/to

这应该会备份 /home 目录。请确保您有另一个外部驱动器。

要备份,重新安装 Ubuntu 后,运行sudo rsync -a --info=progress2 --exclude="lost+found" /path/to/disk/to/save/home/to /home/

有关详细信息,请参阅For more information, seeAskUbuntu 上的一个帖子。这似乎是一个非常相似的问题,并且可以有更好的解决方案。

答案2

当我需要进行简单的 grub 修复(但又不知道如何修复 grub)时,我只需进行额外的安装。我会为新分区腾出一些空间(或使用不需要的分区)并在那里安装一个新的(小型/最小)Linux 实例。我会确保在旧引导加载程序上安装新引导加载程序。然后让安装程序找到我的旧安装并将其添加到菜单中。然后,两个安装都可以在重新启动时访问。基本上,我让安装程序修复了问题。

编辑:使用附加命令进行测试和更新。
如果您想删除新安装,现在可以登录旧操作系统并运行sudo grub-install /dev/wherever-your-bootloader-is。为了获得温暖的感觉,我进入了 /etc/default/grub 并对“GRUB_TIMEOUT”进行了细微更改(我将其设置为 7 秒。我将其更改为 13 秒以验证我是否走在正确的轨道上)...然后sudo update-grub。现在重新启动将我带到 grub 菜单,超时时间为 13 秒,所以我知道我现在可以使用旧安装配置的 grub。重新登录旧系统,现在您可以删除新操作系统分区并再次运行 update-grub...这会将您的 grub 菜单恢复为原始安装...

....对于您的具体情况,我会小心一点。您的布局看起来很奇怪(对我个人而言)...您有一个带有引导标签的大型 906G 分区,然后是一个带有大量交换的扩展分区,然后是里面的 7.9 GB 分区。我不知道您的操作系统安装在哪里,所以如果不看df -h和知道您在这些分区上有什么,我会犹豫是否要告诉您安装在哪里。您只需要确保您没有覆盖现有操作系统或任何要保留的数据。您需要缩小其中一个分区并使用新空间创建一个新分区...您也可以插入 USB 驱动器或 SD 卡并在那里安装小型操作系统,同时确保您将引导加载程序位置指定在图片中当前名为 /dev/sda 的驱动器上。

相关内容