Alioth /AL-lee-oth/ is an experimental virtual machine monitor (VMM), written from scratch in Rust. It runs on top of an existing operating system and leverages KVM on Linux and Apple's Hypervisor framework on macOS to create and manage virtual machines.
Important
Disclaimer: Alioth is an experimental project and is NOT an officially supported Google product.
First, install Alioth from source using Cargo:
cargo install alioth-cli --git https://github.com/google/alioth.gitNext, create an initramfs for your guest OS. You can use a tool like u-root to do this.
Finally, boot a Linux kernel. This example starts a VM with 2 CPUs and 4 GiB of memory:
case $(uname -m) in
arm64 | aarch64)
CONSOLE=ttyAMA0
;;
x86_64)
CONSOLE=ttyS0
;;
esac
alioth -l info --log-to-file \
boot \
--kernel /path/to/vmlinuz \
--cmdline "console=$CONSOLE" \
--initramfs /path/to/initramfs \
--memory size=4G \
--num-cpu 2For instructions on booting a cloud image, see Booting Cloud Images.
Alioth is also available as a Nix flake
for x86_64 Linux and aarch64 Linux and macOS. To run Alioth without
installing it:
nix run github:google/alioth -- boot --kernel /path/to/vmlinuz ...To boot a minimal VM with a BusyBox shell, using a Linux kernel and BusyBox from the NixOS binary cache:
nix run github:google/alioth#vmExit the shell to power off the VM. The VM has 2 CPUs and 1 GiB of memory by
default, which can be changed with the environment variables ALIOTH_VM_CPUS
and ALIOTH_VM_MEMORY, e.g. ALIOTH_VM_CPUS=4 ALIOTH_VM_MEMORY=4G.
ALIOTH_VM_CMDLINE appends arguments to the kernel command line.
In a checkout, nix build builds Alioth and runs its tests, and places the
result in ./result.
- Cross-Platform: Runs on
x86_64(Linux) andaarch64(Linux & macOS). - Confidential Computing: Supports confidential VMs using AMD SEV, SEV-ES, and SEV-SNP or Intel TDX. See coco.md for more details.
- VirtIO Devices:
net: Backed by a TAP device on Linux and vmnet framework on macOS.vsock: Backed by either the host's/dev/vhost-vsockor a Unix domain socket.blk: Backed by a raw disk image.entropy: Backed by the host's/dev/urandom.fs: Backed by virtiofsd with experimental Direct Access (DAX) support.balloon: Free page reporting (Work in Progress).
- Device Passthrough: PCI device passthrough via VFIO/IOMMUFD.
- Other Emulated Devices:
- Explore a better solution for ACPI DSDT generation to replace pre-compiled AML bytes.
- Increase test coverage across the codebase.
- Add comprehensive documentation for APIs and internal architecture.
- Focus on performance optimizations.
The design and implementation of Alioth are heavily inspired by the following projects:
The error handling approach is inspired by the
stack_trace_debug macro in
GreptimeDB.