如何在 Ubuntu 和其他 Linux 发行版上更新 Grub

在本教程中,您将学习在 Ubuntu 或任何其他 Linux 发行版上更新 grub。 您还将了解有关此 grub 更新过程如何工作的一两件事。

如何更新 grub

Ubuntu 和许多其他 Linux 发行版提供了一个方便的命令行实用程序,称为 update-grub。

要更新 grub,您所要做的就是在终端中运行此命令 sudo.

sudo update-grub

你应该看到这样的输出:

[email protected]:~$ sudo update-grub [sudo] password for abhishek:  Sourcing file `/etc/default/grub' Generating grub configuration file ... Found linux image: /boot/vmlinuz-5.0.0-37-generic Found initrd image: /boot/initrd.img-5.0.0-37-generic Found linux image: /boot/vmlinuz-5.0.0-36-generic Found initrd image: /boot/initrd.img-5.0.0-36-generic Found linux image: /boot/vmlinuz-5.0.0-31-generic Found initrd image: /boot/initrd.img-5.0.0-31-generic Found Ubuntu 19.10 (19.10) on /dev/sda4 Found MX 19 patito feo (19) on /dev/sdb1 Adding boot menu entry for EFI firmware configuration done

您可能会看到一个名为 update-grub2 的类似命令。 无需担心或混淆 update-grub 和 update-grub2。 这两个命令执行相同的操作。

大约十年前,刚推出 grub2 时,也推出了 update-grub2 命令。 今天,update-grub2 只是 update-grub 的符号链接,两者都更新 grub2 配置(因为 grub2 是默认设置)。

找不到 update-grub 命令? 这是在这种情况下该怎么做

您的 Linux 发行版可能没有可用的 update-grub 命令。

在这种情况下你会怎么做? 你如何在这样的 Linux 发行版上更新 grub?

没有必要恐慌。 update-grub 命令只是一个运行 ‘grub-mkconfig -o /boot/grub/grub.cfg’ 以生成 grub2 配置文件的存根。

这意味着您可以在任何 Linux 发行版上使用以下命令更新 grub:

sudo grub-mkconfig -o /boot/grub/grub.cfg

当然,记住 update-grub 命令比上面的命令要容易得多,这也是当初创建它的原因。

update-grub 是如何工作的?

当您安装 Linux 发行版时,它(通常)会要求您安装 grub 引导加载程序.

grub 的一部分安装在 MBR/ESP 分区上。 grub 的其余部分位于 Linux 发行版的 /boot/grub 目录中。

根据其 手册页, update-grub 通过查看 /boot 目录来工作。 开头的所有文件 vmlinuz- 将被视为内核,它们将获得一个 grub 菜单条目。 它还将添加 initrd 行 内存盘 找到的图像与找到的内核版本相同。

它还查看其他操作系统的所有磁盘分区 os-prober. 如果它找到其他操作系统,它会将它们添加到 grub 菜单中。

为什么需要更新 grub?

当您需要更新 grub 时,可能会有多种情况。

假设您更改了 grub 配置文件 (/etc/default/grub) 以更改默认引导顺序或减少默认引导时间。 除非您更新 grub,否则您的更改不会生效。

另一种情况是您在同一系统上安装了多个 Linux 发行版。

例如,在我的英特尔 NUC 上,我有两个磁盘。 第一个磁盘有 Ubuntu 19.10,然后我在上面安装了 Ubuntu 18.04。 第二个操作系统(Ubuntu 18.04)也安装了自己的 grub,现在 grub 屏幕由 Ubuntu 18.04 grub 控制。

在第二张磁盘上,我安装了 MX Linux,但这次我没有安装 grub。 我希望现有的 grub(由 Ubuntu 18.04 控制)来处理所有操作系统条目。

现在,在这种情况下,需要更新 Ubuntu 18.04 上的 grub 以便它可以看到 MX Linux.

如上图所示,当我更新 grub 时,它发现在 18.04 上安装了各种 Linux 内核以及不同分区上的 Ubuntu 19.10 和 MX Linux。

如果我想让 MX Linux 控制 grub,我可以在 MX Linux 上安装 grub grub-安装 命令,然后 MX Linux 上的 grub 将开始控制 grub 屏幕。 你明白要点了吧?

使用像 Grub Customizer 这样的 GUI 工具是在 grub 中进行更改的一种更简单的方法。

到底…

最初,我打算将其保留为一篇简短的文章作为快速提示。 但后来我想解释一些与之相关的事情,以便(相对)新的 Linux 用户可以学到的不仅仅是一个简单的命令。

你喜欢它吗? 您有什么问题或建议吗? 请随时发表评论。