如何从 LiveCD 运行 update-grub?

Kel*_*ley 76 boot grub2

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

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

roa*_*dmr 100

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

使用 Live CD 启动,选择“Try Ubuntu without installation”。

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

sudo mount /dev/sda5 /mnt
Run Code Online (Sandbox Code Playgroud)

然后再挂载几个需要的目录:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc
Run Code Online (Sandbox Code Playgroud)

此外,如果您有一个单独的 Ubuntu 引导分区(现在很不常见,但可能是这种情况):

sudo mount /dev/sdaX /mnt/boot
Run Code Online (Sandbox Code Playgroud)

你怎么知道你是否有引导分区?

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

挂载这些后,执行 chroot 以开始使用挂载目录作为根分区:

sudo chroot /mnt
Run Code Online (Sandbox Code Playgroud)

你会得到一个#/提示。首先要做的是确认您使用的是正确的/boot目录。去/boot/grub看看那里的文件。应该有一堆 .mod 文件和一个 grub.cfg 文件。如果目录为空,请不要继续,因为这意味着这不是您的实际boot目录。查看上方以了解如何确定是否需要挂载其他boot目录。

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

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

这应该使用菜单项重建您的 /boot/grub/grub.cfg 文件。

然后退出chroot:

exit
Run Code Online (Sandbox Code Playgroud)

此时,您可能需要检查内容是否已正确更新。为此,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/
Run Code Online (Sandbox Code Playgroud)

然后重新启动,希望您的 Grub 菜单能够恢复。

  • 先生,您是救星:)谢谢您。工作起来就像一个魅力。 (2认同)

Bas*_*lvi 18

从 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 ; 须藤重启

如果您安装了多个操作系统,请重新检测操作系统,如下所示:

须藤更新-grub

就是这样!


Kel*_*ley -2

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