自定义 22.04 服务器 iso 导致“无法找到包含实时文件系统的介质”

自定义 22.04 服务器 iso 导致“无法找到包含实时文件系统的介质”

我试图制作一个自定义的 22.04 iso,它可以自动使用 cloud init 安装。但是,在通过 grub 之后,initramfs 将无法找到文件系统。我想从映像中删除我的 cloudinit 和自定义更改,以查看它们是否导致了问题,但我可以轻松地复制它,而无需对标准 22.04 服务器映像进行任何更改:

# Extract the contents of the official iso
7z -y x ubuntu-22.04.3-live-server-amd64.iso -osource-files 
mv source-files/\[BOOT\]/ BOOT  # take out the mbr and efi from the image
# Build new iso from old iso
sudo xorriso -outdev Custom.iso \
  -map source-files / -- -volid "Shield 1.1 Ubuntu Remix amd64" \
  -boot_image grub grub2_mbr=BOOT/1-Boot-NoEmul.img \
  -boot_image any partition_table=on \
  -boot_image any partition_cyl_align=off \
  -boot_image any partition_offset=16 \
  -boot_image any mbr_force_bootable=on -append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b BOOT/2-Boot-NoEmul.img \
  -boot_image any appended_part_as=gpt \
  -boot_image any iso_mbr_part_type=a2a0d0ebe5b9334487c068b6b72699c7 \
  -boot_image any cat_path='/boot.catalog' \
  -boot_image grub bin_path='/boot/grub/i386-pc/eltorito.img' \
  -boot_image any platform_id=0x00 \
  -boot_image any emul_type=no_emulation \
  -boot_image any load_size=2048 \
  -boot_image any boot_info_table=on \
  -boot_image grub grub2_boot_info=on \
  -boot_image any next \
  -boot_image any efi_path=--interval:appended_partition_2:all:: \
  -boot_image any platform_id=0xef \
  -boot_image any emul_type=no_emulation \
  -boot_image any load_size=4349952

我遵循了这里的指南:https://help.ubuntu.com/community/LiveCDCustomization#Creating_the_ISO_Image

我还在上面的部分中看到您需要更新 md5sum,因此我也尝试过这样做,但结果类似。

知道为什么文件系统无法被检测到吗?

答案1

我找到了问题的根源,尽管我不完全了解导致该问题的具体原因。

安装 ubuntu iso 文件后,我将cp文件从目录中移到我自己的目录中,在该目录中我将构建 iso。由于我不明白的原因,这cp就是问题的原因。

相反,您必须rsync -av并且 这样才能生成一个工作图像。我不确定 和 的具体区别是什么cprsync但希望这对将来的某些人有所帮助。

相关内容