我在Ubuntu笔记本电脑上build立了一个运行Windows XP的虚拟机。 使用virt-manager
GUI应用程序,我可以在驱动器中插入一张CD,然后转至详细信息→IDE CDROM 1,然后单击“ Connect
button。 然后,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/sr0
replace成主机上的文件名
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。
挂载点可以是任何你想要的显然,只要确保它存在。