如何从LiveCD运行update-grub?


62

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

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


这工作完全...这样做只是2天ago- opensource-sidh.blogspot.in/2011/06/...
Nirmik

这个线程要指向-在12.10命令update-grub不适用于grub <2.0吗?-我上周末用grub-install破坏了我的12.10(pear OS 7.0.1)安装,然后update-grub无法正常工作-必须用supergrub-CD进行救援...
dschinn1001 2013年

Answers:


81

既然您说出现了grub引导加载程序,但是菜单为空,我认为您不需要重新安装grub,而是按照您的要求运行update-grub。为此,您可以使用Live CD,将硬盘上的相关分区挂载,将chroot挂载到已挂载的目录中,然后运行update-grub,其工作方式就像在实际硬盘上一样。

使用Live CD引导,选择“不安装即可尝试Ubuntu”。

一旦启动,打开终端(ctrl-alt-t)并将Ubuntu分区挂载在/ mnt上。我假设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菜单将被恢复。


当我尝试运行三个安装命令时,出现“安装点/ mnt / dev不存在”或每个命令对应的一个。
凯利2012年

您的Ubuntu安装在/ dev / sda5上吗?如果是这样,sudo mount /dev/sda5 /mnt那么您应该能够cd /mnt看到那里的Ubuntu安装树。它应该具有dev,sys和proc。如果不是,则可能是您安装了错误的分区。你能检查一下吗?谢谢!
roadmr 2012年

我重新启动了LiveCD,这一次它似乎正在运行。尽管我很小心,但我第一次一定打错了。无论如何,我现在正在重启...不,没有任何变化。仍然无法在Grub菜单中选择Ubuntu。
凯利2012年

因此,在运行“ sudo mount / dev / sda5 / mnt”,然后运行“ cd / mnt”后,为回答您的问题,我确实看到了dev,sys和proc。
凯利2012年

1
先生,您是救命者:)谢谢您。像魅力一样工作。
ereOn 2012年

14

从Live CD引导。

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

须藤挂载/ dev / sda5 / mnt

安装GRUB2引导加载程序:

须藤grub-install --root-directory = / mnt / dev / sda

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

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

须藤umount / dev / sda5; 须藤重启

如果您安装了多个操作系统,请像这样重新检测操作系统:

须藤更新

而已!


1
标记要删除的地雷-同一件事两次都没有意义
23 93 26 35 19 57 3

谢谢,但这不起作用。它会重新安装Grub,但是当我重新启动时,它仍未更新,因此我的Ubuntu安装仍未显示在Grub中。在重启之前,我需要以某种方式更新Grub,例如从LiveCD。
凯利2012年

@Kelley您确定在sda5上安装了Ubuntu吗?您可以通过运行进行检查sudo fdisk -l。Ubuntu安装将*在/ dev / sdxx之后。
Basharat Sialvi'6年

是的,它在sda5上。但是,*在sda2之后,这是我的Windows分区(也是我能够启动的最后一个分区,因为它是我的Grub菜单上的唯一选择)。
凯利

Chroot。请阅读其他答案。
ish 2012年

1

我对这个问题的解决方案是:

  1. http://www.supergrubdisk.org/category/download/supergrub2diskdownload/super-grub2-disk-stable/下载supergrub2disk
  2. 将其放在笔式驱动器上 http://www.supergrubdisk.org/put-super-grub2-disk-into-an-usb-pendrive-as-an-iso-image-from-windows/
  3. 从pendrive引导计算机,上面装有supergrub2disk
  4. 登录到您的Ubuntu
  5. https://help.ubuntu.com/community/Boot-Repair获得Ubuntu的Boot-Repair

也许这不是最快的解决方案,但对我而言,这是最简单的解决方案。


1

该解决方案与roadmr的答案完全相同,只是更加简单。

  1. 启动到AntiX Live CD。
  2. 菜单>应用程序>系统工具>引导修复
  3. 选择“修复GRUB配置文件”(此选项不会运行update-grub)
  4. 选择/ boot所在的驱动器/分区
  5. 完成后重新引导。

在我的特殊情况下,“重新安装GRUB引导程序”已为我修复。.我有Windows / Linux双引导程序。我使用Macrium 7创建了驱动器到文件的克隆。然后将该文件还原到新的驱动器。将其还原到新驱动器后,它将启动至黑屏,并且光标在左上方闪烁



-1

感谢您的大力帮助!但是,最后似乎没有任何效果,而且由于我有一个单独的/ home分区,因此我能够重新安装Ubuntu而不会丢失任何数据。我仍然必须重新安装程序并进行一些配置,但是此时一切似乎都很好。


1
很高兴知道您以某种方式解决了问题,但是chrooting应该已经奏效,而且我认为这是最好的解决方案。
Mahesh 2012年

是。我不知道为什么它不起作用,但是答案很好(我赞成)。你们提供了很多帮助,也许答案可以帮助其他人解决这个问题。
凯利2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.