Jak podłączyć urządzenie cdrom do domeny kvm / qemu (za pomocą narzędzi wiersza poleceń)?

22

Skonfigurowałem maszynę wirtualną z systemem Windows XP na moim laptopie Ubuntu. Za pomocą virt-manageraplikacji GUI mogę włożyć dysk CD do napędu i przejść do Szczegóły → CDROM IDE 1 i kliknąć Connectprzycisk. Następnie płyta CD staje się dostępna na mojej maszynie wirtualnej.

Jak mogę zrobić to samo za pomocą wiersza poleceń? Oczywiście chciałbym też móc odłączyć się od linii poleceń.

Uwaga: mogę uruchomić maszynę wirtualną z wiersza polecenia za pomocą virsh start testbed(testbed jest nazwą domeny / maszyny wirtualnej).

ΤΖΩΤΖΙΟΥ
źródło

Odpowiedzi:

23

Jeśli nie zdefiniowałeś dysku CD-ROM podczas tworzenia maszyny wirtualnej, możesz podłączyć urządzenie nawet do działającej domeny (maszyny wirtualnej), uruchamiając następujące polecenie:

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

Jeśli już zdefiniowałeś CDROM, ale wskazywał on na obraz ISO, z mojego doświadczenia wynika, że ​​nadal możesz uruchomić to samo polecenie. hdcCzęść musi pasować do urządzenia blokowego masz w testbedmaszynie wirtualnej.

Jeśli chcesz ponownie wskazać obraz ISO, zastępujesz /dev/sr0nazwę pliku na hoście, coś w rodzaju

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

Dokumentacja sugeruje użycie virsh update-device, ale tworzenie definicji XML jest bardziej pracochłonne:

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

Jeśli jesteś w ten sposób, zapisz coś takiego w pliku (powiedzmy ~/cdrom-real.xml), a następnie uruchom:

virsh update-device testbed ~/cdrom-real.xml
peruka
źródło
Wygląda na to, że tego właśnie chcę; Zweryfikuję jak najszybciej (w tej chwili nie mogę). W każdym razie dziękuję.
ΤΖΩΤΖΙΟΥ
Tak to jest to. Czy wiesz także, jak odłączyć urządzenie? Próbowałem virsh detach-disk testbed hdc, ale zrozumiałem error: unsupported configuration: This type of device cannot be hot unplugged.
ΤΖΩΤΖΙΟΥ
Urządzenia IDE nie są w rzeczywistości możliwe do podłączenia na gorąco. detach-disknie działa dla zatrzymanej maszyny wirtualnej. Aby całkowicie usunąć dysk CD, musisz użyć go, virsh edit testbedgdy maszyna jest zatrzymana, i usunąć diskelement definiujący na cdrom. Jeśli nie jesteś viekspertem od edytora, wykonaj export EDITOR=nanoprzed uruchomieniem polecenia edycji.
wigy
Nawiasem mówiąc, jeśli uważasz, że moja odpowiedź pomogła ci, zaakceptuj ją jako odpowiedź.
wigy
Przyjmuję twoją odpowiedź. Chodzi o to, że jeśli urządzenie jest podłączone do VM maszyny testowej, a ja uruchamiam platformę testową bez włożonej płyty, platforma testowa nie pojawi się i muszę najpierw otworzyć GUI menedżera wirtualnego i najpierw odłączyć urządzenie. Dlatego w moim pytaniu powiedziałem, że chcę również sposób na odłączenie urządzenia.
ΤΖΩΤΖΙΟΥ
4

Użyj polecenia qemu-monitor-polecenie virsh, aby przekazać polecenie wysuwania i zmień polecenia na qemu.

Najpierw użyj „bloku informacji”, aby uzyskać nazwę urządzenia qemu dla twojego 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

Więc w moim przypadku interesuje mnie drive-ide0-0-0 . Aby zmienić dysk, wykonaj następujące czynności:

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
źródło
Polecenie „blok informacji” powoduje dla mnie błąd: „błąd: błąd wewnętrzny nie może przeanalizować bloku informacji json: błąd leksykalny: niepoprawny znak w tekście jsona”.
cg.
Wygląda na to, że składnia musiała się zmienić spode mnie. Przysięgam, że zadziałało, kiedy to napisałem. Wypróbowałem składnię sugerowaną przez odpowiedź Joe Hussa i teraz działa. Zaktualizowałem swoją odpowiedź.
Keith Twombley
1

W odniesieniu do powyższej komendy „blok informacji” poprawny sposób jej wywołania wygląda następująco:

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

to znaczy

 virsh qemu-monitor-command windows44407 --hmp --cmd "info block"
Joe Huss
źródło
0

Przechodziłem przez odtwarzacz BluRay, który nie działał poprawnie, chyba że przekazałem go w inny sposób. Oto jak to zrobiłem na podstawie tego artykułu.

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

Znajdź SCSI #:

lsscsi

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

Edytuj XML domeny i dodaj to:

Uwaga: Zamień scsi_host # na # znalezione w 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>

Musiałem wymusić akceptację XML, ponieważ edycja virsh dawała błędy, po prostu naciśnij i, a następnie uruchom ponownie vm, aby przetestować.

FreeSoftwareServers
źródło
-6

mount -t iso9660 / dev / sr0 / media

Możesz użyć dowolnego urządzenia ustawionego dla twojego cdrom w katalogu / dev. Również / dev / cdrom jest linkiem do odpowiedniego urządzenia w większości systemów Linux. -T dotyczy typu instalowanego urządzenia, a iso9660 jest uniwersalnym typem dla nośników cdrom.

Punktem montowania może być oczywiście to, czego chcesz, po prostu upewnij się, że istnieje.

Brian
źródło
Um. W ten sposób mogę zamontować płytę CD w hoście. Ok, mój błąd. „Jak podłączyć urządzenie cdrom do domeny kvm / qemu / VM?” Należy pamiętać, że ta odpowiedź nie jest całkowicie pomocna, dlatego należy ją edytować lub usunąć.
ΤΖΩΤΖΙΟΥ