xorriso 图像重制版“无法找到包含实时文件系统的介质”Ubuntu 22.04

xorriso 图像重制版“无法找到包含实时文件系统的介质”Ubuntu 22.04

不幸的是,我找不到针对 ubuntu21.10或 的答案22.04

我正在尝试重新制作 ubuntu,22.04以实现使用 cloud-init 自动安装的目的。对于以下示例,我“只是”提取 iso 并重新打包xorriso(我尝试过 apt 版本V1.5.2和最新版本V1.5.4)。无论我尝试什么,生成的 ISO 都会通过 grub 并出现“无法找到包含实时文件系统的介质”的错误。

以下是我采取并收到此错误的(通用)确切步骤:

wget https://releases.ubuntu.com/22.04.1/ubuntu-22.04.1-live-server-amd64.iso
mkdir -p /mnt/tmp
mount -t iso9660 -o loop *.iso /mnt/tmp
mkdir -p ./iso
rsync -a /mnt/tmp/* ./iso/

# These results are appended to my xorriso image creation command bellow.
xorriso -indev ubuntu-22.04.1-live-server-amd64.iso -report_system_area as_mkisofs

xorriso -as mkisofs \
-V 'Ubuntu-Server 22.04.1 LTS amd64' \
--modification-date='2022080916483300' \
--grub2-mbr --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt:'ubuntu-22.04.1-live-server-amd64.iso' \
--protective-msdos-label \
-partition_cyl_align off \
-partition_offset 16 \
--mbr-force-bootable \
-append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b --interval:local_fs:2871452d-2879947d::'ubuntu-22.04.1-live-server-amd64.iso' \
-appended_part_as_gpt \
-iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7 \
-c '/boot.catalog' \
-b '/boot/grub/i386-pc/eltorito.img' \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
--grub2-boot-info \
-eltorito-alt-boot \
-e '--interval:appended_partition_2_start_717863s_size_8496d:all::' \
-no-emul-boot \
-boot-load-size 8496 \
-o "Ubuntu.iso" \
./iso/

导致 ISO 启动错误Unable to find a medium containing a live filesystem

report_system_area as_mkisofs运行结果V1.5.2如上所示:

xorriso -indev ubuntu-22.04.1-live-server-amd64.iso -report_system_area as_mkisofs
xorriso 1.5.2 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE :     803 nodes read in 1 seconds
libisofs: NOTE : Found hidden El-Torito image for EFI.
libisofs: NOTE : EFI image start and size: 717863 * 2048 , 8496 * 512
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'ubuntu-22.04.1-live-server-amd64.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito , MBR protective-msdos-label grub2-mbr cyl-align-off GPT
Media summary: 1 session, 720153 data blocks, 1407m data, 73.9g free
Volume id    : 'Ubuntu-Server 22.04.1 LTS amd64'
-V 'Ubuntu-Server 22.04.1 LTS amd64'
--modification-date='2022080916483300'
--grub2-mbr --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt:'ubuntu-22.04.1-live-server-amd64.iso'
--protective-msdos-label
-partition_cyl_align off
-partition_offset 16
--mbr-force-bootable
-append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b --interval:local_fs:2871452d-2879947d::'ubuntu-22.04.1-live-server-amd64.iso'
-part_like_isohybrid
-iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7
-c '/boot.catalog'
-b '/boot/grub/i386-pc/eltorito.img'
-no-emul-boot
-boot-load-size 4
-boot-info-table
--grub2-boot-info
-eltorito-alt-boot
-e '--interval:appended_partition_2_start_717863s_size_8496d:all::'
-no-emul-boot
-boot-load-size 8496
-isohybrid-gpt-basdat

V1.5.4

xorriso -indev ubuntu-22.04.1-live-server-amd64.iso -report_system_area as_mkisofs
GNU xorriso 1.5.4.pl02 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE :     803 nodes read in 1 seconds
libisofs: NOTE : Found hidden El-Torito image for EFI.
libisofs: NOTE : EFI image start and size: 717863 * 2048 , 8496 * 512
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'ubuntu-22.04.1-live-server-amd64.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito , MBR protective-msdos-label grub2-mbr cyl-align-off GPT
Media summary: 1 session, 720153 data blocks, 1407m data, 73.9g free
Volume id    : 'Ubuntu-Server 22.04.1 LTS amd64'
-V 'Ubuntu-Server 22.04.1 LTS amd64'
--modification-date='2022080916483300'
--grub2-mbr --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt:'ubuntu-22.04.1-live-server-amd64.iso'
--protective-msdos-label
-partition_cyl_align off
-partition_offset 16
--mbr-force-bootable
-append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b --interval:local_fs:2871452d-2879947d::'ubuntu-22.04.1-live-server-amd64.iso'
-appended_part_as_gpt
-iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7
-c '/boot.catalog'
-b '/boot/grub/i386-pc/eltorito.img'
-no-emul-boot
-boot-load-size 4
-boot-info-table
--grub2-boot-info
-eltorito-alt-boot
-e '--interval:appended_partition_2_start_717863s_size_8496d:all::'
-no-emul-boot
-boot-load-size 8496

输出xorriso根据版本而不同,我已经尝试了两个版本以及其他几个版本。

我也尝试按照这里概述的方式提取 efi 和 mbr,但出现了同样的错误:重新制作 Ubuntu 20.10 的安装映像

这可能是一个简单的更正,但我一直在绞尽脑汁,所以任何帮助我 100% 感激。遗憾的是,除了一些似乎对我不起作用的解决方案外,有关此问题的所有信息似乎都是预先21.10基于 ISOLinux 的。我将在这里说明,我不想22.04使用 ISOLinux 重新打包以使其工作,但我需要一种使用受支持的 iso 执行此操作的方法。

======= 更多信息 =======

经过进一步的故障排除后,我已确定(感谢下面的有益评论)这正是它失败的地方在启动过程中。问题似乎是casper-premount无法检测到可安装映像,并且在启动时默默失败这里。 我相信是默默失败的特定脚本。可能值得注意的是,我可以/cdrom从内部挂载 rootfsinitramfs而不会出现问题/dev/sr0

答案1

抱歉。这本应是评论,而不是答案。但我找不到删除它的方法:

同时,我在 Debian 11 上尝试使用 22.04 的 /casper/initrd 来 unmkinitramfs。没有成功。它解压了一些处理器固件,然后出错了。所以如果你找到一种方法来获取 initrd 中的 100+ MB,我会很有兴趣了解它。(发邮件至[电子邮件保护]如果它变得很长。)

现在它是一个答案,我添加信息,我是 xorriso 的开发人员,并且我相信显示的 xorriso 参数是重新打包 Ubuntu 22.04 所需要的。

答案2

我要先承认,我确实不太清楚我是如何解决这个问题的。如果有人比我了解得更多,或者可以详细说明,请这样做,或者哪​​怕只是指出如何正确完成这项工作的良好文档,我也会非常感激。

我已经成功构建了一个 GitLab 运行器来提取和重新打包 ubuntu 22.04 ISO,cloud-init它似乎运行良好。我通过引用这个项目,并删除一些isolinux位以使其成为标准支持的图像。您可以在所述项目中看到几个主要差异,包括在执行构建时指定语言环境,xorriso 命令本身(我成功地替换了所有的isolinux位),并且grub 菜单配置

相关内容