我正在尝试创建自定义 Ubuntu 16.04 LTS 服务器安装介质,并且一直遵循此处的说明https://help.ubuntu.com/community/InstallCDCustomization
当我尝试运行命令时:
# Hybrid/UEFI
IMAGE=jeremy-uefi.iso
BUILD=/opt/cd-image/
xorriso -as mkisofs -r -V "Jeremys" \
-J -l -b isolinux/isolinux.bin \
-c isolinux/boot.cat -no-emul-boot \
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
-eltorito-alt-boot \
-e boot/grub/efi.img \
-isohybrid-gpt-basdat \
-boot-load-size 4 -boot-info-table \
-o $IMAGE $BUILD
我得到以下信息:
xorriso 1.4.2 : RockRidge filesystem manipulator, libburnia project.
Drive current: -outdev 'stdio:/opt/jeremy-uefi.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 31.8g free
Added to ISO image: directory '/'='/opt/cd-image'
xorriso : UPDATE : 2963 files added in 1 seconds
xorriso : UPDATE : 2963 files added in 1 seconds
libisofs: FAILURE : Invalid image size 2368 Kb. Must be one of 1.2, 1.44or 2.88 Mb
libisofs: FAILURE : Trying to use an invalid file as boot image
xorriso : FAILURE : Could not attach El-Torito boot image to ISO 9660 image
xorriso : NOTE : -return_with SORRY 32 triggered by problem severity FAILURE
我已将问题追溯到 boot/grub/efi.img 映像。然而,经过一整天的斗争,我还是没能摆脱它。
显而易见的解决方案是创建一个新的 2.88 Mb 的 fat16 文件系统,并将 efi.img 的内容复制到其中,并替换原始文件。但这引出了一个问题,原始的 Ubuntu CD 是如何制作的?
答案1
引用托马斯·施密特从他回答问题的评论中可以看出:
-boot-load-size 4 -boot-info-table
必须写在之前-eltorito-alt-boot
,因为它们的目的是修改 的选项-b
。之后-eltorito-alt-boot
就是领域-e
。您需要另一个选项-no-emul-boot
(与 一样-b
)以避免出现有关软盘模拟大小的错误消息。但请勿将-boot-load-size
或-boot-info-table
用于 EFI 映像。