如何创建 uefi 可引导 ISO?

muk*_*els 8 boot iso uefi

我正在尝试自定义 ubuntu-14.04.2-server-amd64.iso,但我无法使其可启动 uefi。

首先我尝试使用原始iso文件:

dd if=/path/to/iso/ubuntu-14.04.2-server-amd64.iso of=/dev/sdc bs=16M
Run Code Online (Sandbox Code Playgroud)

此时一切都很好 - 我可以在 UEFI 中启动闪存。

我已将 iso 内容提取到 /path/to/tmp 文件夹,然后我尝试重新创建 iso(现在未修改),但新的 iso 不适用于 uefi。

我正在使用此命令重新创建 iso:

mkisofs -r -V "Custom Ubuntu Install CD" -cache-inodes \
        -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot \
        -o /path/to/tmp.iso /path/to/tmp
Run Code Online (Sandbox Code Playgroud)

然后我使用相同的 dd 命令将新的 iso 放在 USB 上。什么是使其 uefi 可启动的正确命令?

sol*_*iCe 11

你可以使用xorriso。我不记得为什么,但我认为 mkisofs 不可能做到这一点。

尝试:

xorriso -as mkisofs \
  -isohybrid-mbr /usr/lib/syslinux/mbr/isohdpfx.bin \
  -c isolinux/boot.cat \
  -b isolinux/isolinux.bin \
  -no-emul-boot \
  -boot-load-size 4 \
  -boot-info-table \
  -eltorito-alt-boot \
  -e boot/grub/efi.img \
  -no-emul-boot \
  -isohybrid-gpt-basdat \
  -o /path/to/tmp.iso \
  /path/to/tmp
Run Code Online (Sandbox Code Playgroud)

这将产生混合 MBR/EFI iso

http://www.syslinux.org/wiki/index.php/Isohybrid

  • 我必须安装 isolinux 包才能获得 isohdpfx.bin,它在不同的路径下 - /usr/lib/ISOLINUX/isohdpfx.bin。谢谢! (4认同)
  • 谢谢你飞 xorriso。从 SYSLINUX 的角度来看,只要不使用 SYSLINUX 安装中的文件替换 ISO 中的 ISOLINUX 文件,重新使用 ISO 映像的前 512 个字节会更安全。通过以下方式获取 MBR 模板:`dd if=ubuntu-14.04.2-server-amd64.iso bs=512 count=1 of=my_isohdpfx.bin` 在 xorriso 中提及它,运行方式为:`-isohybrid-mbr my_isohdpfx.bin` (3认同)