当前位置: 首页>>技术教程>>正文


如何从LiveCD运行update-grub?

, ,

问题描述

好的,所以我做了一些愚蠢的事。我试图清理我的Grub条目,并意外地从Grub中删除了所有Linux内核(它们仍然在硬盘上)。所以现在很明显,Grub没有给我任何启动Ubuntu的方法;我可以很好地启动Windows,但Ubuntu甚至没有列出。

所以我只想以某种方式运行“sudo upgrade-grub”将Ubuntu恢复到列表中。我可以从LiveCD启动,但是一旦在那里我如何运行该命令? (顺便说一下,我的Ubuntu安装在sda5上。)

最佳解决方案

既然你说你的grub bootloader出现了,但菜单是空的,我认为你不需要重新安装grub,而是按照你的要求运行update-grub。要实现此目的,您可以使用Live CD,从硬盘安装相关分区,chroot到安装目录,然后运行update-grub,它应该像在实际硬盘上运行一样工作。

使用Live CD启动,选择“不安装即可试用Ubuntu”。

启动后,打开终端(ctrl-alt-t)并在/mnt上安装Ubuntu分区。我假设Ubuntu分区是/dev /sda5,但你应该自己确定。如果您需要帮助,请告诉我们:

sudo mount /dev/sda5 /mnt

然后再安装一些所需的目录:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc

此外,如果你有一个单独的Ubuntu启动分区(这些天非常罕见,但可能是这种情况):

sudo mount /dev/sdaX /mnt/boot

怎么知道你是否有启动分区?

安装Ubuntu分区后,打开/mnt/etc/fstab。如果您看到/boot的条目,请注意它指向的设备(/dev/sda4可能?)。这是你必须安装的那个。

安装完成后,执行chroot以开始使用已安装的目录作为根分区:

sudo chroot /mnt

您将收到#/提示。首先要确认您使用的是正确的/boot目录。转到/boot/grub并查看那里的文件。应该有一堆.mod文件和一个grub.cfg文件。如果目录为空,请不要继续,因为这意味着这不是您的实际boot目录。查看上面的内容,了解如何确定是否需要安装其他boot目录。

一旦确认/boot/包含正确的文件,意味着它是正确的位置,请键入:

sudo update-grub

这应该使用菜单条目重建/boot/grub/grub.cfg文件。

然后退出chroot:

exit

此时,您可能需要检查事情是否已正确更新。为此,cd /mnt/boot/grub并检查grub的文件是否存在,应该有一堆.mod文件和grub.cfg,后者应该有你的Ubuntu内核的条目。如果你只看到grub.cfg而没有.mod文件,那就意味着这不是正确的启动目录,请看上面是如何挂载一个单独的启动分区。

卸载文件系统:

sudo umount /mnt/dev
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/boot #Only if you mounted it earlier
sudo umount /mnt/

然后重启,希望您的Grub菜单将被恢复。

次佳解决方案

从Live CD启动。

点击Alt + Ctrl + T打开终端并运行以下命令:

sudo mount /dev/sda5 /mnt

安装GRUB2引导加载程序:

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

这是/dev/sda – 硬盘本身,而不是Ubuntu分区 – /dev/sda5

卸载Ubuntu分区并重启计算机,如下所示:

sudo umount /dev/sda5 ; sudo reboot

如果您安装了多个操作系统,re-detect操作系统如下:

sudo update-grub

而已!

第三种解决方案

感谢所有的帮助!但是,最终似乎没有任何工作,因为我有一个单独的/home分区,我能够重新安装Ubuntu而不会丢失任何数据。我仍然需要重新安装程序并进行一些配置,但此时一切似乎都很好。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1781.html,未经允许,请勿转载。