4

如何在 Debian Jessie 机器上创建 UEFI ISO 映像?

当我在我的 Kubuntu 上使用 follow 命令时,一切正常

genisoimage -quiet -V "my-amd64" -J -R -r -l -cache-inodes -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 -o my-amd64.iso my-amd64/

isohybrid --uefi my-amd64.iso

但是当我在 Debian Jessie 上运行此命令时,出现以下错误:

genisoimage: option '-e' is ambiguous; possibilities: '--eltorito-boot' '--exchange' '--ethershare' '--exclude-list' '--exclude' '--eltorito-catalog' '--eltorito-alt-boot'
Usage: genisoimage [options] -o file directory ...

似乎 Kubuntu (15.04) 上的 genisoimage 和 Debian Jessie 没有相同的选项。在 Debian 上,genisomage 不支持 UEFI。

两个系统上的版本相同: genisoimage 1.1.11

但我必须在 Debian Jessie 上创建 ISO 映像。有什么解决方法吗?

4

2 回答 2

3

显然 Mondo 或 genisoimage 存在不兼容的变化。该问题已报告,但提供的包装解决方法有点被 wiki 破坏。根据该语法,使用包装器可以解决所有问题。

这是我所做的:

准备包装:

mv /usr/bin/genisoimage /usr/bin/genisoimage.dist
YourFavoriteTextEditor /usr/bin/genisoimage

复制/粘贴包装:

#!/bin/bash

options=() # the buffer array for the parameters

while [[ $1 ]]
do
  case "$1" in
   -e)
     options+=("--eltorito-boot")
     shift
     ;;
   *)
     options+=("$1")
     shift
     ;;
  esac
done

echo Calling genisoimage.dist "${options[@]}"
eval exec /usr/bin/genisoimage.dist "${options[@]}"

使包装器可执行:

chmod 755 /usr/bin/genisoimage

从此过上幸福的生活。:-)

于 2016-02-13T17:36:34.980 回答
1

如果您在 Ubuntu 机器上执行 apt source genisoimage 并查看差异,您会发现他们已将重要的补丁集添加到 cdrkit 以获得此功能。您可以尝试向后移植更改。或者,如果您为文件安装了 syslinux-utils,您可以使用似乎具有此功能的 xorriso。然后命令将是。

xorriso -as mkisofs \
  -o <output> \
  -isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin \
  -c isolinux/boot.cat \
  -b isolinux/isolinux.bin \
   -no-emul-boot -boot-load-size 4 -boot-info-table \
  -eltorito-alt-boot \
  -e isolinux/efiboot.img \
   -no-emul-boot \
   -isohybrid-gpt-basdat \
   -r -J \
   <CD_root>
于 2018-11-02T23:43:15.170 回答