我在 Ubuntu 笔记本电脑上设置了一个运行 Windows XP 的虚拟机。使用virt-manager
GUI 应用程序,我可以在驱动器中插入一张 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 介质的通用类型。
挂载点显然可以是任何您想要的,只要确保它存在即可。