更新答案
对于任何想要权威来源的人,请参阅第 13.3.1.3 节标准它描述了目录结构。
客观的
制作一个 UEFI 可启动 Ubuntu Linux USB 驱动器,其中包含用于启动的 EFI 分区和单独的 EXT4 分区上的 Linux。 (注:这不是我的想法,我不能偏离这些条件,否则我会做更直接的事情。)
我做了什么
- 启动 Live CD 并完成通常的安装顺序
- 当我进行分区时,创建了一个 512MB EFI 分区并使其可启动
/
将 Ubuntu 设置为在 EXT4 文件系统上使用带有挂载点的一个分区- 正常安装
- 将 USB 驱动器移至另一台计算机,尝试启动
结果
单击后EFI USB Device
,屏幕会短暂闪烁黑色,然后立即返回到同一屏幕。但是,如果我在最初安装的计算机上启动 USB 驱动器,它就可以工作。
我的诊断
我对 EFI 引导过程的理解是,在这个阶段,选项应该指向 grub.efi 文件,此时 grub 应该启动,然后接管引导顺序。
根据我所看到的情况,grub 似乎没有启动?如果是这样,我不明白为什么不这样做。我的理解是,这里发生的是系统固件扫描所有存储介质以查找可行的 EFI 分区。这一事实告诉我,它一定已经在 USB 上正确找到了这个分区,但 EFI 分区中的内容却无法正常工作。我查看了 EFI 分区,对我来说奇怪的是有一个名为 EFI 的文件夹,其中有一个包含我的系统名称的文件夹,然后是一个名为 grubx64.efi 的文件。里面应该还有更多吗?
答案1
/EFI/BOOT/BOOTX64.EFI
当您尝试启动 EFI 可移动驱动器时,固件会在 处(/EFI/BOOT/BOOTIA32.EFI
如果系统是 32 位,则在 处)查找可执行文件。如果系统是可移动的,那么引导加载程序通常会出现在这个位置。
Ubuntu 安装预计该驱动器是不可移动的,因此将 GRUB 安装到 /EFI 下的其他位置。这通常不是问题,因为它还会创建一个包含 GRUB 位置的 EFI 引导条目。但是,引导条目是特定于计算机的,因此如果移动驱动器,另一台计算机将无法找到 GRUB。
解决方案是引导到安装该系统的原始计算机上的系统(它仍应包含所需的引导条目)。如果不可能,另一种方法是从其他 Linux 机器 chroot 到您的 Ubuntu。然后,您可以grub-install
使用该--removable
标志运行,将 GRUB 安装到可移动引导加载程序路径之一。