J'ai configuré une machine virtuelle exécutant Windows XP sur mon ordinateur portable Ubuntu. En utilisant le virt-manager
Application GUI, je peux insérer un CD dans mon lecteur et aller dans Détails → IDE CDROM 1 et cliquer sur le bouton Connect
. 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 le VM à partir de la ligne de commande en utilisant virsh start testbed
(banc d'essai étant le nom du domaine/VM).
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 partie hdc
doit correspondre au périphérique de bloc que vous avez dans la machine virtuelle testbed
.
Lorsque vous souhaitez pointer à nouveau vers une image ISO, vous remplacez /dev/sr0
au 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 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 (dites ~/cdrom-real.xml
) puis déclenchez:
virsh update-device testbed ~/cdrom-real.xml
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 d'appareil 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-. 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 #
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"
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.