В Chrome/Chromium OS для изоляции приложений развивается система [[https://chromium.googlesource.com/chromiumos/platform/crosvm/ 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 ..
Собираем инструментарий [[https://www.chromium.org/chromium-os/developer-guide/chromiu... 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
URL: http://blog.tomeuvizoso.net/2017/11/experiments-with-crosvm_...
Обсуждается: http://www.opennet.dev/tips/info/3034.shtml