Skip to content

🚧WIP🚧 hypercraft is a VMM library written in Rust.

License

Notifications You must be signed in to change notification settings

arceos-hypervisor/hypercraft

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hypercraft

🚧WIP🚧 hypercraft is a VMM library written in Rust. If you are interested in Design & Implement about this project, please see this discussion. Currently, hypercraft relies heavily on the Arceos crate, reusing multiple crates and modules from arceos for development.

Build & Run

Riscv Linux

Clone project

# create workspace
mkdir $(WORKSPACE)
cd $(WORKSPACE)

# clone project
git clone https://github.com/arceos-hypervisor/arceos.git
cd arceos
git checkout hypervisor
git submodule update --init --recursive

Download Disk File & Linux Binary

Download disk file from Baidu Cloud Disk to $(WORKSPACE)/guest/linux:

链接: https://pan.baidu.com/s/1OGuOjMe0VEFvDhPg3nzSjA?pwd=5ewv 提取码: 5ewv 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v2的分享

Build & Run

# build & run
make ARCH=riscv64 A=apps/hv HV=y LOG=info run

aarch64 nimbos

Clone project

# create workspace
mkdir $(WORKSPACE)
cd $(WORKSPACE)

# clone project
git clone https://github.com/arceos-hypervisor/arceos.git
cd arceos
git checkout hypervisor
git submodule update --init --recursive

Download NimbOS Image
Download nimbos-aarch64.bin in nimbos from Google Cloud Disk to $(WORKSPACE)/arceos/apps/hv/guest/nimbos:

Build & Run

# build & run
make ARCH=aarch64 A=apps/hv HV=y LOG=info GUEST=nimbos run

x86_64 nimbos

Clone project

# create workspace
mkdir $(WORKSPACE)
cd $(WORKSPACE)

# clone project
git clone https://github.com/arceos-hypervisor/arceos.git
cd arceos
git checkout hypervisor
git submodule update --init --recursive

Build NimbOS BIOS
Download nimbos image from Google Cloud Disk to $(WORKSPACE)/arceos/apps/hv/guest/nimbos:

# build nimbos bios
cd apps/hv/guest/nimbos/bios
make
cp out/rvm-bios.bin ..

Download NimbOS Image
Download nimbos-x86.bin from here to $(WORKSPACE)/arceos/apps/hv/guest/nimbos and rename it to nimbos.bin:

Build & Run

# build & run
make ARCH=x86_64 A=apps/hv HV=y LOG=info GUEST=nimbos run

RoadMap

  • CPU Virtualization
    • Vcpu abstract layer(vcpu_create(), vcpu_read(), vcpu_write(), vcpu_run())
    • Load & run hello world binary in example.
    • PerCpu struct Design to support SMP.
    • Mult-Core boot.
    • Multi-Guest switch support(vcpu schedule)
  • Memory Virtualization
    • Nested Page Table Support
    • Multi-level Page Table Supportd
  • I/O Virtualization
    • Device Passthrought Supportd
    • IOMMU Support
    • Device Emulate
  • Interrupt Virtualization
    • Timer Interrupt Enable
    • PLIC Emulate && Interrupt Inject
    • AIA Supported
  • System Supported
    • rCore-Tutorial-v3
    • Linux
    • Arceos

Relevant Issues

References

  • rivosinc/salus: Risc-V hypervisor for TEE development
  • equation314/RVM-Tutorial: Let's write an x86 hypervisor in Rust from scratch!
  • zircon: Zircon is the core platform that powers Fuchsia. Zircon is composed of a kernel (source in /zircon/kernel) as well as a small set of userspace services, drivers, and libraries (source in /zircon/system/) necessary for the system to boot, talk to hardware, load userspace processes and run them, etc. Fuchsia builds a much larger OS on top of this foundation.
  • KuangjuX/hypocaust-2: hypocaust-2, a type-1 hypervisor with H extension run on RISC-V machine

About

🚧WIP🚧 hypercraft is a VMM library written in Rust.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 92.8%
  • Assembly 6.1%
  • Makefile 1.1%