Skip to content
/ muvirt Public

Linux full system & user space emulator that can run without OS-level native virtualization, in unprivileged containers and in a web browser

License

Notifications You must be signed in to change notification settings

kketch/muvirt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

muvirt

muvirt aims to provide a reasonably fast x86_64 and arm64 virtual machine that can run inside a web browser or on platforms without hardware virtualization support (currently supports Linux, OSX & Windows). The current implementation leverages and extends several QEMU components (such as TCG / Tiny Code Generator), though some of these could be replaced over time.

Goals

  • Support x86_64 and arm64 targets
  • Deliver good enough performance without relying on hardware virtualization
  • Run unmodified linux guest systems
  • Run unmodified standalone linux user-mode programs
  • Web support
  • Add hardware virtualization support (KVM / HVF / HPV)
  • Support for building and running containers
  • Support for the devcontainer specification
  • Support for AI agents by providing a MCP server
  • Easy to use (standalone or as a library)

Development

Dependencies

  • Recent rust compiler toolchain (Edition 2024)
  • clang compiler
  • gdb

Run locally

cargo run

Note: The project is setup to use gdb to debug the running binary which has some negative performance impact and might in fact prevent the linux kernel booting if the host system under which muvirt runs has constrained resources (only 1 or 2 cores). Workarounds for this are to remove the custom runner command in .cargo/config.toml that uses gdb and also run a release build cargo run --release

About

Linux full system & user space emulator that can run without OS-level native virtualization, in unprivileged containers and in a web browser

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages