Как в virtualbox подключить pci

Обновлено: 04.07.2024

Мне хотелось бы окончательно избавится от Windows раздела на моем жестком диске и работать с некотрыми Windows программами без костылей (иногда и поиграть) и без необходимости выхода из основной системы. Другими словами иметь виртуалку в которой полноценно работает аппаратное ускорение графики, RAID, USB, а также pci устройства которые не поддерживаются virtualbox.

Исходные данные

Процесс

1 Включаем поддержку IOMMU в ядре. Для этого в файле /etc/default/grub меняю строку

Intel-IOMMU: enabled
DMAR: DRHD base: 0x000000fed90000 flags: 0x0
IOMMU 0: reg_base_addr fed90000 ver 1:0 cap c9008020e30272 ecap 1000
vboxpci: IOMMU found

Если таких или похожих строк нет, то возможно у вас в биосе отключена Vt-d, либо процессор или материнская плата не поддерживает IOMMU.
4 Проверим, есть ли устройства которые можно пробросить. Если нет строк с FLReset+ тогда вряд ли получится. У меня так:

$ sudo lspci -vv | grep -i flreset+
ExtTag- RBE- FLReset+

5 Если функция есть, то ищем устройства которые можно пробросить. В моей системе нашлость только одно такое PCI устройство 00:1b.0 (встроенный в материнку звуковой чип Intel). Я делал с помощью команды:

00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06) Subsystem: Micro-Star International Co., Ltd. Device 7636
Kernel driver in use:snd-hda-intel
Kernel modules: snd-hda-intel

7 Запрещаем его загрузку, добавив в /etc/modprobe.d/blacklist.conf строку

8 Перегружаем компьютер и пробрасываем устройство в гостевую:

$lspci -s
01:05 01:05.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 06)

Звуковая карта определилась гостевой ОС и что самое главное заработала, т.е. звук гостевой системы выводится на физическое устройство хоста. В ходе моих экспериментов многие устройства успешно пробрасывались (без FLReset+) и виделись ядром гостя, но работать отказывались. Были случаи, что система хоста зависала, так что будьте осторожны (на этапе 9), если будете повторять. К сожалению GPU и USB пока пробросить не удалось, что является моей конечной целью.

Обновления заметки:

Удалось успешно прокинуть USB хоста, причем я пропускал шаги 6 и 7 .

$lspci | grep USB
00:1a.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)
00:1d.0 USB controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 06)

Флешка видится и нормально работает. Видеокамера работает показывает несколько секунд, а потом изображение пропадает (mplayer tv:// выдает v4l2: select timeout).

Читайте также: