通过 uEFI 启动 iso 文件,方法是调用 iso 内的 EFI 可执行文件

通过 uEFI 启动 iso 文件,方法是调用 iso 内的 EFI 可执行文件

我想创建一个可用于启动多个 iso 文件的 USB 记忆棒。我想通过 uEFI 来做到这一点。

U 盘看起来像这样:

/EFI
  /bootx64.efi
  /something.conf
/isos
  /foo.iso
  /bar.iso
  ...

这里/isos保存着一堆 uEFI 可启动 iso 文件。据我了解,这些 isos 有一个/EFI/BOOT<some arch>.efiuEFI booloader 通常会执行的文件。

驱动器上/EFI/bootx64.efi有一些待确定的efi booloader以及/EFI/something.conf它的配置文件。

我需要的是一些 uEFI 可执行文件,它可以以某种方式/EFI/BOOT<some arch>.efi在 iso 文件之一中调用。我不知道这在理论上是否可行。

我知道可以使用 GRUB2 完成类似的操作,但它需要指定 linux 映像、其选项和 initrd 文件。这与另一个 iso 不同,有时,它根本不起作用。我希望通过调用/EFI/BOOT<some arch>.efi,我不必指定这些,并且我可以有一个方法来启动任何 iso 映像。

我的问题是:是否有 uEFI 引导加载程序可以让我调用位于 iso 文件内的 EFI 可执行文件?

答案1

这不适用于所有 ISO,但您可以使用存储盘从 syslinux 将 ISO 作为 RAMDISK 映像复制到内存。 BIOS 调用将看到 RAMDISK,Linux 也将识别 RAMDISK。为此,您必须将 syslinux.efi 和相关文件复制到 EFI 系统分区 (ESP) 上的某个位置,例如EFI/syslinux.然后/EFI/syslinux/syslinux.cfg,按照 上的示例,为您的 ISO 文件创建一堆内存磁盘内存选项存储盘页面

答案2

当直接从 ISO 启动时,一旦加载了 linux 内核,它就需要从 ISO 内部获取 squashfs。为此,Linux 内核和脚本需要将 ISO 挂载为循环设备。为此,它需要知道 ISO 文件的路径和文件名。完整路径通常在内核参数中指定,例如iso-scan/filename=/images/ubuntux64.iso

某些 Ubuntu ISO 包含一个/boot/grub/loopback.cfg文件,并且这些文件期望 grub2 变量已预设为 ISO 文件的完整路径。

因此,对于这些 ISO 文件,我们有一种通用的方法来引导它们 - 只需使用 ISO 文件的完整路径设置 grub2 变量并运行该loopback.cfg文件即可。

因此,可以有一个grub2.cfg文件列出文件夹中的所有 ISO 文件/images,并允许用户选择其中一个并启动它。唯一的问题是它们需要包含 /boot/grub/loopback.cfg文件,而很少有非 Ubuntu ISO 会这样做!

如果只有更多的发行版开发人员在他们的 ISO 中包含一个loopback.cfg文件,那么您想要的就可以实现!

http://www.rmprepusb.com/tutorials/136_uefi_ubuntu可能有帮助。还http://rmprepusb.blogspot.co.uk/2017/02/make-generic-grub2-boot-menu-using.html

答案3

是和不是。您可以启动到预启动环境grub、iPXE 等)但这样做实际上只会让事情变得复杂。大多数现场光盘都没有您正在谈论的文件 - 不完全是这样。大多数 iso 混合磁盘所做的类似于此处另一个答案中所描述的内容 - 它们安装一个映像文件,其中真正的可执行文件位于 ram 磁盘中的循环设备上,然后调用该内核。所有这些复杂性的重点应该是与 BIOS 系统的兼容性。如果这不是您所关心的,您可能会更好地从每个 iso 中提取一些文件并直接启动。在 EFI 系统上 - 因为在这种情况下固件就是您的引导加载程序。

所以你需要的是一个 FAT 格式的 U 盘。你可以挂载有问题的iso,找到他们的x86.sfs根映像文件,找到其 initramfs 和内核(您可能需要在 iso 挂载中循环挂载另一个映像)- 就是这样。 Linux 内核是 EFI 可执行文件 - 您不需要引导加载程序,因为固件可以执行您的内核。内核的第一个根文件系统是从 initramfs 映像挂载的。接下来是 .sfs 存档。这就是它的工作原理。

这里有点模糊,但是有一个非常详细的使用 Arch Linux 安装介质执行类似操作的演练这里

(一般情况下,该过程因分布而异)

相关内容