更新答案
对于任何想要权威来源的人,请参阅描述目录结构的标准第 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 的文件。里面应该有更多吗?
当您尝试启动 EFI 可移动驱动器时,固件会在
/EFI/BOOT/BOOTX64.EFI
(或/EFI/BOOT/BOOTIA32.EFI
如果系统是 32 位)查找可执行文件。如果系统是可移动的,这是引导加载程序应该存在的通常位置。Ubuntu 安装预计驱动器将是不可移动的,因此将 GRUB 安装到 /EFI 下的其他位置。这通常不是问题,因为它还会创建一个包含 GRUB 位置的 EFI 引导条目。但是,引导条目是特定于机器的,因此如果您移动驱动器,另一台计算机将无法找到 GRUB。
解决方案是引导到安装它的原始机器上的系统(它仍应包含所需的引导条目)。如果不可能,另一种方法是从其他 Linux 机器 chroot 进入您的 Ubuntu。然后,您可以
grub-install
使用该--removable
标志运行以将 GRUB 安装到可移动引导加载程序路径之一。