eew*_*nco 4 opensuse syslinux mkisofs uefi
我正在尝试将目前通过 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 是完全错误的机制(意味着这是一个粗暴的黑客,完全没有必要)。但这将涉及完全改造构建,这将花费很多时间。
将不胜感激地收到有关此主题的教程或其他编写良好的页面的链接。我已经查看了 Syslinux 网站和 Rod Smith 的页面,并且在查看其他所有内容时完全筋疲力尽。
我必须使用 xorriso 吗?
不必要。您需要一个 ISO 生成器,它可以将 EFI 系统分区标记为 El Torito 引导映像。mkisofs
可能会使用您提到的选项。isohybrid --uefi
可以在之后应用以使其可从类似硬盘的设备启动。(可能还需要一个 ISOLINUX BIOS 引导映像,这样才能isohybrid
工作。)
主要问题是您需要一个 EFI 系统分区文件,该文件必须是一个 FAT 文件系统映像,其中包含启动操作系统文件所需的程序,这些文件要么位于 FAT 映像中,要么位于封闭的 ISO 9660 文件系统中。
SYSLINUX EFI 软件无法从光学媒体启动。因此,大多数项目为此目的使用 GRUB 2(不是 GRUB legacy)并将其与 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
Run Code Online (Sandbox Code Playgroud)
我知道 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
Run Code Online (Sandbox Code Playgroud)
我假设 SuSE 提供了与 Debian 类似的 GRUB 包,它们配置为grub-mkrescue
运行以生成 BIOS 和/或 EFI 设备。
归档时间: |
|
查看次数: |
9075 次 |
最近记录: |