如何将 cdrom 设备连接到 kvm/qemu 域(使用命令行工具)?

如何将 cdrom 设备连接到 kvm/qemu 域(使用命令行工具)?

我在 Ubuntu 笔记本电脑上设置了一个运行 Windows XP 的虚拟机。使用virt-managerGUI 应用程序,我可以在驱动器中插入一张 CD,然后转到“详细信息”→“IDE CDROM 1”,然后单击Connect按钮。然后 CD 便可在我的虚拟机中使用。

我如何通过命令行执行相同操作?显然,我也希望能够断开与命令行的连接。

virsh start testbed注意:我可以使用(testbed 是域/VM 的名称)从命令行启动 VM 。

答案1

如果您在创建虚拟机时未定义 CDROM,则可以通过运行以下命令将设备附加到正在运行的域(虚拟机):

virsh attach-disk testbed /dev/sr0 hdc --type cdrom

如果您已经定义了 CDROM,但它指向 ISO 映像,根据我的经验,您仍然可以运行相同的命令。该hdc部​​分需要与您在testbed虚拟机中的块设备匹配。

当你想再次指向 ISO 映像时,你可以将其替换/dev/sr0为主机上的文件名,例如

virsh attach-disk testbed ~/virtio-win-0.1-22.iso hdc --type cdrom

文档建议使用virsh update-device,但创建如下 XML 定义会更费力:

<disk type='block' device='cdrom'>
  <driver name='qemu' type='raw'/>
  <source dev='/dev/sr0'/>
  <target dev='hdc' bus='ide'/>
  <readonly/>
</disk>

如果您喜欢这种方式,请将类似的内容保存到文件中(例如~/cdrom-real.xml),然后触发:

virsh update-device testbed ~/cdrom-real.xml

答案2

使用 virsh 的 qemu-monitor-command 将弹出和更改命令传递给 qemu。

首先使用“信息块”获取您的 cdrom 的 qemu 设备名称。

virsh # qemu-monitor-command mirage --hmp --cmd "info block"
drive-virtio-disk0: type=hd removable=0 file=/home/daoist/mirage/mirage.qcow2 ro=0 drv=raw encrypted=0
drive-ide0-0-0: type=cdrom removable=1 locked=0 file=/home/daoist/iso/en_windows_7_ultimate_with_sp1_x64_dvd_u_677332.iso ro=1 drv=raw encrypted=0

所以我感兴趣的是驱动器-ide0-0-0。因此,要更改磁盘,请执行以下操作:

virsh # qemu-monitor-command mirage --hmp --cmd "eject drive-ide0-0-0"
virsh # qemu-monitor-command mirage --hmp --cmd "change drive-ide0-0-0 /path/to/new.iso"
virsh #

答案3

关于上面的“info block”命令,正确的调用方式是这样的:

 virsh qemu-monitor-command <domain> --hmp --cmd "info block"

IE

 virsh qemu-monitor-command windows44407 --hmp --cmd "info block"

答案4

安装-t iso9660 /dev/sr0 /media

您可以使用 /dev 目录中为 cdrom 设置的任何设备。此外,/dev/cdrom 是大多数 Linux 系统上正确设备的链接。-t 表示您正在安装的设备类型,iso9660 是 cdrom 介质的通用类型。

挂载点显然可以是任何您想要的,只要确保它存在即可。

相关内容