Сообщение no iommu detected please activate it see documentation for further information появляется при запуске виртуальных машин в Proxmox VE, при проверке dmesg в Linux или при попытке проброса видеокарты в гостевую систему — и означает, что ядро не обнаружило активный блок IOMMU (Input-Output Memory Management Unit). Без него невозможен безопасный проброс PCI-устройств (GPU, сетевых карт, NVMe-контроллеров) в виртуальные машины через VFIO, поэтому функции вроде GPU Passthrough попросту не запустятся.

Причина почти всегда одна из трёх: технология виртуализации отключена в BIOS/UEFI, ядру Linux не передан нужный параметр загрузки, либо оборудование не поддерживает IOMMU аппаратно. Ниже разберём проверку поддержки, включение в BIOS, настройку загрузчика и типичные ошибки.

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

IOMMU — это аппаратный блок, который транслирует адреса памяти для устройств ввода-вывода, работая по аналогии с обычным MMU для процессора. У Intel технология называется VT-d (Virtualization Technology for Directed I/O), у AMD — AMD-Vi. Именно IOMMU изолирует устройства друг от друга и позволяет назначить физическое устройство конкретной виртуальной машине через VFIO.

Без активного IOMMU гипервизор не может гарантировать, что проброшенное устройство не получит доступ к чужой области памяти, поэтому Proxmox, libvirt и другие решения отказываются выполнять проброс и выводят предупреждение. Для обычных виртуальных машин без проброса оборудования IOMMU не обязателен — но сообщение об его отсутствии всё равно сигнализирует, что часть функций виртуализации недоступна.

💡

IOMMU (VT-d у Intel, AMD-Vi у AMD) обязателен для проброса PCI-устройств в виртуальные машины. Ошибка «no IOMMU detected» означает, что функция выключена в BIOS или не активирована в ядре Linux.