Comment connecter un périphérique cdrom à un domaine kvm / qemu (à l'aide des outils de ligne de commande)?


22

J'ai configuré une machine virtuelle exécutant Windows XP sur mon ordinateur portable Ubuntu. En utilisant l' virt-managerapplication GUI, je peux insérer un CD dans mon lecteur et aller dans Détails → IDE CDROM 1 et cliquer sur le Connectbouton. Ensuite, le CD devient disponible sur ma machine virtuelle.

Comment puis-je faire de même via la ligne de commande? Évidemment, j'aimerais aussi pouvoir me déconnecter de la ligne de commande.

Remarque: je peux démarrer la VM à partir de la ligne de commande en utilisant virsh start testbed(banc d'essai étant le nom du domaine / VM).

Réponses:


23

Si vous n'avez défini aucun CD-ROM lorsque vous avez créé votre machine virtuelle, vous pouvez attacher le périphérique même à un domaine en cours d'exécution (machine virtuelle) en exécutant la commande suivante:

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

Si vous avez déjà défini un CD-ROM, mais qu'il pointait vers une image ISO, d'après mon expérience, vous pouvez toujours exécuter la même commande. La hdcpièce doit correspondre au périphérique de bloc que vous avez dans la testbedmachine virtuelle.

Lorsque vous souhaitez pointer à nouveau vers une image ISO, vous remplacez /dev/sr0par le nom de fichier sur l'hôte, quelque chose comme

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

La documentation suggère d'utiliser virsh update-device, mais il est plus difficile de créer une définition XML quelque chose comme:

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

Si vous êtes dans cette voie, enregistrez quelque chose comme ça dans un fichier (disons ~/cdrom-real.xml) puis lancez:

virsh update-device testbed ~/cdrom-real.xml

On dirait que c'est ce que je veux; Je vérifierai dès que possible (impossible pour le moment). Merci en tout cas.
ΤΖΩΤΖΙΟΥ

Oui, c'est ça. Savez-vous également comment détacher l'appareil? J'ai essayé virsh detach-disk testbed hdc, mais j'ai réussi error: unsupported configuration: This type of device cannot be hot unplugged.
ΤΖΩΤΖΙΟΥ

Les périphériques IDE ne sont en effet pas connectables à chaud. detach-diskne fonctionne pas pour une machine virtuelle arrêtée. Pour supprimer complètement le CD, vous devez utiliser virsh edit testbedlorsque la machine est arrêtée et supprimer l' diskélément définissant le cdrom. Si vous n'êtes pas un viexpert de l'éditeur, exécutez export EDITOR=nanoavant d'exécuter la commande d'édition.
wigy

Soit dit en passant, si vous pensez que ma réponse vous a aidé, veuillez l'accepter comme réponse.
wigy

J'accepterai votre réponse. Le fait est que si l'appareil est connecté à la machine virtuelle du banc d'essai et que je démarre le banc d'essai sans qu'un disque ne soit inséré, le banc d'essai ne s'affiche pas et je dois d'abord ouvrir l'interface graphique du gestionnaire virtuel et déconnecter d'abord l'appareil. C'est pourquoi dans ma question, j'ai déclaré que je voulais aussi un moyen de déconnecter l'appareil.
ΤΖΩΤΖΙΟΥ

4

Utilisez la commande qemu-monitor-virsh pour passer l'éjection et modifier les commandes vers qemu.

Utilisez d'abord le "bloc info" pour obtenir le nom de périphérique de qemu pour votre 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

Donc dans mon cas, je suis intéressé par drive-ide0-0-0 . Donc, pour changer le disque, procédez comme suit:

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 #

La commande "bloc info" entraîne une erreur pour moi: "erreur: une erreur interne ne peut pas analyser le bloc info json: erreur lexicale: caractère invalide dans le texte json."
cg.

Il semble que la syntaxe ait changé sous moi. Je jure que ça a marché quand je l'ai écrit. J'ai essayé la syntaxe suggérée par la réponse de Joe Huss et cela fonctionne maintenant. J'ai mis à jour ma réponse.
Keith Twombley

1

Concernant la commande "bloc info" ci-dessus, la façon correcte de l'appeler est la suivante:

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

c'est à dire

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

0

Je passais par un lecteur BluRay qui ne fonctionnait pas correctement à moins que je ne le traverse d'une autre manière. Voici comment je l'ai fait sur la base de cet article.

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

Trouver SCSI #:

lsscsi

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

Modifiez le XML du domaine et ajoutez ceci:

Remarque: remplacez scsi_host # par le # trouvé dans 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>

J'ai dû forcer le XML à être accepté car l'édition virsh a donné des erreurs, appuyez simplement sur i puis redémarrez vm pour tester.


-6

montage -t iso9660 / dev / sr0 / media

Vous pouvez utiliser n'importe quel périphérique défini pour votre cdrom dans le répertoire / dev. De plus, / dev / cdrom est un lien vers le périphérique approprié sur la plupart des systèmes Linux. Le -t correspond au type de périphérique que vous montez et l'iso9660 est le type universel pour les supports cdrom.

Le point de montage peut être ce que vous voulez évidemment, assurez-vous simplement qu'il existe.


Hum. Voilà comment je peux monter un CD dans l'hôte. Ok, mon erreur. "Comment connecter un périphérique cdrom à un domaine / VM kvm / qemu?" Notez que cette réponse n'est absolument pas utile, vous devez donc soit la modifier, soit la supprimer.
ΤΖΩΤΖΙΟΥ
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.