我有一个带有 AMD64 CPU 但 UEFI 引导加载程序只支持 i386 的设备。
我使用Cubic制作了一个自定义的 Ubuntu 19.04 ISO 安装程序,并使用 usb-creator-gtk(启动磁盘创建器)将其闪存到 USB。
这会在 USB 上创建两个分区:
第一个分区格式化为 ISO9660 并保存 ISO 内容,第二个分区是仅包含 .EFI 引导文件的 FAT32 分区。
第二个分区是平板电脑将从中启动的分区。它的内容来自存储在 ISO 上 /boot/grub 中的 efi.img 文件。这最初只包含 AMD64 EFI 文件。:
我创建了自己的替换 img.efi 文件并使用以下命令输入了 bootia32.efi 文件:
dd if=/dev/zero of=efi.img bs=1M count=5
mkfs.fat efi.img
sudo mount -o loop,rw efi.img /media/efi
sudo cp -r <files> /media/efi
这成功地制作了一个可引导的 USB,但是它不加载安装程序 Grub,它只加载一个 Grub 命令行。
我之前曾使用此bootia32.efi
文件成功加载 grub,如果我改为手动将 USB 格式化为 FAT32,复制 ISO 文件并将自定义 EFI 文件放在 /EFI/BOOT 中,那么设备将按照我的预期启动到 Grub .
但我想制作一个可以正常刷入并正常启动的 ISO。
我的问题是,像 usb-creator-gtk 那样创建一个单独的分区来保存引导 EFI 文件有什么意义?如何使该分区加载安装程序的 Grub 配置,而不仅仅是 Grub 命令行?
谢谢
感谢@oldfred 解释分隔分区是为了克服 FAT32 的 4GB 文件大小限制。
boot
通过将文件夹和EFI
ISO 中的文件夹放入 FAT32 (efi.img) 分区,我设法创建了可引导 ISO 。我已将 grub.cfg 修改为从与其所在的分区不同的分区启动。
这对我来说似乎不对,因为原始的 efi.img 文件只有三个文件:
但是,它有效,所以我很高兴。
我的 efi.img 文件的确切结构是这样的:
其中一些可能不是必需的,但我并不担心它使用的额外 10MB 空间。
这是我在 img.efi 文件中的 grub.cfg,请注意
set root=(hd0)
:如果有人可以进一步了解 efi.img 文件中的内容,请告诉我。