Як підключити пристрій cdrom до домену kvm / qemu (використовуючи інструменти командного рядка)?


22

Я створив віртуальну машину під управлінням Windows XP на своєму ноутбуці Ubuntu. За допомогою програми virt-managerGUI я можу вставити компакт-диск у свій привід і перейти до деталей → IDE CDROM 1 і натиснути Connectкнопку. Тоді компакт-диск стає доступним у моїй віртуальній машині.

Як я можу зробити те ж саме через командний рядок? Очевидно, я також хотів би мати можливість відключитися від командного рядка.

Примітка: Я можу запустити VM з командного рядка, використовуючи virsh start testbed(тестовим полем є ім'я домену / VM).

Відповіді:


23

Якщо під час створення віртуальної машини ви не визначили CDROM, ви можете приєднати пристрій навіть до запущеного домену (віртуальної машини), виконавши таку команду:

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

Якщо ви вже визначили компакт-диск, але він вказував на образ ISO, на мій досвід, ви все одно можете виконати ту саму команду. hdcЧастина повинна відповідати блокового пристрою , яке ви маєте на testbedвіртуальній машині.

Коли ви знову хочете вказати на образ ISO, ви замінюєте /dev/sr0ім'я файлу на хості, щось подібне

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

Документація пропонує використовувати virsh update-device, але для створення XML-дефініції потрібно більше праці:

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

Якщо ви ставитесь до цього способу, збережіть щось подібне у файл (скажімо ~/cdrom-real.xml) та запустіть:

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

Це схоже на те, що я хочу; Я перевірю якнайшвидше (наразі не можу). Дякую в будь-якому випадку.
ΤΖΩΤΖΙΟΥ

Так, це все. Ви також знаєте, як від'єднати пристрій? Я спробував virsh detach-disk testbed hdc, але отримав error: unsupported configuration: This type of device cannot be hot unplugged.
ΤΖΩΤΖΙΟΥ

Насправді пристрої IDE не є гарячими підключеннями. detach-diskне працює для зупиненої віртуальної машини. Щоб повністю видалити компакт-диск, вам потрібно використовувати, virsh edit testbedколи машина зупинена, і видалити diskвизначальний елемент до компакт-диска. Якщо ви не viексперт редактора, виконайте його export EDITOR=nanoперед виконанням команди редагування.
перука

До речі, якщо ви відчуваєте, що моя відповідь вам допомогла, прийміть це як відповідь.
перука

Я прийму вашу відповідь. Річ у тім, що якщо пристрій підключено до тестової панелі VM і я запускаю тестову панель без вставленого диска, тестова панель не з’явиться, і мені потрібно відкрити графічний інтерфейс віртуального менеджера та відключити пристрій спочатку. Ось чому в своєму запитанні я заявив, що хочу також відключити пристрій.
ΤΖΩΤΖΙΟΥ

4

Використовуйте команду vemu-qemu-monitor для передачі команд вилучення та зміни вниз до qemu.

Спочатку використовуйте "інформаційний блок", щоб отримати ім'я пристрою qemu для вашого компакт-диска.

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

Тож у моєму випадку мене цікавить drive-ide0-0-0 . Отже, щоб змінити диск, зробіть це:

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 #

Команда "інформаційний блок" призводить до помилки для мене: "помилка: внутрішня помилка не може проаналізувати інформаційний блок json: лексична помилка: недійсний char у тексті json."
cg.

Здається, синтаксис, мабуть, змінився з-під мене. Клянусь, це спрацювало, коли я написав це. Я випробував синтаксис, запропонований відповіддю Джо Гуса, і він працює зараз. Я оновив свою відповідь.
Кіт Тумблі

1

Щодо команди "Інформаційний блок" вище, правильний спосіб викликати її такий:

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

тобто

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

0

Я проходив через програвач BluRay, який не працював правильно, якщо я не передав його іншим способом. Ось як я це зробив на основі цієї статті.

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

Знайти SCSI №:

lsscsi

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

Редагуйте XML домену та додайте це:

Примітка. Замініть scsi_host # на #, знайдене в 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>

Мені довелося змусити XML прийняти, оскільки редагування virsh дало помилки, просто натисніть i, а потім перезавантажте vm для перевірки.


-6

mount -t iso9660 / dev / sr0 / media

Ви можете використовувати будь-який пристрій, встановлений для вашого cdrom в каталозі / dev. Також / dev / cdrom - це посилання на належний пристрій у більшості систем Linux. -T призначений для типу пристрою, який ви монтуєте, а iso9660 є універсальним типом для компакт-дисків.

Точка монтажу, очевидно, може бути будь-якою, яку ви хочете, просто переконайтесь, що вона існує.


Гм. Ось так я можу змонтувати компакт-диск у хості. Гаразд, моя помилка. “Як підключити пристрій cdrom до домену kvm / qemu / VM?” Зауважте, що ця відповідь абсолютно не корисна, тому слід або відредагувати, або видалити.
ΤΖΩΤΖΙΟΥ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.