我的 genisoimage 命令中使用的某些参数无法生成可启动的 ISO 映像

我的 genisoimage 命令中使用的某些参数无法生成可启动的 ISO 映像

我在 Ubuntu 22.04 上,我正在尝试从(可启动)Debian ISO 中提取所有文件,然后重新生成可启动的 ISO 映像。下面您可以看到我发出的命令。由于某些未知原因,生成的 ISO 映像无法启动。有人能帮我理解原因吗?谢谢。

apt update && apt -y install xorriso genisoimage

wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.5.0-amd64-netinst.iso

xorriso -osirrox on -indev debian-11.5.0-amd64-netinst.iso -extract / isofiles/

genisoimage -r -J -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o debian-11-unattended.iso isofiles

正如您所见,我没有对 ISO 映像内的文件做任何修改,因此错误最有可能出现在最新命令上。

根据这篇文章:

https://unix.stackexchange.com/questions/572751/how-to-make-a-reproducible-iso-file-with-mkisofs-genisoimage

我也尝试过这个命令:

mkisofs -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R -v -T -V 'd-live 11.5.0 xf amd64' "isofiles/" > file.iso

但在这种情况下生成的 ISO 是不可启动的:https://ibb.co/GstvTvR

我省略了参数“-可重现日期=20221009“因为它还没有被接受。产生的错误是:“genisoimage:哎呀,我找不到启动映像‘producible-date=20221009’并且制作的ISO只有32k。

上述命令生成的 debian ISO 文件的内部结构如下:

# isoinfo -d -i debian-11-unattended.iso

CD-ROM is in ISO 9660 format
System id: LINUX
Volume id: d-live 11.5.0 xf amd64
Volume set id: 
Publisher id: 
Data preparer id: 
Application id: GENISOIMAGE ISO 9660/HFS FILESYSTEM CREATOR (C) 1993 E.YOUNGDALE (C) 1997-2006 J.PEARSON/J.SCHILLING (C) 2006-2007 CDRKIT TEAM
Copyright File id: 
Abstract File id: 
Bibliographic File id: 
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 224756
El Torito VD version 1 found, boot catalog is in sector 1020
Joliet with UCS level 3 found
Rock Ridge signatures version 1 found
Eltorito validation header:
    Hid 1
    Arch 0 (x86)
    ID ''
    Key 55 AA
    Eltorito defaultboot header:
        Bootid 88 (bootable)
        Boot media 0 (No Emulation Boot)
        Load segment 0
        Sys type 0
        Nsect 4
        Bootoff 3FD 1021

问题在于缺少 EFI 启动映像:USB 驱动器的 EFI 系统分区、CD-ROM 的 EFI El Torito 启动映像。

解决方案是:

orig_iso=debian-live-11.5.0-amd64-xfce.iso
new_files=debian-live-11.5.0-amd64-xfce
new_iso=debian-live-11.5.0-amd64-mod-xfce.iso
mbr_template=isohdpfx.bin

# Extract MBR template file to disk
dd if="$orig_iso" bs=1 count=432 of="$mbr_template"

xorriso -as mkisofs \
   -r -J --joliet-long \
   -V 'd-live 11.5.0 xf amd64' \
   -o "$new_iso" \
   -isohybrid-mbr "$mbr_template" \
   -partition_offset 16 \
   -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 -isohybrid-apm-hfsplus \
   "$new_files"

相关内容