Bagaimana menghubungkan perangkat cdrom ke domain kvm / qemu (menggunakan alat baris perintah)?

22

Saya telah menyiapkan mesin virtual yang menjalankan Windows XP di laptop Ubuntu saya. Menggunakan virt-manageraplikasi GUI, saya dapat memasukkan CD ke drive saya dan pergi ke Detail → IDE CDROM 1 dan klik Connecttombol. Kemudian CD tersedia di mesin virtual saya.

Bagaimana saya bisa melakukan hal yang sama melalui baris perintah? Jelas, saya juga ingin dapat memutuskan sambungan dari baris perintah.

Catatan: Saya dapat memulai VM dari baris perintah menggunakan virsh start testbed(testbed menjadi nama domain / VM).

ΤΖΩΤΖΙΟΥ
sumber

Jawaban:

23

Jika Anda tidak menentukan CDROM saat membuat mesin virtual, Anda dapat melampirkan perangkat bahkan ke domain yang sedang berjalan (mesin virtual) dengan menjalankan perintah berikut:

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

Jika Anda sudah mendefinisikan CDROM, tetapi menunjuk ke ISO image, menurut pengalaman saya, Anda masih bisa menjalankan perintah yang sama. Bagian ini hdcharus cocok dengan perangkat blok yang Anda miliki di testbedmesin virtual.

Ketika Anda ingin menunjuk ke gambar ISO lagi, Anda mengganti /dev/sr0ke nama file pada host, sesuatu seperti

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

Dokumentasi menyarankan penggunaan virsh update-device, tetapi lebih sulit untuk membuat definisi XML seperti:

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

Jika Anda suka dengan cara ini, simpan sesuatu seperti itu ke dalam file (katakanlah ~/cdrom-real.xml) dan kemudian jalankan:

virsh update-device testbed ~/cdrom-real.xml
berbulu
sumber
Ini sepertinya yang saya inginkan; Saya akan memverifikasi sesegera mungkin (tidak dapat saat ini). Bagaimanapun, terima kasih.
ΤΖΩΤΖΙΟΥ
Ya ini dia. Apakah Anda juga tahu cara melepaskan perangkat? Saya sudah mencoba virsh detach-disk testbed hdc, tetapi saya berhasil error: unsupported configuration: This type of device cannot be hot unplugged.
ΤΖΩΤΖΙΟΥ
Perangkat IDE memang tidak hotpluggable. detach-disktidak bekerja untuk mesin virtual yang dihentikan. Untuk menghapus CD sama sekali, Anda harus menggunakan virsh edit testbedsaat mesin berhenti dan menghapus diskelemen yang mendefinisikan ke cdrom. Jika Anda bukan seorang viahli editor, jalankan export EDITOR=nanosebelum menjalankan perintah edit.
Wigy
Omong-omong, jika Anda merasa jawaban saya membantu Anda, terimalah itu sebagai jawaban.
Lelaki
Saya akan menerima jawaban Anda. Masalahnya adalah, jika perangkat terhubung ke VM testbed dan saya mulai testbed tanpa disc dimasukkan, testbed tidak akan muncul, dan saya perlu membuka GUI manajer virtual dan lepaskan perangkat terlebih dahulu. Itu sebabnya dalam pertanyaan saya saya menyatakan saya ingin cara untuk melepaskan perangkat juga.
ΤΖΩΤΖΙΟΥ
4

Gunakan qemu-monitor-command virsh untuk meneruskan eject dan mengubah perintah ke qemu.

Pertama-tama gunakan "blok info" untuk mendapatkan nama perangkat qemu untuk cdrom Anda.

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

Jadi dalam kasus saya, saya tertarik pada drive-ide0-0-0 . Jadi untuk mengganti disk, lakukan ini:

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
sumber
Perintah "blok info" menghasilkan kesalahan bagi saya: "kesalahan: kesalahan internal tidak dapat menguraikan blok info json: kesalahan leksikal: karakter yang tidak valid di teks json."
cg.
Sepertinya sintaks harus berubah dari bawah saya. Saya bersumpah itu berhasil ketika saya menulisnya. Saya mencoba sintaks yang disarankan oleh jawaban Joe Huss dan berfungsi sekarang. Saya telah memperbarui jawaban saya.
Keith Twombley
1

Mengenai perintah "blok info" di atas, cara yang benar untuk memanggilnya adalah seperti ini:

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

yaitu

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

Saya melewati pemain BluRay yang tidak berfungsi dengan benar kecuali saya melewati itu dengan cara lain. Inilah cara saya melakukannya berdasarkan artikel ini.

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

Temukan SCSI #:

lsscsi

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

Edit Domain XML dan tambahkan ini:

Catatan: Ganti scsi_host # dengan # yang ditemukan di 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>

Saya harus memaksa XML untuk diterima karena kesalahan mengedit mengedit, cukup tekan i dan kemudian reboot vm untuk menguji.

FreeSoftwareServers
sumber
-6

mount -t iso9660 / dev / sr0 / media

Anda dapat menggunakan perangkat apa pun yang diatur untuk cdrom di direktori / dev Anda. Juga / dev / cdrom adalah tautan ke perangkat yang tepat di sebagian besar sistem Linux. -T adalah untuk tipe perangkat yang Anda pasang dan iso9660 adalah tipe universal untuk media cdrom.

Titik mount dapat berupa apa pun yang Anda inginkan dengan jelas, pastikan saja ada.

Brian
sumber
Um Begitulah cara saya bisa memasang CD di host. Ok, kesalahanku. “Bagaimana menghubungkan perangkat cdrom ke domain kvm / qemu / VM?” Perhatikan bahwa jawaban ini sama sekali tidak membantu, jadi Anda harus mengeditnya, atau menghapusnya.
ΤΖΩΤΖΙΟΥ