我在外部硬盘(MBR 分区表)上安装了 Ubuntu。USB Live Disk 是 UEFI,虽然我指示 Ubuntu 安装程序在外部硬盘上安装 Grub,但它却成功地在内部硬盘上安装了 Grub。为了与旧硬件兼容,我选择在外部硬盘上使用 MBR,但我意外地在 UEFI 中安装了 Ubuntu。grub-install grub-install --target=i386-pc /dev/sdc
不起作用。它显示以下错误:
grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. Please specify --target or --directory.
答案1
在继续之前,您应该先做一点回顾。系统兼容性的关键点不是分区表类型,而是引导加载程序。每台计算机都有控制引导过程的固件,引导加载程序必须能够与该固件配合使用。对于 x86 和 x86-64 系统,固件通常是旧式 BIOS 或较新的 EFI(或 UEFI,即 EFI 2.x)。任何类型的固件都可以从 MBR 或 GPT 磁盘引导,尽管 BIOS 系统通常采用MBR和EFI系统通常采用 GPT。
重点是,您必须评估要启动的计算机是使用 BIOS、EFI 还是两者的混合,然后选择合适的引导加载程序。可以同时安装 BIOS 模式和 EFI 模式的引导加载程序,但这可能很棘手,尤其是当您想在两种模式下都使用 GRUB 时。如果您必须支持这两种启动模式,我建议对 BIOS 使用 GRUB,对 EFI 使用其他程序,反之亦然。这意味着您必须了解 GRUB 的替代方案。
GRUB 适用于多种不同类型的固件,包括 BIOS 和 EFI。Ubuntu 的“EFI 模式安装”仅表示包含 EFI 版本的 GRUB 的 Ubuntu 安装(或者,原则上,包含其他 EFI 引导加载程序,但 GRUB 是 Ubuntu 安装工具将自动设置的唯一一个)。请注意,在 Ubuntu 中安装 GRUB 时,这涉及在 Linux 文件系统中设置一堆脚本和二进制文件的副本和将相关部分复制到磁盘上的特权位置(并且,在 EFI 的情况下,注册 NVRAM 条目)。换句话说,您无法使用您现在在计算机上安装的 EFI 模式 GRUB 包安装 BIOS 模式 GRUB。要安装 BIOS 模式 GRUB,您必须执行以下其中一项操作:
- 安装 BIOS 模式 GRUB 包(
grub-pc
),这也会卸载 EFI 模式包 - 获取 GRUB 源代码,或者获取二进制版本(无需实际安装 Debian 软件包),然后手动安装(这是一个棘手的过程)
- 从活动磁盘将 GRUB 安装到启动介质。
在大多数情况下,启动修复工具可用于安装与已有 GRUB 不同的版本。诀窍是启动您用来以所需启动模式运行 Boot Repair 的任何磁盘 - 如果您以 BIOS 模式启动,Boot Repair 将安装 BIOS 模式 GRUB;如果您以 EFI 模式启动,它将安装 EFI 模式 GRUB。还有一个复杂之处是您想要安装到 USB 设备;我不确定 Boot Repair 是否会将 GRUB 安装到该磁盘或尝试安装到您的内部磁盘。
外部磁盘的 EFI 模式启动还有另一个复杂之处:可EFI/ubuntu
移动磁盘上的引导加载程序通常应安装到后备文件名的EFI/BOOT/bootx64.efi
。这可能需要手动复制引导加载程序文件。