No description
Find a file
Changyuan Lyu bd94cefdcb feat(cli): add the --object flag
Now we can express complex values in command lines. For example, the
kernel command line now can be passed to fw_cfg device by

  --fw-cfg name=opt/stage0/cmdline,string=id_c \
  -o id_c,"iommu=soft reboot=acpi console=ttyS0"

Previously we need to write it into a temporary file as a workaround
for the equal signs in the kernel command line.

Signed-off-by: Changyuan Lyu <changyuanl@google.com>
2024-07-23 23:02:36 -07:00
.github ci(rust): add targets after cache is restored 2024-07-22 23:09:58 -07:00
alioth build(deps): bump bitfield from 0.15.0 to 0.16.0 2024-07-22 22:57:18 -07:00
alioth-cli feat(cli): add the --object flag 2024-07-23 23:02:36 -07:00
docs
macros
serde-aco fix(aco): report errors when ignoring inputs 2024-07-20 17:53:03 -07:00
.gitignore
Cargo.lock build(deps): bump mio from 1.0.0 to 1.0.1 2024-07-23 07:15:01 -07:00
Cargo.toml build(deps): bump snafu from 0.8.3 to 0.8.4 2024-07-22 22:57:30 -07:00
LICENSE
README.md feat(cli): add the flag for vfio devices 2024-07-20 23:35:38 -07:00
rust-toolchain.toml
rustfmt.toml

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.
  • 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/urandom,
    • fs backed by virtiofsd with experimental Direct Access (DAX).
  • PCI device passthrough based on VFIO/IOMMUFD.
  • Other devices
    • serial console: 16450 on x86_64, pl011 on aarch64,
    • fw_cfg (QEMU Firmware Configuration Device),
    • pvpanic.

TODOs

  • device passthrough with VFIO,
  • 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 is inspired by GreptimeDB's stack_trace_debug.