Posted on 09/11/2017 by Tomeu Vizoso
Last week I played a bit with crosvm, a KVM monitor used within Chromium OS for application isolation. My goal is to learn more about the current limits of virtualization for isolating applications in mainline. Two of crosvm's defining characteristics is that it's written in Rust for increased security, and that uses namespaces extensively to reduce the attack surface of the monitor itself.
It was quite easy to get it running outside Chromium OS (have been testing with Fedora 26), with the only complication being that minijail isn't widely packaged in distros. In the instructions below we hack around the issue with linker environment variables so we don't have to install it properly. Instructions are in form of shell commands for illustrative purposes only.
$ 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 ..
$ git clone https://android.googlesource.com/platform/external/minijail $ cd minijail $ make $ cd ..
$ git clone https://chromium.googlesource.com/a/chromiumos/platform/crosvm $ cd crosvm $ LIBRARY_PATH=~/src/minijail cargo build
$ 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/
$ 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
The work ahead includes figuring out the best way for Wayland clients in the guest interact with the compositor in the host, and also for guests to make efficient use of the GPU.
When working on the Linux Kernel, testing via QEMU is pretty common. Here's a look at virtme, a QEMU wrapper that uses the host instead…
Earlier this month, Collabora sponsored & hosted the XMMP Sprint, the first developer event in the XMPP community in a long time. Here's…
In addition to Collabora's work to add support in mainline Linux kernel for several Chromebooks, these platforms are now being continuously…
Working with a git based project that has a defacto upstream repository means that you perioducally want to fetch the canonical master branch.…
A look at the work and motivation behind implementing the Khronos EGLDevice extensions in Mesa. These extensions allow users of open source…
GNOME Builder is an Integrated Development Environment designed for the GNOME ecosystem. It most notably features a deep integration to…