A Rust library interface to KVM
libkvm depends on Rust, which is typically installed using the rustup tool. Most Linux distributions also have packages for Rust, but check that the version of the Rust package is 1.24.0 or higher, because libkvm uses mem::size_of as a constant function which was not allowed in earlier versions of Rust.
If you installed with rustup, you may need to set your PATH environment variable as in ~/.cargo/env.
Rust will download the source files for libkvm's library dependencies automatically when you run cargo the first time.
Rust uses GCC for linking. On Debian/Ubuntu you can install GCC with:
$ sudo apt-get install gcc It is likely that KVM is already installed if you're using a modern Linux distro. If you're unsure, on Debian/Ubuntu you can install the cpu-checker package, and then run:
$ kvm-ok This should report:
INFO: /dev/kvm exists KVM acceleration can be used If you get permission errors when attempting to run libkvm for the first time, you may need to set up the kvm group manually. (If you installed QEMU or kvmtool they would do this for you, but libkvm doesn't depend on these.)
$ sudo groupadd kvm $ sudo chgrp -R kvm /dev/kvm $ sudo chmod g+rw /dev/kvm $ sudo adduser <username> kvm - Build the payload, this is a basic guest workloads used to showcase the features provided by libkvm:
pushd examples/payload make popd - Run the example:
cargo run --example demo Copyright (C) Allison Randal, 2018
Copyright (C) Cloudbase Solutions Srl, 2018
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library/Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.