Включение аппаратной виртуализации IOMMU (VT-d / AMD-Vi)

Иван Корнев·19.05.2026·6 мин

Чтобы включить IOMMU, необходимо зайти в BIOS/UEFI и активировать технологию Intel VT-d (для процессоров Intel) или AMD-Vi / IOMMU (для AMD). Эти настройки обычно находятся в разделах Advanced, CPU Configuration или Chipset. После включения сохраните изменения (F10) и перезагрузитесь. Эта функция критически важна для проброса PCIe-устройств (GPU, сетевых карт) в виртуальные машины и защиты от DMA-атак.

Важно: Не путайте виртуализацию процессора (Intel VT-x / AMD-SVM) и виртуализацию ввода-вывода (VT-d / AMD-Vi). Для запуска обычных виртуальных машин (VirtualBox, VMware Workstation) достаточно VT-x/SVM. Для проброса физических устройств (PCI Passthrough) обязательно нужен включенный IOMMU.

Что такое IOMMU и зачем он нужен

IOMMU (Input-Output Memory Management Unit) — это компонент чипсета, который транслирует адреса виртуальной памяти устройств в физические адреса. Простыми словами, он позволяет изолировать устройства друг от друга и передавать управление конкретным «железом» (видеокартой, контроллером) напрямую виртуальной машине, минуя гипервизор.

Основные сценарии использования:

  • PCI Passthrough: Проброс видеокарты в игровую ВМ на домашнем сервере (Proxmox, KVM, Unraid).
  • Безопасность: Защита от атак прямого доступа к памяти (DMA) через порты Thunderbolt или PCIe.
  • Стабильность: Предотвращение конфликтов драйверов при работе с несколькими однотипными устройствами.

Подготовка к настройке

Перед входом в BIOS рекомендуется:

  1. Обновить BIOS/UEFI до последней версии. Производители часто исправляют ошибки в реализации групп IOMMU и добавляют скрытые опции.
  2. Сбросить разгон. Если процессор или память разогнаны, верните настройки в Default. Нестабильный разгон может мешать корректной инициализации таблиц виртуализации.
  3. Подготовить фото. Сфотографируйте текущие экраны BIOS на телефон, чтобы знать, куда возвращаться в случае ошибки.

Вход в BIOS осуществляется нажатием клавиши Del или F2 сразу после включения ПК. На некоторых ноутбуках и платах могут использоваться F10, F12 или Esc.

Инструкция для процессоров Intel (VT-d)

На платформах Intel технология называется VT-d (Virtualization Technology for Directed I/O).

Типичные пути в меню BIOS

Расположение пункта зависит от производителя материнской платы:

ПроизводительПуть к настройкеНазвание опции
ASUSAdvancedSystem Agent (SA) Configuration или CPU ConfigurationVT-d
MSISettingsAdvancedIntegrated Peripherals или CPU ConfigurationVT-d
GigabyteChipset или M.I.T.Advanced Frequency SettingsVT-d
ASRockAdvancedChipset ConfigurationVT-d
Lenovo/DellSecurityVirtualization или System ConfigurationVT-d / Directed I/O

Алгоритм действий:

  1. Перейдите в Advanced Mode (обычно клавиша F7).
  2. Найдите раздел, отвечающий за системный агент или чипсет (System Agent, Chipset, PCH Configuration).
  3. Найдите пункт Intel VT-d или VT-d.
  4. Переключите значение в Enabled.
  5. Если есть пункт SR-IOV Support, его также можно включить (требуется для проброса виртуальных функций сетевых карт), но для начала это не обязательно.
  6. Нажмите F10 для сохранения и перезагрузки.

На старых платах (до 2015 года) поддержка VT-d могла быть ограничена или работать некорректно с некоторыми чипсетами. Проверьте спецификации вашей модели на сайте производителя.

Инструкция для процессоров AMD (AMD-Vi / IOMMU)

У AMD технология называется AMD-Vi или просто IOMMU. Она тесно связана с технологией виртуализации процессора SVM.

Типичные пути в меню BIOS

ПроизводительПуть к настройкеНазвание опции
ASUSAdvancedAMD CBSNBIO Common OptionsIOMMU
MSISettingsAdvancedAMD OverclockingCBSNBIOIOMMU
GigabyteChipset или AMD CBSNBIO Common OptionsIOMMU
ASRockAdvancedAMD CBSNBIO Common OptionsIOMMU
Biostar/OtherAdvancedCPU ConfigurationIOMMU

Алгоритм действий:

  1. Перейдите в Advanced Mode.
  2. Найдите раздел AMD CBS (Common Building Block) или NBIO Common Options. Если раздела CBS нет, ищите в Chipset или CPU Configuration.
  3. Найдите пункт IOMMU. По умолчанию он часто стоит в режиме Auto или Disabled.
  4. Установите значение Enabled.
  5. Убедитесь, что включена основная виртуализация: найдите SVM Mode (или Secure Virtual Machine) в разделе CPU Configuration и поставьте Enabled.
  6. Сохраните настройки (F10) и перезагрузитесь.

На платформах AMD Ryzen иногда требуется дополнительно включить опцию ACS Enable (Access Control Services) в тех же разделах NBIO/CBS. Это улучшает разбиение устройств на группы IOMMU, что критично для проброса нескольких устройств одновременно.

Как проверить, что IOMMU работает

Просто включить настройку в BIOS недостаточно — нужно убедиться, что операционная система видит эту функцию.

В Linux (Proxmox, Ubuntu, Debian)

Откройте терминал и выполните команду:

dmesg | grep -e DMAR -e IOMMU
  • Для Intel: Вы должны увидеть строки, содержащие DMAR: IOMMU enabled или Intel-IOMMU: enabled.
  • Для AMD: Ищите строки AMD-Vi: Enabling IOMMU at ... или AMD-Vi: Initialized.

Если вывод пуст или содержит ошибки, проверьте параметры загрузчика. В файле /etc/default/grub в строку GRUB_CMDLINE_LINUX_DEFAULT нужно добавить:

  • Intel: intel_iommu=on
  • AMD: amd_iommu=on

После правки обновите grub (update-grub) и перезагрузитесь.

В Windows

В диспетчере устройств сложно увидеть статус IOMMU напрямую, но можно проверить поддержку виртуализации в целом:

  1. Откройте Диспетчер задач (Ctrl + Shift + Esc).
  2. Перейдите на вкладку ПроизводительностьЦП.
  3. Справа внизу должно быть указано: Виртуализация: Включено.

Для полной проверки поддержки проброса устройств в Windows обычно используют гипервизор Hyper-V. Если вы планируете использовать WSL2 или Docker Desktop, убедитесь, что в компонентах Windows включена платформа «Hyper-V» или «Платформа виртуальной машины».

Частые ошибки и проблемы

  1. «Пункт VT-d/IOMMU отсутствует в BIOS»

    • Обновите BIOS.
    • Проверьте, поддерживает ли ваш процессор и чипсет эту технологию (почти все современные CPU поддерживают, но самые бюджетные модели Celeron/Pentium или старые Athlon могут не иметь полной поддержки).
    • На некоторых офисных ПК (Lenovo ThinkCentre, Dell Optiplex) опция может быть скрыта в подразделе SecurityVirtualization.
  2. «Устройства не разделяются на группы (IOMMU Groups)»

    • Это частая проблема на потребительских платах. Несколько устройств могут находиться в одной группе, что мешает пробросу одного из них.
    • Решение: Включите ACS Override (если есть в BIOS) или используйте скрипты для объединения групп в Linux. На платах AMD включение ACS Enable в BIOS часто решает проблему аппаратно.
  3. «Черный экран после включения проброса GPU»

    • Убедитесь, что вы пробрасываете не ту видеокарту, через которую выводится изображение на монитор хоста.
    • Проверьте, загружен ли модуль vfio-pci до остальных драйверов видеокарты.
  4. Конфликт с Hyper-V в Windows

    • Если вы используете VirtualBox или VMware на Windows с включенным Hyper-V (или WSL2), производительность может падать, а проброс устройств может не работать. Для серьезной работы с IOMMU лучше использовать Linux-гипервизоры (KVM/QEMU) или отключать Hyper-V, если он не нужен.

FAQ

В: Влияет ли включение IOMMU на производительность в играх на основной системе? О: Нет, влияние на производительность хост-системы практически нулевое. Небольшая задержка может возникать только при активной трансляции адресов для проброшенных устройств, что не затрагивает основные задачи.

В: Нужно ли включать IOMMU для VirtualBox или VMware Workstation? О: Нет, для обычной эмуляции и виртуализации CPU достаточно включить VT-x (Intel) или SVM (AMD). IOMMU нужен только для продвинутых сценариев с пробросом железа.

В: Почему в Linux dmesg показывает IOMMU, но проброс не работает? О: Чаще всего проблема в неправильном распределении групп IOMMU или отсутствии загрузки модуля vfio. Проверьте вывод find /sys/kernel/iommu_groups/ -type l — если папки пусты или устройства сгруппированы некорректно, потребуется дополнительная настройка ACPI или использование ACS Override.

В: Безопасно ли включать IOMMU на старом железе? О: Да, безопасно. Если контроллер IOMMU работает некорректно, система либо не загрузится (редко), либо просто проигнорирует запросы на проброс. В крайнем случае, сброс настроек BIOS вернет всё назад.