Wie verbinde ich ein CD-ROM-Gerät mit einer kvm / qemu-Domäne (mithilfe von Befehlszeilentools)?

22

Ich habe eine virtuelle Maschine unter Windows XP auf meinem Ubuntu-Laptop eingerichtet. Mit der virt-managerGUI-Anwendung kann ich eine CD in mein Laufwerk einlegen, zu Details → IDE CDROM 1 gehen und auf die ConnectSchaltfläche klicken . Dann wird die CD in meiner virtuellen Maschine verfügbar.

Wie kann ich dasselbe über die Befehlszeile tun? Natürlich möchte ich auch die Verbindung zur Kommandozeile trennen können.

Hinweis: Ich kann die VM über die Befehlszeile mit starten virsh start testbed(Testbed ist der Name der Domäne / VM).

ΤΖΩΤΖΙΟΥ
quelle

Antworten:

23

Wenn Sie beim Erstellen Ihrer virtuellen Maschine keine CD-ROM definiert haben, können Sie das Gerät auch an eine aktive Domäne (virtuelle Maschine) anschließen, indem Sie den folgenden Befehl ausführen:

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

Wenn Sie bereits eine CD-ROM definiert haben, diese jedoch auf ein ISO-Image verweist, können Sie nach meiner Erfahrung immer noch denselben Befehl ausführen. Das hdcTeil muss mit dem Blockgerät übereinstimmen, das Sie in der testbedvirtuellen Maschine haben.

Wenn Sie erneut auf ein ISO-Image verweisen möchten, ersetzen Sie /dev/sr0den Dateinamen auf dem Host

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

In der Dokumentation virsh update-devicewird empfohlen, eine XML-Definition wie die folgende zu erstellen.

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

Wenn du auf diese Weise bist, speichere so etwas in einer Datei (sprich ~/cdrom-real.xml) und feuere dann:

virsh update-device testbed ~/cdrom-real.xml
Perücke
quelle
Das sieht so aus, als ob es das ist, was ich will. Ich werde mich so schnell wie möglich verifizieren (kann im Moment nicht). Danke auf jeden Fall.
ΤΖΩΤΖΙΟΥ
Ja, das ist es. Wissen Sie auch, wie Sie das Gerät abnehmen können? Ich habe es versucht virsh detach-disk testbed hdc, aber ich habe error: unsupported configuration: This type of device cannot be hot unplugged.
ΤΖΩΤΖΙΟΥ
IDE-Geräte sind in der Tat nicht hot-plug-fähig. detach-diskfunktioniert nicht für eine gestoppte virtuelle Maschine. Um die CD insgesamt zu entfernen, müssen Sie bei virsh edit testbedangehaltener Maschine das diskElement löschen, das für die CD-ROM definiert ist. Wenn Sie kein viEditor-Experte sind, führen Sie dies aus, export EDITOR=nanobevor Sie den Bearbeitungsbefehl ausführen.
Perücke
Übrigens, wenn Sie das Gefühl haben, dass meine Antwort Ihnen geholfen hat, akzeptieren Sie sie bitte als Antwort.
Perücke
Ich werde Ihre Antwort annehmen. Die Sache ist, wenn das Gerät mit der Testbed-VM verbunden ist und ich das Testbed ohne eingelegte CD starte, wird das Testbed nicht angezeigt, und ich muss zuerst die virtuelle Manager-GUI öffnen und das Gerät trennen. Aus diesem Grund habe ich in meiner Frage angegeben, dass ich auch eine Möglichkeit zum Trennen des Geräts haben möchte.
ΤΖΩΤΖΙΟΥ
4

Verwenden Sie den Befehl qemu-monitor von virsh, um die Befehle eject und change an qemu weiterzuleiten.

Verwenden Sie zuerst "info block", um den Gerätenamen von qemu für Ihre CD-ROM abzurufen.

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

In meinem Fall bin ich also an drive-ide0-0-0 interessiert . So ändern Sie die Festplatte:

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
quelle
Der Befehl "info block" führt zu einem Fehler für mich: "Fehler: Interner Fehler kann JSON-Info-Block nicht analysieren: Lexikalischer Fehler: Ungültiges Zeichen in JSON-Text."
cg.
Scheint, als hätte sich die Syntax unter mir geändert. Ich schwöre, es hat funktioniert, als ich es geschrieben habe. Ich habe die von Joe Huss vorgeschlagene Syntax ausprobiert und sie funktioniert jetzt. Ich habe meine Antwort aktualisiert.
Keith Twombley
1

In Bezug auf den obigen Befehl "info block" lautet der korrekte Aufruf wie folgt:

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

dh

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

Ich habe einen Blu-ray-Player durchlaufen, der nur dann ordnungsgemäß funktioniert hat, wenn ich ihn auf eine andere Weise durchlaufen habe. Hier ist, wie ich es basierend auf diesem Artikel gemacht habe.

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

SCSI-Nummer suchen:

lsscsi

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

Bearbeiten Sie Domain-XML und fügen Sie Folgendes hinzu:

Hinweis: Ersetzen Sie scsi_host # durch das in lssci gefundene #

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

Ich musste erzwingen, dass XML akzeptiert wurde, da virsh edit Fehler verursachte. Drücke einfach i und starte vm neu, um es zu testen.

FreeSoftwareServers
quelle
-6

mounten Sie -t iso9660 / dev / sr0 / media

Sie können jedes Gerät verwenden, das für Ihre CD-ROM im Verzeichnis / dev eingestellt ist. Außerdem ist / dev / cdrom ein Link zum richtigen Gerät auf den meisten Linux-Systemen. Das -t ist für den Gerätetyp, den Sie mounten, und das iso9660 ist der universelle Typ für CD-ROM-Medien.

Der Einhängepunkt kann natürlich beliebig sein, stellen Sie jedoch sicher, dass er vorhanden ist.

Brian
quelle
Äh. So kann ich eine CD in den Host mounten. Ok, mein Fehler. „Wie verbinde ich ein CD-ROM-Gerät mit einer kvm / qemu-Domäne / VM?“ Beachten Sie, dass diese Antwort nicht hilfreich ist. Sie sollten sie entweder bearbeiten oder löschen.
ΤΖΩΤΖΙΟΥ