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

我在Ubuntu笔记本电脑上build立了一个运行Windows XP的虚拟机。 使用virt-manager GUI应用程序,我可以在驱动器中插入一张CD,然后转至详细信息→IDE CDROM 1,然后单击“ Connectbutton。 然后,CD在我的虚拟机中可用。

我怎么能通过命令行来做同样的事情? 很显然,我希望能够从命令行断开连接。

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

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

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

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

    当你想再次指向一个ISO镜像时,你需要把/dev/sr0replace成主机上的文件名

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

    文档build议使用virsh update-device ,但是创build一个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 

    使用virsh的qemu-monitor-command将popup和更改命令传递给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 

    所以在我的情况下,我对drive-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 # 

    关于上面的“信息块”命令,调用它的正确方法是这样的:

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

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

    mount -t iso9660 / dev / sr0 / media

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

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