genisoimage和UEFI

时间:2015-08-05 11:29:31

标签: debian kubuntu uefi iso-image

如何在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镜像。对此有何解决方法?

2 个答案:

答案 0 :(得分:2)

显然,Mondo或genisoimage发生了不相容的变化。 The problem was reported, but the provided wrapper-workaround got a bit mangled by the 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

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

答案 1 :(得分:1)

如果您在Ubuntu机器上执行apt source genisoimage,并在diff中查看,您会发现它们已在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>