Подробный гайд: IOMMU в BIOS/UEFI
Что такое IOMMU?
IOMMU (Input-Output Memory Management Unit) — это аппаратный модуль управления памятью для устройств ввода-вывода, который обеспечивает:
- Защиту памяти от несанкционированного DMA-доступа устройств
- Изоляцию устройств в виртуализированных средах («песочница» для DMA)
- Возможность прямого проброса устройств (PCI Passthrough) в виртуальные машины
- Поддержку современных античитов (FACEIT, Vanguard и др.)
На платформах Intel технология называется VT-d, на AMD — AMD-Vi или IOMMU.
Шаг 1: Проверка поддержки оборудования
Перед настройкой убедитесь, что ваше оборудование поддерживает IOMMU:
| Компонент | Требования |
|---|---|
| Процессор | Intel с поддержкой VT-d (начиная с Core 2 Duo) или AMD с AMD-Vi (Ryzen, FX, EPYC) |
| Материнская плата | Чипсет с поддержкой IOMMU (уточняйте в спецификациях) |
| BIOS/UEFI | Актуальная версия прошивки с опцией IOMMU/VT-d |
| ОС | Поддержка в ядре (Linux 2.6.29+, Windows 10/11 с Hyper-V, Proxmox, ESXi) |
Проверка поддержки в Linux:
# Intel
grep -E "vmx|dmar" /proc/cpuinfo
# AMD
grep -E "svm" /proc/cpuinfo
# Проверка таблиц ACPI
dmesg | grep -iE "dmar|iommu"
Шаг 2: Включение IOMMU в BIOS/UEFI
Пути к настройкам по производителям материнских плат
ASUS
Intel: Advanced → System Agent (SA) Configuration → VT-d
AMD: Advanced → AMD CBS → NBIO Common Options → IOMMU
или Advanced → PCI Subsystem Settings
MSI
Intel: Overclocking (OC) → CPU Features → Intel VT-d
AMD: Settings → Advanced → PCI Subsystem Settings → IOMMU
или Overclocking → Advanced CPU Configuration → AMD CBS
Gigabyte / AORUS
Intel: Settings/Chipset → IO Ports → VT-d
AMD: Settings → IO Ports → IOMMU
или Settings → Miscellaneous → IOMMU
ASRock
Intel: Advanced → Chipset Configuration → VT-d
AMD: Advanced → AMD CBS → NBIO Common Options → IOMMU
Ноутбуки и другие бренды
- Lenovo: Configuration / Security → Virtualization
- HP: Advanced System Options → Virtualization Technology
- Dell: Virtualization Support → VT for Direct I/O
Совет:
Используйте встроенный поиск в современных UEFI — введите IOMMU, VT-d или AMD-Vi.
Дополнительные настройки для корректной работы
Для полной функциональности часто требуется включить:
| Опция | Описание | Где найти |
|---|---|---|
| Аппаратная виртуализация | SVM Mode (AMD) / Intel VT-x | CPU Configuration |
| Secure Boot | Требуется некоторыми античитами | Boot / Security |
| TPM 2.0 / fTPM | Аттестация доверенной загрузки | Security / Advanced |
| DMA Protection | Защита от DMA-атак (AMD) | Security → AMD CBS |
| Control IOMMU Pre-boot | Включение IOMMU до загрузки ОС (Intel) | Advanced → VT-d Configuration |
FACEIT, Vanguard и другие античиты требуют одновременного включения IOMMU + Secure Boot + TPM 2.0 + VBS для защиты от аппаратных читов.
Шаг 3: Настройка в ОС (Linux)
1. Добавление параметров ядра
Отредактируйте GRUB:
sudo nano /etc/default/grub
Добавьте в строку GRUB_CMDLINE_LINUX_DEFAULT:
# Для Intel:
intel_iommu=on iommu=pt
# Для AMD:
amd_iommu=on iommu=pt
Параметр iommu=pt (pass-through) улучшает производительность, пропуская транзакции, не требующие трансляции.
2. Применение изменений
# Debian/Ubuntu:
sudo update-grub
# RHEL/CentOS/Fedora:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# Перезагрузка:
sudo reboot
3. Проверка активации
# Проверка параметров загрузки:
cat /proc/cmdline
# Логи ядра:
dmesg | grep -E "DMAR|IOMMU"
# Наличие групп IOMMU:
ls /sys/kernel/iommu_groups/
# Детальная информация:
sudo dmesg | grep -i "iommu\|dmar"
Ожидаемый вывод:
[ 0.000000] DMAR: IOMMU enabled
[ 0.961424] DMAR: Intel(R) Virtualization Technology for Directed I/O
Шаг 4: Проверка и анализ групп IOMMU (для PCI Passthrough)
Для проброса устройств в ВМ критически важно, чтобы устройство находилось в отдельной группе IOMMU.
Скрипт для просмотра групп:
#!/bin/bash
shopt -s nullglob
for g in /sys/kernel/iommu_groups/*; do
echo "IOMMU Group ${g##*/}:"
for d in $g/devices/*; do
echo -e "\t$(lspci -nns ${d##*/})"
done
done
Если GPU и другие устройства находятся в одной группе с системными устройствами, проброс может быть невозможен без аппаратных модификаций (ACS override, перепрошивка BIOS).
Устранение неполадок
| Проблема | Возможное решение |
|---|---|
| Опция IOMMU отсутствует в BIOS | Обновите BIOS/UEFI до последней версии; убедитесь, что включена виртуализация (VT-x/SVM) |
| IOMMU включён, но не определяется в ОС | Проверьте /proc/cmdline; убедитесь, что параметр intel_iommu=on / amd_iommu=on применён |
| Система не загружается после включения IOMMU | Отключите IOMMU, обновите ядро ОС, проверьте совместимость устройств |
| Слишком мало групп IOMMU | Проверьте поддержку ACS на чипсете; при необходимости используйте pcie_acs_override (с осторожностью) |
| Конфликт с Secure Boot | Убедитесь, что загрузчик и ядро подписаны; в некоторых случаях требуется отключить Secure Boot временно для настройки |
Особый случай: Античиты (FACEIT, Vanguard)
Если вы включаете IOMMU для игр:
- Убедитесь, что все 4 компонента включены: IOMMU, Secure Boot, TPM 2.0, VBS
2. Проверьте статус в Windows:
msinfo32
Ищите строки:
- «Безопасная загрузка»: Вкл.
- «Режим виртуализации на основе безопасности»: Вкл.
- Обновите драйверы сетевого адаптера и чипсета
- При ошибках — временно отключите IOMMU для диагностики, затем включите по одному компоненту
Чек-лист быстрой настройки
- [ ] Проверена поддержка CPU и материнской платы
- [ ] Обновлён BIOS/UEFI до актуальной версии
- [ ] В BIOS включены: IOMMU/VT-d, VT-x/SVM, Secure Boot, TPM 2.0
- [ ] В Linux добавлены параметры ядра:
intel_iommu=onилиamd_iommu=on - [ ] Выполнен
update-grub/grub2-mkconfigи перезагрузка - [ ] Подтверждена активация через
dmesg | grep -i iommu - [ ] Проверены группы IOMMU для целевых устройств
Важно:
На некоторых платформах (особенно ноутбуках и OEM-системах) опции IOMMU могут быть скрыты или заблокированы производителем. В таких случаях обратитесь к документации вендора или рассмотрите использование внешних решений (например, внешние GPU через Thunderbolt с поддержкой VT-d).