为什么在本地安装的 ISO 上指定 initrd 时 virt-install 会失败并显示“只读文件系统”?

为什么在本地安装的 ISO 上指定 initrd 时 virt-install 会失败并显示“只读文件系统”?

我在用着virt-安装使用官方 Ubuntu 服务器实时 ISO 创建 Ubuntu 机器。此命令过去一直有效,但在某个时候停止工作(可能是在将主机操作系统从 Ubuntu 18.04 升级到 20.04 之后,但我不确定)。

$ mkdir image-builder-68692987-installer
$ mount ubuntu-21.10-live-server-amd64.iso image-builder-68692987-installer
$ virt-install --name image-builder-68692987 \
    --noreboot --os-variant ubuntu20.04 \
    --disk gitlab-runner-ubuntu-base.qcow2 \
    --disk image-builder-68692987-seed.iso \
    --cdrom ubuntu-21.10-live-server-amd64.iso \
    --boot 'kernel=/var/lib/libvirt/images/gitlab-runner/image-builder-68692987-installer/casper/vmlinuz,initrd=/var/lib/libvirt/images/gitlab-runner/image-builder-68692987-installer/casper/initrd,kernel_args=autoinstall console=ttyS0' \
    --vcpus=4 \
    --ram=4096 \
    --network default \
    --graphics none

输出:

WARNING  CDROM media does not print to the text console by default, so you likely will not see text install output. You might want to use --location. See the man page for examples of using --location with CDROM media

Starting install...
ERROR    internal error: child reported (status=125): unable to open 
  /var/lib/libvirt/images/gitlab-runner/image-builder-68692987-installer/casper/initrd: 
  Read-only file system
Domain installation does not appear to have been successful.

因此,出于某种原因,它会抱怨它initrd位于只读文件系统上。这显然是正确的,因为它指向通过回送设备安装的 Ubuntu ISO — 但为什么它会认为它需要写访问权限呢?

答案1

要安装某些东西,您必须将其写出来,如果您正在实时启动,请确保您正在安装到 ramdisk。但是,如果您将 ISO 安装为文件夹(如您的情况),则 ISO 是只读的。如果要添加到 ISO 映像,则必须重建映像以添加新文件。

相关内容