В Chrome/Chromium OS для изоляции приложений развивается система crosvm, основанная на использовании гипервизора KVM. Код crosvm написан на языке Rust и примечателен наличием дополнительного уровня защиты на основе пространств имён, применяемого для защиты от атак на инструментарий виртуализации. Из других особенностей crosvm отмечаются встроенные средства для запуска Wayland-клиентов внутри изолированных окружений с выполнением композитного сервера на стороне основного хоста и возможность эффективного использования GPU из гостевых систем. Подобные возможности делают crosvm интересным решением для изолированного запуска графических приложений. Crosvm не привязан к Chromium OS и может быть собран и запущен в любом дистрибутиве Linux (протестировано в Fedora 26). Собираем ядро Linux для гостевой системы: cd ~/src git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git cd linux git checkout v4.12 make x86_64_defconfig make bzImage cd .. Собираем инструментарий minijail для запуска программ в изолированных окружениях: git clone https://android.googlesource.com/platform/external/minijail cd minijail make cd .. Собираем crosvm: git clone https://chromium.googlesource.com/a/chromiumos/platform/crosvm cd crosvm LIBRARY_PATH=~/src/minijail cargo build Генерируем образ корневой ФС (rootfs) для изолированного окружения: cd ~/src/crosvm dd if=/dev/zero of=rootfs.ext4 bs=1K count=1M mkfs.ext4 rootfs.ext4 mkdir rootfs/ sudo mount rootfs.ext4 rootfs/ debootstrap testing rootfs/ sudo umount rootfs/ Запускаем crosvm: LD_LIBRARY_PATH=~/src/minijail ./target/debug/crosvm run -r rootfs.ext4 --seccomp-policy-dir=./seccomp/x86_64/ ~/src/linux/arch/x86/boot/compressed/vmlinux.bin
Мало слоёв, давай ищо!!!
# kvm chroot minijail crosvm run -r rootfs.ext4