Skip to content

google/alioth

Alioth

GitHub Actions Workflow Status Coverage Status GitHub code size in bytes Crates.io Version Crates.io License DeepWiki

Alioth /AL-lee-oth/ is an experimental Type-2 hypervisor, 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.

Quick Start

First, install Alioth from source using Cargo:

cargo install alioth-cli --git https://github.com/google/alioth.git

Next, 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=ttyAMA00
      ;;
   x86_64)
       CONSOLE=ttyS0
      ;;
esac

alioth -l info --log-to-file \
    boot \
    --kernel /path/to/vmlinuz \
    --cmd-line "console=$CONSOLE" \
    --initramfs /path/to/initramfs \
    --memory size=4G \
    --num-cpu 2

Features

  • Cross-Platform: Runs on x86_64 (Linux) and aarch64 (Linux & macOS).
  • Confidential Computing: Supports confidential VMs using AMD SEV, SEV-ES, and SEV-SNP. See coco.md for more details.
  • VirtIO Devices:
    • net: Backed by a TAP device.
    • vsock: Backed by either the host's /dev/vhost-vsock or 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:
    • Serial Console: 16450 on x86_64, PL011 on aarch64.
    • fw_cfg: QEMU Firmware Configuration Device.
    • pvpanic: QEMU PVPanic Device.

Future Work

  • 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.

Acknowledgments

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.

About

Experimental Type-2 hypervisor, written from scratch in Rust, runs on Linux and macOS.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •