如何从 LiveCD 运行 update-grub?

如何从 LiveCD 运行 update-grub?

好吧,我做了一件蠢事。我试图清理我的 Grub 条目,却意外地从 Grub 中删除了我的所有 Linux 内核(它们仍在硬盘上)。所以现在,很明显,Grub 无法让我启动 Ubuntu;我可以正常启动 Windows,但 Ubuntu 甚至没有列出。

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

答案1

由于您说 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 菜单能够恢复。

答案2

从 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 分区并重新启动计算机,如下所示:

卸载/dev/sda5; sudo 重启

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

sudo 更新 grub

就是这样!

答案3

到 2022 年,您可能将拥有一个需要更多步骤的 EFI 系统。

从 Live CD 启动并打开终端。

/dev/sda5将原有操作系统的分区(例如)挂载到/mnt

sudo mount /dev/sda5 /mnt

如果您使用的是 SSD 磁盘,则设备名称以nvme,例如/dev/nvme0n1

找出哪个分区有 EFI 系统:

fdisk -l /dev/sda | grep EFI
# example output:
# /dev/sda1           2048     309247    307200   150M EFI System

将 EFI 系统分区(例如/dev/sda1)挂载到/mnt/boot/efi

sudo mount /dev/sda1 /mnt/boot/efi

根据@basharat-sialvi 的说明安装 GRUB:

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

最后,重新启动系统。

答案4

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

  1. 启动 AntiX Live CD。
  2. 菜单>应用程序>系统工具>启动修复
  3. 选择‘修复 GRUB 配置文件’(此选项运行 update-grub)
  4. 选择驅動器/分區/boot 所在的位置
  5. 完成后重新启动。

在我的特定情况下,“重新安装 GRUB Bootloader”为我解决了这个问题。我有一个双启动的 Windows/Linux 设置。我使用 Macrium 7 将驱动器克隆到文件。然后将该文件还原到新驱动器。在我将其还原到新驱动器后,它将启动到黑屏,左上角有闪烁的光标

相关内容