Linux VM without VM software – User Mode Linux
Linux-ядро может запускаться как обычный процесс в пространстве пользователя без использования традиционного ПО для виртуализации. Эта технология, известная как User Mode Linux (UML), позволяет создавать виртуальные машины без QEMU или прав суперпользователя. UML можно рассматривать как паравиртуализированную конфигурацию ядра, которая использует существующее ядро хоста и его функции пространства пользователя. Вместо прямого доступа к физическому оборудованию, UML использует файлы и сокеты для создания нового экземпляра ядра, способного запускать собственные процессы. Интересно, что драйверы в UML "просветлены" - они осведомлены о работе с виртуализированным оборудованием и могут оптимизировать взаимодействие.
Для сборки UML-ядра требуется платформа x86, где оно может работать поверх существующего x86-ядра. Процесс сборки начинается с команды ARCH=um make menuconfig, где можно настроить специальные опции UML. Важно включить опцию BLK_DEV_UBD, которая позволяет обращаться к файлам хоста как к блочным устройствам. После финализации конфигурации ядро собирается командой ARCH=um make -j16, создавая бинарный файл linux. Интересно, что этот файл является динамически связанным исполняемым файлом с библиотекой C, а не традиционным ядром, работающим напрямую с железом.