问题描述
好的,所以我做了一些愚蠢的事。我试图清理我的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而不会丢失任何数据。我仍然需要重新安装程序并进行一些配置,但此时一切似乎都很好。