Как подключить устройство cdrom к домену kvm / qemu (используя инструменты командной строки)?

22

Я установил виртуальную машину под управлением Windows XP на своем ноутбуке Ubuntu. Используя virt-managerприложение с графическим интерфейсом, я могу вставить компакт-диск в дисковод, перейти в «Детали» → «IDE CDROM 1» и нажать Connectкнопку. Затем компакт-диск становится доступным в моей виртуальной машине.

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

Примечание: я могу запустить виртуальную машину из командной строки, используя virsh start testbed(testbed - это имя домена / виртуальной машины).

ΤΖΩΤΖΙΟΥ
источник

Ответы:

23

Если при создании виртуальной машины вы не указали CDROM, вы можете подключить устройство даже к работающему домену (виртуальной машине), выполнив следующую команду:

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

Если вы уже определили 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
wigy
источник
Похоже, это то, что я хочу; Я проверю как можно скорее (не могу в данный момент). Спасибо в любом случае.
ΤΖΩ 16:
Да, это так. Вы также знаете, как отсоединить устройство? Я пытался virsh detach-disk testbed hdc, но я получил error: unsupported configuration: This type of device cannot be hot unplugged.
ΤΖΩΤΖΙΟΥ
Устройства IDE действительно не поддерживают горячее подключение. detach-diskне работает для остановленной виртуальной машины. Чтобы полностью удалить CD, вам нужно использовать его, virsh edit testbedкогда машина остановлена, и удалить diskэлемент, определяющий компакт-диск. Если вы не являетесь viэкспертом export EDITOR=nanoв области редактирования , выполните перед выполнением команды редактирования.
парик
Кстати, если вы чувствуете, что мой ответ помог вам, пожалуйста, примите его как ответ.
парик
Я приму ваш ответ. Дело в том, что если устройство подключено к тестовой виртуальной машине, и я запускаю тестовый стенд без вставленного диска, тестовый стенд не подходит, и мне нужно открыть графический интерфейс виртуального менеджера и сначала отключить устройство. Вот почему в своем вопросе я заявил, что тоже хочу отключить устройство.
ΤΖΙΟΥΩΤΖΙΟΥ
4

Используйте команду virsh qemu-monitor-command, чтобы передать команды извлечения и изменения на 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: лексическая ошибка: недопустимый символ в тексте json."
cg.
Кажется, синтаксис должен был измениться из-под меня. Клянусь, это сработало, когда я это написал. Я опробовал синтаксис, предложенный в ответе Джо Хусса, и теперь он работает. Я обновил свой ответ.
Кит Туомбли
1

Что касается вышеприведенной команды «info block», то правильный способ ее вызова такой:

 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 edit дал ошибки, просто нажмите i, а затем перезагрузите vm, чтобы протестировать.

FreeSoftwareServers
источник
-6

mount -t iso9660 / dev / sr0 / media

Вы можете использовать любое устройство, установленное для вашего компакт-диска в каталоге / dev. Также / dev / cdrom - это ссылка на соответствующее устройство в большинстве систем Linux. Параметр -t относится к типу устройства, которое вы монтируете, а iso9660 - универсальный тип для носителя cdrom.

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

Брайан
источник
Um. Вот как я могу смонтировать компакт-диск в хосте. Хорошо моя ошибка «Как подключить устройство cdrom к домену / виртуальной машине kmm / qemu?». Обратите внимание, что этот ответ совершенно бесполезен, поэтому вам следует либо отредактировать его, либо удалить его.
ΤΖΩ 18: