目前,我正在尝试使用 xorriso 构建 Ubuntu 24.04,但失败并出现以下错误输出。
我使用的Ubuntu是每日构建版本:https://cdimage.ubuntu.com/daily-live/current/noble-desktop-amd64.iso
我已将 xorriso 更新至最新版本:xorriso-1.5.6-5.el7.x86_64
我不熟悉 xorriso,所以如果有人能帮助我,我将不胜感激。
libisofs: MISHAP : Cannot apply boot image patching outside of ISO 9660 filesystem
...
xorriso : NOTE : -return_with SORRY 32 triggered by problem severity MISHAP
Unmount directory /local/scratch/tmp/isobuild_gr5ufnyf/mp
Executing: sudo umount /local/scratch/tmp/isobuild_gr5ufnyf/mp
Executing: sudo rm -rf /local/scratch/tmp/isobuild_gr5ufnyf
Traceback (most recent call last):
File "./buildiso.py", line 432, in <module>
repackiso(inputiso, outputiso, isolinuxFileToUse, grubFileToUse, kickstartFileToUse, distro, bootmode)
File "./buildiso.py", line 343, in repackiso
generateUEFIImage(inputiso, outputiso, distro, td, bootCat, isolinuxBin, efiImg, eltoritoImg)
File "./buildiso.py", line 204, in generateUEFIImage
execcmd(imgGenerateCmd)
File "./buildiso.py", line 69, in execcmd
subprocess.check_call(cmd, shell=True)
File "/usr/lib64/python3.6/subprocess.py", line 311, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'xorriso -as mkisofs -r -V 'ubuntu24044 MODIF (EFIBIOS)' -o /nfs_build_isos/origin_images/ubuntu24044_x86-64_xenrtinst.iso --grub2-mbr /local/scratch/tmp/isobuild_gr5ufnyf/boot_hybrid.img -partition_offset 16 --mbr-force-bootable -append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b /local/scratch/tmp/isobuild_gr5ufnyf/efi.img -appended_part_as_gpt -iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7 -b boot/grub/i386-pc/eltorito.img -c boot.catalog -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e '--interval:appended_partition_2:::' -no-emul-boot --grub2-boot-info -boot-load-size 10140 /local/scratch/tmp/isobuild_gr5ufnyf/repack/
' returned non-zero exit status 32.
答案1
编辑:
问题在于选项 -grub2-boot-info 应该在选项 -eltorito-alt-boot 之前给出,它将参数范围切换到第二个启动映像。您的 xorriso 运行将其应用于带有 EFI 启动映像的附加分区。
尝试:
... -b boot/grub/i386-pc/eltorito.img -c boot.catalog -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info -eltorito-alt-boot -e '--interval:appended_partition_2:::' -no-emul-boot ...
在我发现您帖子中的 xorriso 参数之前,我的回答已经过时了:
在不知道 xorriso 参数并且没有看到 xorriso 的其他消息的情况下,我只能说,如果将启动信息表修补到 El Torito BIOS 启动映像中,而该启动映像不是 ISO 9660 文件系统中的文件而是附加分区,就会发生此错误。
在 noble-desktop-amd64.iso 中,BIOS 启动映像是一个名为 /boot/grub/i386-pc/eltorito.img 的文件,而 EFI 启动映像是一个附加分区,不需要使用启动信息表进行修补。因此不清楚为什么您的 xorriso 运行被指示修补分区。
使用 xorriso 的重新打包建议进行测试没有发现错误:
xorriso-1.5.6 -indev noble-desktop-amd64.iso -outdev test.iso -boot_image any replay -changes_pending yes