![从 PXE 映像创建 ISO 映像](https://linux22.com/image/207887/%E4%BB%8E%20PXE%20%E6%98%A0%E5%83%8F%E5%88%9B%E5%BB%BA%20ISO%20%E6%98%A0%E5%83%8F.png)
我有组成我使用的 PXE 映像的自定义文件vmlinuz
。initrd
给定这个 initram 映像,有什么方法可以构建 ISO 等效映像吗?
genisoimage
我从工具中看不出任何明显的东西mkisofs
。我是否错过了一些东西,也许我试图完成的事情没有意义?
答案1
第一个问题是,您要启动 UEFI 还是传统 BIOS 系统?或者也许两者兼而有之?
对于传统 BIOS 系统,您需要一个既能满足 ISO9660 文件系统引导规范 (El Torito) 又能引导 Linux 的引导加载程序,例如操作系统。
您需要为引导加载程序编写一个配置文件,告诉它加载您的vmlinuz
和initrd
并提供任何必要的内核引导选项,然后从引导加载程序、其配置文件vmlinuz
和initrd
.在genisoimage
/mkisofs
阶段,您需要添加一些选项来指示应该使用包含 El Torito 扩展来构建 ISO 映像。
请注意,这将为您提供一个只能作为真实或虚拟 CD/DVD 启动的 ISO 映像。
为了使 ISO 映像在写入 U 盘或其他类似 HDD 的介质时也能正常工作,您需要向映像文件添加另一组结构,这样它也可以被解释为有效的可启动 HDD 映像。这个过程可以被称为isohybrid
流程,以第一个使其成为可能的工具的名称。像现在这样的较新的 ISO 映像创建工具xorriso
具有此内置功能。
对于 UEFI,许多常见的 UEFI 固件实现都将处理 ISO9660 文件系统,因此任何可以加载 Linuxvmlinuz
和initrd
文件的 UEFI 引导加载程序都应该可以工作。您只需将该引导加载程序放置到 ISO 文件系统中,以便引导加载程序文件位于<ISO mountpoint>/EFI/boot/bootx64.efi
(假设您要引导 64 位 x86 系统;对于其他体系结构,UEFI 具有不同的引导加载程序文件名)。
还可以将包含 UEFI 启动文件的 FAT32 文件系统映像嵌入到 ISO 映像中,以满足仅支持 FAT32 文件系统类型但可以从 ISO9660/El Torito 加载的较旧/更严格/简约的 UEFI 实现可启动CD。同样,您的 ISO 映像创建工具将需要一些选项来指定您想要执行此操作,并且您还需要提供 FAT32 文件系统映像。