Еще один пост, как играть в виртуальной машине.
Знаю, был пост подобной тематики. Но ставить Proxmox для того, чтобы просто попробовать, для новичка, я считаю, малость чересчур. Будем препарировать Ubuntu.
Итак, по сути, я расскажу, как поставить QEMU с пробросом видеокарты, чтобы можно было поиграть. На схеме это выглядит так (ну очень схематично):
Это позволяет запускать в виртуальной машине на отдельном мониторе приложения, требующие полноценной видеокарты. По сути это практически эквивалент второго компьютера. Дальше сами додумаете.
ДИСКЛЕЙМЕР.
Я не рассматривал типовые проблемы, которые могут возникнуть, чтобы не перегружать пост текстом, если они возникнут, вам придется копнуть чуть глубже или спросить совета. Не надо писать "ололо, у меня ошибка 43, мануал говно".
Что нужно?
- Один Linux типовой - Ubuntu, чем свежее, тем лучше.
- Камень и мать с поддержкой AMD-Vi/VT-d и IOMMU соотв. Погуглите.
- Вторая видюха, очень желательно во втором PCI-e порту.
- Второй видеокабель и очень желательно - второй комплект клавиатура/мышь.
Качаем и ставим qemu, в убунту это:
$sudo apt install qemu
Лучше со стандартным ядром и qemu из реп, если не шарите.
Накатим систему по вкусу пока без GPU. Разметим образ:
$fallocate -l 20G /Гдето/WinX.img
и запустим систему, поставив туда любимую десяточку/семерочу/что-то еще:
$qemu-system-x86_64 -m 2048 -machine q35,accel=kvm -boot d -drive file=/Гдето/WinX.img -cdrom /Тамто/Windows.iso
Как поставить виндовс - можно найти в интернете))
Далее надо запустить драйвер vfio и присобачить к нему видюшку, которую надо пробросить.
Для этого нам надо узнать адрес и идентификатор карты. Сделаем волшебное:
$lspci -nn
ищем нужные девайсы (VGA и HDMI Audio), в моем случае нас интересует это (запишите то, что жирным):
06:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] [10de:1380]
06:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:0fbc]
Запилим такое действо:
$sudo echo "options vfio-pci ids=10de:1380,10de:0fbc" >> /etc/modprobe.d/local.conf
Теперь добавим нужные модули.
$cat /etc/modules
vfio
vfio_iommu_type1
vfio_pci
И заапдейтим:
$sudo update-initramfs -u
Перезагрузимся. Этого должно быть достаточно.
Теперь проверим, как прошло.$dmesg | grep vfio
Должно выдать что-то вроде:
[ 4.774681] vfio_pci: add [10de:1380[ffff:ffff]] class 0x000000/00000000
Наконец запустим нашу машину башскриптом типа:
#!/bin/bash
export QEMU_AUDIO_DRV=alsa
MISC="
-name win10
-machine q35,accel=kvm
-cpu Opteron_G5,kvm=off #Эквивалент AMD FX-83xx
-m 3072
-realtime mlock=off
-smp 6,sockets=1,cores=6,threads=1
-no-user-config
-nodefaults
-rtc base=localtime,clock=host
-boot menu=on,strict=on"
MONITOR="
-monitor stdio
-vga none"
STORAGE="
-drive file=/Гдето/WinX.img,format=raw"
DEVICES="
-device vfio-pci,host=06:00.0,id=hostdev0,multifunction=on,x-vga=on
-device vfio-pci,host=06:00.1,id=hostdev1
-usb
-usbdevice host:$1
-soundhw ac97"
qemu-system-x86_64 $MISC $MONITOR $DEVICES -net nic -net user $STORAGE
Можно заметить, что скрипт использует аргумент:
-usbdevice host:$1
Это идентификатор клавиатуры/мыши 2.4 ГГц. Его можно (и нужно) узнать через
$lspci
Bus 005 Device 006: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Сам скрипт запускается так:
$sudo ./win10 093a:2510
Но пока не запускаем!
Да. У многих мониторов по два входа, так что проброшенную видеокарту стоит подключить вторым кабелем и не париться. Можно и на телек кинуть, как сделал я.
По поводу звука - лучше HDMI, конечно, но в скрипте есть волшебная строчка
-soundhw ac97
которая добавит стандартную звуковуху ac97 и будет выводить звук на хост. Но на Windows10 с установкой дров придется немного помудрить (можно найти в интернете). Если звук идет по HDMI, строку надо убрать.
На этом все. Удачных опытов.