xorriso 将原始图像转换为 ISO 失败(文件太大)

xorriso 将原始图像转换为 ISO 失败(文件太大)

正如标题所述,我正在尝试将原始图像文件转换为 iso 图像。

我在做这件事的时候用了这些作为参考。

https://www.turnkeylinux.org/blog/convert-vm-iso

https://manpages.debian.org/cgi-bin/man.cgi?sektion=1&query=xorrisofs&apropos=0&manpath=sid&locale=en

简要(tldr:)(如果有帮助的话,底部有一个扩展背景)

我从 qcow2 VM 创建了一个原始映像,并将其作为环回设备安装到

virtMachineIMG.mount

当我运行以下命令时

xorrisofs -v -J -r -V -o ./MyCentos_img.iso ./virtMachineIMG.mount/

最后出现错误,图像太大,无法写入。

有人知道我该如何解决这个问题吗?

我的原始图像文件大小为 8GB。我不确定到底使用了多少,或者如何安全地将磁盘“缩小”到仅与其中的数据大小相同。

我的准备工作是否缺少了某个步骤?我是否应该使用 qemu 创建另一个磁盘,然后将原始图像刻录到该磁盘上?

我应该注意我的原始图像(原始 qcow2 文件)使用了 LVM,这有什么区别吗?

我们非常接受所有帮助,并非常感谢。

大卫。

附言:如果您需要详细输出的更多详细信息,只需询问,我可以随时重新运行 xorrisofs - 它需要大约 2 个小时才能运行,这是正常的吗?

___________ 背景 : ____________

我已经在虚拟机主机:Debian 客户机:Centos 中的本地 PC 上设置了一个测试系统,使用:虚拟机管理器内的 Qemu/KVM。

由于测试系统的性质,我需要“从源代码安装”并设置所有必需的部分(Postgres,Tomcat......等等,等等......)。

一切进展顺利,同事们对我的工作很满意。不过,为了不让他们来我的办公室,我建议看看我是否可以将其制作成 ISO,这样他们就可以在任何地方轻松运行。

理由:

  • 他们可以从任何电脑启动该系统。
  • 它可以更轻松地移动到另一台服务器(根据需要)。
  • 我不想麻烦我的同事安装任何东西,只需将带有 ISO 的 USB 驱动器插入您的电脑,然后直接从它启动。
  • 也使得平台的任何演示都变得更加容易。
  • 可以用它在我们的一台服务器中创建一个 VM 以进行扩展测试(我假设 ISO 比 raw 或 qcow2 更容易实现这一点)

显然,如果有主要平台的 rpm 或 deb(不需要从源代码安装),那么我只需创建一个 CentOS ISO,其中包含指向所需 rpm 的链接即可开始安装。

我还希望我的同事能够访问平台内的某些“样本数据”,这样我就能确保我们都在同一个基础上开展工作。

答案1

感谢您乘坐 xorriso。

由于不知道确切的错误信息,我只能猜测一下。如果生成的 ISO 映像不适合本地磁盘,则可能会发生这种拒绝。2 小时的运行时间指向 ./virtMachineIMG.mount 内的目录循环。如果是这种情况,那么“du”和“find”等程序也应该会显示奇怪的重复输出。

无论如何,您的 xorriso 运行缺少适合 ISO 文件系统的启动设备。由于您似乎想要从 USB 启动一台真正的机器,因此它将需要一个 MBR 和一个可能的 GUID 分区表。此外,ISO 文件系统必须包含在真正的机器上运行操作系统所需的所有文件,并且通过 MBR 或 GPT 启动的引导加载程序必须知道如何启动您的操作系统。(整个 ISO 通常称为“Live CD”。)

如果您的虚拟系统已经通过引导加载程序 GRUB2 启动,那么您距离这个目标就不远了。程序“grub-mkrescue”负责引导加载程序软件并编写专家 xorriso 选项。请参阅https://www.gnu.org/software/grub/manual/html_node/Making-a-GRUB-bootable-CD_002dROM.html

剩下的专家任务是从虚拟机磁盘映像中的“grub.cfg”文件中派生出“grub-mkrescue”的“grub.cfg”文件。

GRUB2 的替代方案是带有 isohybrid 的 ISOLINUX。请参阅 http://www.syslinux.org/wiki/index.php?title=Isohybrid 许多 Linux 发行版在同一个 ISO 映像中使用 ISOLINUX 作为 BIOS 固件,并使用 GRUB2 作为 EFI 固件。


xorrisofs -v -J -r -V -o ./MyCentos_img.iso ./virtMachineIMG.mount/

此命令行是错误的,因为选项 -V 要求将字符串作为卷 ID(又称磁盘标签)。它将使用选项 -o,将“./MyCentos_img.iso”保留为输入路径(类似于“./virtMachineIMG.mount”的预期路径)。

如果“./MyCentos_img.iso”尚不存在,则运行将失败,并显示

xorriso : FAILURE : Cannot determine attributes of source file './MyCentos_img.iso' : No such file or directory

否则,您会在终端上输出大量二进制数据(因为如果没有识别出选项 -o,则 stdout 是默认设置)。

相关内容