我想同时安装grub-pc
和grub-efi
包,以便我的服务器可以使用任何一种方法启动;但是,当我尝试安装一个时,apt 只有在我删除另一个时才会继续。
根据apt info grub-pc
:
替换:grub、grub-common (<= 1.97~beta2-1)、grub-coreboot、grub-efi-amd64、grub-efi-ia32、grub-ieee1275、grub-legacy、grub2 (<< 2.04-1ubuntu12.2 )
并且apt info grub-efi-amd64
:
替换:grub、grub-common (<= 1.97~beta2-1)、grub-coreboot、grub-efi-ia32、grub-ieee1275、grub-legacy、grub-pc、grub2 (<< 2.04-1ubuntu12.2)
为什么要施加这种限制?否则两个包不能共存吗?我怎么能这样做呢?
在包装中下拉一级,然后安装 grub-pc-bin 和 grub-efi-amd-bin。这些软件包不会冲突,但它们既不会将 grub 作为活动引导加载程序安装,也不会在升级时更新 grub.cfg。安装您选择的用于更新功能的顶级软件包:grub-pc 或 grub-efi-amd。
只有一个 /boot/grub/grub.cfg 文件,因此您必须选择要使用的格式(旧版或 UEFI)(它们没有太大区别,但像 chainloader 命令这样的一些东西却大不相同)。
2020 年 9 月 27 日更新的答案:
根据额外的经验,我现在可以更新我的答案。
大概您的目标(不仅仅是安装软件包)实际上是制作一个可以在 BIOS 和 EFI 系统上启动的磁盘。
如果您的磁盘已经可以在 BIOS 系统上启动,您可以通过运行以下命令来添加 EFI 启动功能。请注意,(1) 磁盘需要有一个有效的、正确格式化的 ESP(EFI 系统分区),(2) ESP 需要安装在
/boot/efi
,(3) 磁盘可能需要有一个 GPT(GUID 分区)表)而不是 MBR(主引导记录)。假设所有这些,以下命令对我有用:如果您的磁盘已经可以在 EFI 系统上启动,您可以通过运行以下命令来添加 BIOS 启动功能。请注意(1)您的磁盘可能需要有一个 GPT(它可能有)和(2)如果您的磁盘有一个 GPT,则 GPT 将需要指定一个“传统 BIOS 引导”分区。假设您满足这些先决条件,以下命令可能对您有用。(我没有测试过这些命令,但我怀疑它们可能会起作用。)用
/dev/sdX
适当的设备替换(通常/dev/sda
)。update-grub
无论哪种情况,在进行上述更改后重新运行可能都没有什么坏处。供您参考,这里是Grub 文档。
旁白:我可以通过运行来查看我的 GPT 分区表
sudo gdisk -l /dev/sdX
。例如,我的 Legacy BIOS 引导分区如下所示:请注意,ubfan1 的回答说 Grub 的“legacy”和“UEFI”版本的配置文件之间的差异可能会导致问题。虽然存在这样的差异,但我认为它们可能与这种情况无关(或可能只是最小相关)。“Legacy Grub”是 Grub 的第 1 版。而“传统启动”是通过 BIOS 启动的。Grub 版本 2(通常称为“Grub”)确实支持 BIOS 和 EFI 引导。所以不要把“legacy Grub”和“legacy booting”混为一谈。
2020 年 9 月 18 日的原始答案:
如 ubfan1 的回答中所述,您可以同时安装
grub-pc-bin
和grub-efi-amd64-bin
。grub-pc
但请注意,和grub-efi
包本身有一些文件。文件本身似乎都有不同的路径。所以文件本身不会冲突。https://packages.ubuntu.com/focal/amd64/grub-pc/filelist
https://packages.ubuntu.com/focal/amd64/grub-efi/filelist
https://packages.ubuntu.com/focal/ amd64/grub-efi-amd64/文件列表
至于为什么要限制,我只能推测。一些可能的原因:
如果您查看此答案,似乎建议从以 EFI 模式启动的系统内部安装 Grub 的 EFI 版本。因此,EFI Grub 可能以系统特定的方式安装。
Ubuntu 开发人员可能不想在同一系统上支持多个引导加载程序。为这样的设置测试和提供 QA 可能很困难。
有可能 EFI 和 BIOS Grub 都被配置为使用相同的配置文件(可能
/boot/grub/grub.conf
)。(而且,正如 ubfan1 所提到的,Grub 的 EFI 与 BIOS 版本可能具有不同的功能。)我相信这是一个任意限制,也就是说,不同的 Grub 安装可以配置为使用不同的配置文件。顺便说一句:我最近将我的 BIOS 系统转换为 EFI。似乎磁盘可以(至少目前)在任一模式下成功启动。
如果你想创建一个在两种模式下启动的磁盘,我建议以 EFI 模式安装整个操作系统,然后手动尝试添加 GRUB 的 BIOS 版本(或使用 Syslinux)。我这样说是因为我在安装和排除 BIOS 引导加载程序方面有更多的经验。EFI 专家可能会建议相反。
实时 Ubuntu 系统
这两个软件包都可以在实时 Ubuntu 系统中安装(并已安装)。您在 USB 驱动器中有一个从 Ubuntu iso 文件克隆的实时系统。
安装的 Ubuntu 系统
在已安装系统的当前版本中,您必须删除已安装的程序包才能使用另一个。
我们只能猜测为什么会这样。
在两个 grub 软件包之间切换可以创建可以在 UEFI 模式和 BIOS 模式(别名 CSM 别名 legacy 模式)下引导的已安装系统。请参阅此链接。