No description
Find a file
Changyuan Lyu ce1554948c fix(virtio): mark non-prefetchable BARs as 32-bit
PCIe Spec v6.1 Sec 7.5.1.3.8 does not include the support
for 64-bit non-prefetchable BARs.

Signed-off-by: Changyuan Lyu <changyuanl@google.com>
2024-07-04 12:00:37 -07:00
.github ci: cargo clippy for aarch64-unknown-linux-gnu 2024-06-19 15:57:01 -07:00
alioth fix(virtio): mark non-prefetchable BARs as 32-bit 2024-07-04 12:00:37 -07:00
alioth-cli fix(cli): derive Default for Hypervisor on macOS 2024-06-23 15:37:06 -07:00
docs docs(snp): boot SEV-SNP guests with latest KVM 2024-06-26 00:53:25 -07:00
macros fix(trace_error): add cfg attr to match arms 2024-06-16 22:12:28 -07:00
serde-aco chore: bump version to 0.2.0 2024-05-24 13:56:06 -07:00
.gitignore chore(git): ignore vsocde configs 2024-04-26 00:06:54 -07:00
Cargo.lock build(deps): bump dependencies by cargo update 2024-06-14 22:43:49 -07:00
Cargo.toml feat(hv)!: track error sources with snafu (1/n) 2024-06-09 10:11:22 -07:00
LICENSE Initial release 2024-04-24 19:34:14 -07:00
README.md docs: fix the vhost-vsock dev path 2024-06-26 01:14:02 -07:00
rust-toolchain.toml build: use stable rust as default 2024-04-24 22:06:25 -07:00
rustfmt.toml Initial release 2024-04-24 19:34:14 -07:00

Alioth

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

Alioth is an experimental KVM-based type-2 hypervisor (virtual machine monitor) in Rust implemented from scratch.

Important

Disclaimer: Alioth is not an officially supported Google product.

Quick start

  • Install Alioth from source,

    cargo install alioth-cli --git https://github.com/google/alioth.git
    
  • Make an initramfs with u-root.

  • Boot a Linux kernel with 2 CPUs and 4 GiB memory,

    alioth -l info --log-to-file \
        run \
        --kernel /path/to/vmlinuz \
        --cmd-line "console=ttyS0" \
        --initramfs /path/to/initramfs \
        --mem-size 4G \
        --num-cpu 2
    

Features

  • Runs on x86_64 and aarch64 (WIP).
  • Boots confidential VMs with AMD SEV, SEV-ES, or SEV-SNP, see coco.md for details.
  • VirtIO devices
    • net backed by a tap device,
    • vsock backed by host /dev/vhost-vsock,
    • blk backed by a raw-formatted image,
    • entropy backed by host /dev/uramdom,
    • fs backed by virtiofsd with experimental Direct Access (DAX).
  • Other devices
    • serial console: 16450 on x86_64, pl011 on aarch64,
    • fw_cfg (QEMU Firmware Configuration Device),
    • pvpanic.

TODOs

  • create GIC V3 and ITS on aarch64 to enable MSI-X for VirtIO devices,
  • device passthrough with VFIO,
  • finish error handling refactoring work started in #37,
  • explore a better solution to ACPI DSDT to replace the pre-compiled AML bytes,
  • increase test coverage,
  • add missing documents,
  • (long term) port Alioth to Apple's Hypervisor framework,
  • performance, performance, and performance!

Acknowledgment

The virtualization implementation in Alioth takes the following projects as references,

The error handling practice (#37) is inspired by GreptimeDB's stack_trace_debug.