Background
Crosvm is a device model based on Rust language. Chrome OS uses Crosvm along with KVM to provide virtualization solution.
Install Rust and Dependencies
sudo apt-get install -y libcap-dev libfdt-dev
curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env
Build Crosvm
git clone https://github.com/calinyara/crosvm.git
cd crosvm
./build.sh
Compiled crosvm will be located in crosvm/target/release/.
Install Crosvm
sudo cp minijail/libminijail.so /usr/lib
sudo cp crosvm/target/release/crosvm /usr/bin
Build Kernel and Rootfs with Buildroot
git clone https://github.com/buildroot/buildroot.git
cd buildroot
wget https://raw.githubusercontent.com/calinyara/crosvm/master/configs/buildroot.config
mv buildroot.config .config
cd board/pc
wget https://raw.githubusercontent.com/calinyara/crosvm/master/configs/linux.config-5.3.x-x86_64
cd ../..
make
Compiled bzImage and rootfs.ext4 will be located in output/images.
Try Crosvm
// Start a VM, login with root without password
crosvm run --disable-sandbox --rwroot rootfs.ext4 -s crosvm.sock bzImage
// Stop the VM, in another shell window run following command
crosvm stop crosvm.sock