Я установил виртуальную машину под управлением 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 - универсальный тип для компакт-дисков.
Очевидно, что точка монтирования может быть любой, просто убедитесь, что она существует.