Назад | Перейти на главную страницу

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

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

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

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

Если вы не определили 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

Используйте команду 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

Так что в моем случае меня интересует драйв-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 #

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

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

т.е.

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

Я проходил через проигрыватель 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 для проверки.

монтировать -t iso9660 / dev / sr0 / media

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

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