Grub 有多个版本吗?

Grub 有多个版本吗?

我正在Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic-pae i686)运行Ubuntu 文档包含 Grub2。

然而grub --version给我grub (GNU GRUB 0.97),但grub-mkconfig --version给我grub-mkconfig (GRUB) 1.99-21ubuntu3.4

我是否同时安装了 2 个版本的 Grub?如果是,删除其中一个的最简单、最安全的方法是什么。

如果不是,我应该编辑哪个配置文件?我已编辑/etc/grub.d/40_custom以包含密码,但运行update-grub似乎未在grub.cfg文件中包含该密码。

答案1

grub2 没有“grub”命令,只有 grub legacy 有。并且 grub legacy 没有 grub-mkconfig 命令,只有 grub2 有。所以是的,您安装了两个版本的 grub。我猜您安装了 grub-common 包,其中包含 grub-mkconfig,但您没有不是有 grub-pc 软件包,其中包含 grub2 的大部分文件,并且是 BIOS PC 上的 grub 所必需的(如果您有 UEFI 固件,您可能需要 grub-efi-amd64)。我相信情况确实如此,因为软件包“grub”(包含 grub-legacy)和软件包“grub-pc”(包含大部分 grub2)发生冲突,因此无法同时安装。由于您安装了 grub legacy,因此“update-grub”正在修改 grub legacy 的 /boot/grub/menu.lst,而不是使用 grub-mkconfig 编写 /boot/grub/grub.cfg。

解决方案很简单:

如果您有一个基于 BIOS 的系统,那么只需安装该grub-pc包(它将自动删除该grub包)。

如果您有基于 UEFI 的系统,则安装grub-efi-amd64

如果您不知道自己拥有哪种,请在评论中说出来,我会帮助您找出答案。

答案2

这里需要指出的是,“安装”一词对于 grub(或 lilo)有两个含义。您已在文件系统中安装了两个 grub 软件包的工具和映像。您已在 MBR 中(可能)安装了实际 grub 引导加载程序的一个版本。卸载软件包不会影响您的引导加载程序,尽管您可能希望稍后使用这些软件包来修改引导加载程序配置。

答案3

是的,我想我也有 2 个版本的 GRUB。首先我使用了 12.04,然后我使用 Grub Customizer 为其提供背景图像并为 Windows 和 Ubuntu 提供更友好的条目名称(而不是“Ubuntu with Linux 3.0234.123.5.12412-02131/2.321-generic on /dev/sda4”)。然后我安装了 12.10,它用丑陋的黑屏替换了 Grub,现在 Ubuntu 12 有 3 个条目,其中 2 个指向相同的 sda7。但是,当我运行 GRUB Customizer 时,它仍然显示我以前使用 12.04 时的旧条目。

如何在我的计算机上只获得 1 个 grub 副本?例如,我如何确定我有 2 个,以及如何删除一个?

相关内容