¿Cómo conectar un dispositivo cdrom a un dominio kvm / qemu (usando herramientas de línea de comandos)?

22

He configurado una máquina virtual con Windows XP en mi computadora portátil Ubuntu. Utilizando la virt-manageraplicación GUI, puedo insertar un CD en mi unidad e ir a Detalles → IDE CDROM 1 y hacer clic en el Connectbotón. Entonces el CD está disponible en mi máquina virtual.

¿Cómo puedo hacer lo mismo a través de la línea de comando? Obviamente, me gustaría poder desconectarme de la línea de comando también.

Nota: Puedo iniciar la VM desde la línea de comando usando virsh start testbed(testbed es el nombre del dominio / VM).

ΤΖΩΤΖΙΟΥ
fuente

Respuestas:

23

Si no definió ningún CDROM cuando creó su máquina virtual, puede conectar el dispositivo incluso a un dominio en ejecución (máquina virtual) ejecutando el siguiente comando:

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

Si ya definió un CDROM, pero apuntó a una imagen ISO, en mi experiencia, aún puede ejecutar el mismo comando. La hdcparte debe coincidir con el dispositivo de bloque que tiene en la testbedmáquina virtual.

Cuando desee volver a apuntar a una imagen ISO, reemplace /dev/sr0el nombre de archivo en el host, algo así como

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

La documentación sugiere usar virsh update-device, pero es más laborioso crear una definición XML algo así como:

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

Si te gusta esto, guarda algo así en un archivo (por ejemplo ~/cdrom-real.xml) y luego dispara:

virsh update-device testbed ~/cdrom-real.xml
wigy
fuente
Parece que es lo que quiero; Lo verificaré lo antes posible (no puedo en este momento). Gracias de todas formas.
ΤΖΩΤΖΙΟΥ
Si esto es. ¿Sabes también cómo desconectar el dispositivo? Lo intenté virsh detach-disk testbed hdc, pero lo conseguí error: unsupported configuration: This type of device cannot be hot unplugged.
ΤΖΩΤΖΙΟΥ
Los dispositivos IDE no son realmente conectables en caliente. detach-diskno funciona para una máquina virtual detenida. Para eliminar el CD por completo, debe usarlo virsh edit testbedmientras la máquina está detenida y eliminar el diskelemento que define al cdrom. Si no es un vieditor experto, ejecute export EDITOR=nanoantes de ejecutar el comando de edición.
wigy
Por cierto, si sientes que mi respuesta te ayudó, acéptala como respuesta.
wigy
Aceptaré tu respuesta. La cuestión es que, si el dispositivo está conectado a la máquina virtual de banco de pruebas y empiezo a usar el banco de pruebas sin un disco insertado, el banco de pruebas no aparecerá y necesito abrir la GUI del administrador virtual y desconectar primero el dispositivo. Es por eso que en mi pregunta dije que también quería una forma de desconectar el dispositivo.
ΤΖΩΤΖΙΟΥ
4

Use qemu-monitor-command de virsh para pasar la expulsión y cambiar los comandos a qemu.

Primero use el "bloque de información" para obtener el nombre del dispositivo de qemu para su cdrom.

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

Entonces, en mi caso, estoy interesado en drive-ide0-0-0 . Entonces, para cambiar el disco, haga esto:

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 #
Keith Twombley
fuente
El comando "bloque de información" produce un error para mí: "error: error interno no puede analizar el bloque de información json: error léxico: char inválido en texto json".
cg.
Parece que la sintaxis debe haber cambiado debajo de mí. Juro que funcionó cuando lo escribí. Probé la sintaxis sugerida por la respuesta de Joe Huss y funciona ahora. He actualizado mi respuesta.
Keith Twombley 01 de
1

Con respecto al comando "bloque de información" anterior, la forma correcta de llamarlo es así:

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

es decir

 virsh qemu-monitor-command windows44407 --hmp --cmd "info block"
Joe Huss
fuente
0

Estaba pasando por un reproductor de BluRay que no funcionaba correctamente a menos que lo pasara de otra manera. Así es como lo hice en base a este artículo.

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

Encuentra SCSI #:

lsscsi

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

Edite el XML del dominio y agregue esto:

Nota: Reemplace scsi_host # con el # encontrado en 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>

Tuve que forzar la aceptación del XML, ya que virsh edit dio errores, solo presione i y luego reinicie vm para probar.

FreeSoftwareServers
fuente
-6

mount -t iso9660 / dev / sr0 / media

Puede usar cualquier dispositivo configurado para su cdrom en el directorio / dev. También / dev / cdrom es un enlace al dispositivo adecuado en la mayoría de los sistemas Linux. El -t es para el tipo de dispositivo que está montando e iso9660 es el tipo universal para medios cdrom.

El punto de montaje puede ser lo que quieras obviamente, solo asegúrate de que exista.

Brian
fuente
Um. Así es como puedo montar un CD en el host. Ok, mi error “¿Cómo conectar un dispositivo cdrom a un dominio / VM kvm / qemu?” Tenga en cuenta que esta respuesta no es completamente útil, por lo que debe editarla o eliminarla.
ΤΖΩΤΖΙΟΥ