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


22

我已经在Ubuntu笔记本电脑上设置了运行Windows XP的虚拟机。使用virt-managerGUI应用程序,我可以将CD插入驱动器,然后转到Details→IDE CDROM 1,然后单击Connect按钮。然后,该CD在我的虚拟机中可用。

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

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

Answers:


23

如果在创建虚拟机时未定义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

看起来就是我想要的;我将尽快验证(目前无法验证)。无论如何谢谢你。
ΤΖΩΤΖΙΟΥ

是的,就是这样。您还知道如何拆卸设备吗?我尝试了virsh detach-disk testbed hdc,但是我得到了error: unsupported configuration: This type of device cannot be hot unplugged
ΤΖΩΤΖΙΟΥ

IDE设备确实不可热插拔。detach-disk对于已停止的虚拟机不起作用。要完全删除CD,您需要virsh edit testbed在机器停止时使用它,并删除disk定义到cdrom 的元素。如果您不是vi编辑专家,请export EDITOR=nano在执行edit命令之前执行。
wigy 2012年

顺便说一句,如果您认为我的答案对您有所帮助,请接受它作为答案。
wigy 2012年

我会接受你的回答。问题是,如果设备已连接到测试床VM,并且我在未插入光盘的情况下启动了测试床,则测试床将不会出现,因此我需要打开虚拟管理器GUI并首先断开设备的连接。这就是为什么在我的问题中我说过我也想要一种断开设备的方法。
ΤΖΩΤΖΙΟΥ

4

使用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

因此,就我而言,我对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 #

“ info block”命令为我导致错误:“错误:内部错误无法解析json info块:词法错误:json文本中的无效char。”
cg。

似乎语法必须已经从我下面改变了。我发誓它在我写的时候就起作用了。我尝试了Joe Huss的答案建议的语法,现在可以使用了。我已经更新了答案。
基思·特姆布雷

1

关于上面的“信息块”命令,正确的调用方式如下:

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

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

0

我正在通过的蓝光播放器无法正常工作,除非我以其他方式通过它。根据本文,这是我的操作方法。

https://lime-technology.com/forums/topic/33851-blu-ray-dvd-rom-passthrough/

查找SCSI#:

lsscsi

[root@kvmatrix ~]# lsscsi
[#:0:0:0]    cd/dvd  HL-DT-ST BD-RE  WH14NS40  1.03  /dev/sr0

编辑域XML并添加以下内容:

注意:将scsi_host#替换为lssci中的#

<controller type='scsi' index='0' model='virtio-scsi'/>
    <hostdev mode='subsystem' type='scsi'>
      <source>
        <adapter name='scsi_host#'/>
        <address type='scsi' bus='0' target='0' unit='0'/>
      </source>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </hostdev>

我不得不强迫xml被接受,因为virsh edit给出了错误,只需按i,然后重新启动vm即可进行测试。


-6

挂载-t iso9660 / dev / sr0 / media

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

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


嗯 这就是我可以在主机中装入CD的方式。好吧,我的错。“如何将cdrom设备连接到kvm / qemu域/ VM?”请注意,此答案完全没有帮助,因此您应该对其进行编辑或删除。
ΤΖΩΤΖΙΟΥ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.