我正在尝试将当前通过BIOS引导的现有自定义USB ISO安装程序映像转换为通过UEFI引导的映像。我使用mkisofs
和isohybrid
制作ISO,它通过ISOLINUX引导。我知道我应该使用这些-eltorito-alt-boot -eltorito-platform 0xEF -eltorito-boot isolinux/efiboot.img
选项来启用UEFI引导,但是我一生中都找不到Google上告诉我从哪里获取难以捉摸的efiboot.img
源文件的页面。每个人都提到它,但每个人都认为您已经拥有它。这是如何建立或获得的?的man
页面mkisofs
没有帮助。我必须使用xorriso
吗?
仅供参考,我试图通过libvirt / kvm / qemu / virt-manager引导它,尽管最终它必须在真实的硬件上引导。开发环境为openSUSE Leap 42.1。无需支持BIOS或多个平台。我宁愿不修改太多现有的构建代码,但至少有一条评论(@mikeserv)表示,ISO完全是错误的机制(这意味着完全是hack,完全没有必要)。但这将涉及彻底修改构建,这将花费大量时间。
将不胜感激地收到指向该主题的教程或其他网页的链接。我已经看过Syslinux网站和Rod Smith的页面,并筋疲力尽地看着其他内容。
我必须使用xorriso吗?
不必要。您需要一个ISO生产者,该生产者可以将EFI系统分区标记为El Torito引导映像。mkisofs
可能与您提到的选项有关。isohybrid --uefi
之后可以应用以使其可从类似硬盘的设备引导。(可能也需要具有ISOLINUX BIOS引导映像,这样才能isohybrid
起作用。)
主要问题是,您需要一个EFI系统分区文件,该文件必须是FAT文件系统映像,并带有必要的程序才能启动操作系统文件,这些文件可以在FAT映像中,也可以包含在封闭的ISO 9660文件系统中。
SYSLINUX EFI软件无法从光学介质启动。因此,大多数项目为此使用GRUB 2(不是GRUB传统),并将其与ISOLINUX BIOS软件结合使用。例如,Debian netinst amd64 ISO的FAT映像很小,只有足够的GRUB大脑可以跳到ISO中的GRUB配置。在一个openSUSE的NET-x86_64的ISO较大。
要检查Debian的EFI设备,请将其安装为ISO,然后将其文件安装/boot/grub/efi.img
为FAT。在内部,您找到了一个文件/efi/boot/bootx64.efi
,该文件经过了程序检查,发现其中strings
包含嵌入式GRUB配置。
search --file --set=root /.disk/info
set prefix=($root)/boot/grub
source $prefix/x86_64-efi/grub.cfg
(memdisk)/boot/grub
我知道FAT映像文件是由GRUB程序创建的mkimage
。该文件/.disk/info
被认为仅存在于Debian ISO中,因此search
可以使用它来查找ISO文件系统。
在SuSE ISO中,FAT映像命名为/boot/x86_64/efi
。它比Debian包含更多的东西。除了EFI引导文件之外,bootx64.efi
还有grub.cfg
我不知道GRUB知识的其他文件。
如果您从头开始进行可启动ISO开发,请考虑通过GRUB程序生成ISO grub-mkrescue
。(那是您真正需要xorriso
的时间,我是其中的开发人员。)
在Debian上,必须为BIOS和x86_64 EFI安装软件包grub-pc
,。在目录树中准备有效负载并运行grub-efi-ia32-bin
grub-efi-amd64-bin
grub-mkrescue -o output.iso my_prepared_dir
我假设SuSE提供与Debian类似的GRUB软件包,这些软件包配置grub-mkrescue
运行以生产BIOS和/或EFI设备。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句