Проброс видеокарты в виртуальную машину превращает ноутбук в ретро-игровой компьютер

Проброс GPU (GPU passthrough) позволяет выделить виртуальной машине целую или часть видеокарты и дать ей 3D-ускорение, многократно превосходящее возможности виртуального дисплея, — так на обычном компьютере можно без труда запускать даже требовательные игры. Звучит сложно, но на деле процесс вполне подъемный, если уже знаком с virt-manager и QEMU.

Проброс видеокарты в виртуальную машину превращает ноутбук в ретро-игровой компьютер

Порядок действий в virt-manager выглядит так: создают виртуальную машину, но не запускают ее, затем в разделе добавления оборудования выбирают PCI Host Device и отмечают в списке и видеоадаптер, и связанное с ним аудиоустройство — их номера зависят от системы. После добавления гостевая система загружается как обычно и должна подхватить карту. При этом не все видеокарты дружат с пробросом, для некоторых нужны решения вроде vendor-reset, а сама карта должна быть привязана к драйверам vfio-pci. Настройка занимает время и часто требует обходных путей, но делается один раз. В качестве гостевых систем автор выбрал Batocera — очень легкую игровую ОС с собственным фронтендом, и Bazzite — игровой дистрибутив Linux, хорошо работающий с любой проброшенной видеокартой и запускающий игры из Steam и Emulation Station; для Batocera иногда нужен обходной путь с дисплеем, а если нет доступа к SR-IOV, подойдут стандартные драйверы Virtio для легких задач.

При создании виртуальной машины важно выбрать образ установщика, проверить автоопределение ОС, выделить разумное количество RAM и ядер, чтобы не замедлить хост, и создать виртуальный диск в формате raw с полным выделением места. Перед финализацией нужно поставить галочку «Настроить конфигурацию перед установкой», иначе процесс пролетит с неудобными настройками по умолчанию, которые потом сложно менять. Для проброса нужно передать и видеоустройство, и аудиоустройство GPU, а после запуска обновить драйверы в гостевой системе и перезагрузиться; результат, как предупреждает автор, сильно зависит от конфигурации — например, у карт AMD RX 6000 бывают проблемы со стабильностью, хотя и для них есть обходные пути.

Идеально иметь в системе две видеокарты, чтобы у хоста и гостя были отдельные физические GPU: при единственной карте сессия хоста может упасть, поскольку его единственное устройство вывода принудительно изымается. Встроенная графика тоже считается отдельной видеокартой — можно привязать хост к iGPU и динамически отдавать дискретную карту гостю. Если же нужен компактный и бюджетный вариант, советуют машины на Intel: в отличие от потребительских AMD и Nvidia, Intel дает возможности vGPU через патченное ядро, а модуль i915-sriov-dkms позволяет разбить iGPU на несколько vGPU-сегментов и раздать их разным виртуальным машинам (правда, поддерживаются не все iGPU, список есть в вики проекта). Старый Intel NUC тоже отлично подойдет как эмуляционный бокс: он дешев, легко апгрейдится, компактен, тих, экономичен, а его iGPU поддерживает аппаратное декодирование и тянет базовую эмуляцию.

Что будем искать? Например,ChatGPT

Мы в социальных сетях