Dragonball-sandbox is a collection of Rust crates to help build custom Virtual Machine Monitors and hypervisors

Overview

dragonball-sandbox

Dragonball-sandbox is a collection of Rust crates to help build custom Virtual Machine Monitors and hypervisors. The crates here are considered to be the downstream of rust-vmm.

This repository contains the following crates:

Name Description Links
db-allocator allocator for vmm resource TBD

(Dragonball is a virtual machine monitor developed by Alibaba and db is the abbreviation for Dragonball.)

How to build

cargo build --release
Comments
  • MINIBALL: CPU virtualization

    MINIBALL: CPU virtualization

    Refer to the vmm-reference project to implement Miniball, and use dragonball-sandbox creats to implement CPU virtualization.

    Add description document for CPU virtualization part. Modify the description of CPU virtualization in MiniBall's README.md.

    Fixes: https://github.com/openanolis/dragonball-sandbox/issues/181

    ASOC: https://github.com/openanolis/dragonball-sandbox/issues/155

    Signed-off-by: yaoyinnan [email protected]

    opened by yaoyinnan 10
  • upgrade vm-memory to 0.8.0

    upgrade vm-memory to 0.8.0

    The rust-vmm community uses the Comparison requirements form for specific dependencies. The advantage of this is that when a new version of the crate is released, there is no need to update the version for each dependent crate. But, if the new version of the crate is API incompatible. All libs that depend on it must either be modified accordingly, or the version number must be locked. This is exactly what we do in kata currently. So in the next step we need to modify all the dependent libraries.

    Making this work requires the following changes.

    • [x] upgrade vm-memory to 0.8.0 for https://github.com/cloud-hypervisor/fuse-backend-rs
    • [x] upgrade vm-memory to 0.8.0 for https://github.com/dragonflyoss/image-service
    • [x] Use QueueStateSync in virtio-queue instead of QueueState for dbs-virtio-devices. And upgrade virtio-queue to 0.3.0.
    • [x] upgrade vm-memory to 0.8.0 for all crates.
    opened by wllenyj 7
  • dbs-legacy-devices: arm add rtc device

    dbs-legacy-devices: arm add rtc device

    This modification mainly involves two aspects:

    1. Expose the fdt address for building vcpu.
    2. Add rtc clock to provide clock information for guest kernel.
    opened by jingshan-lx 5
  • boot: update more boot params and boot functions

    boot: update more boot params and boot functions

    This commit has serveral changes:

    1. add get_kernel_start() to get the start place of the kernel
    2. add add_e820_entry() to add e820 region to the e820 map
    3. add several boot related consts

    Besides, in order to pass dbs-utils CI, we change the thread sleep time in rate-limiter UT.

    Signed-off-by: Chao Wu [email protected]

    opened by studychao 5
  • dbs-interrupt: introduce interrupt manager for devices

    dbs-interrupt: introduce interrupt manager for devices

    This patch introduces traits and structs to manage interrupt sources for devices, including the abstraction of interrupt manager and its implementation based on kvm framework.

    Signed-off-by: Alibaba Dragonball Team Signed-off-by: Zizheng Bian [email protected]

    opened by ZizhengBian 5
  • uniform the form of dependent versions in Cargo.toml & reorganize the order of `use` declarations

    uniform the form of dependent versions in Cargo.toml & reorganize the order of `use` declarations

    commit 0ed2d60acd04ffd571a46b35e18162925d1af55d (HEAD -> jason/better-crate-version, origin/jason/better-crate-version) Author: Zizheng Bian [email protected] Date: Fri Feb 18 19:24:52 2022 +0800

    refactor: reorganize the order of `use` declarations
    
    uniform the order of `use` declarations by the order of std, other crates, and
    current crate.
    
    Signed-off-by: Zizheng Bian <[email protected]>
    

    commit 399e133b4f95333bc52942d7fd0a057d88d2d8c0 Author: Zizheng Bian [email protected] Date: Fri Feb 18 19:15:48 2022 +0800

    refactor: uniform the form of dependent versions in Cargo.toml
    
    Use semver without any operator instead of other forms of dependents' version.
    
    Note: semver without any operator is equivalent to the caret form.
    
    Signed-off-by: Zizheng Bian <[email protected]>
    
    opened by ZizhengBian 5
  • MINIBALL: Device virtualization

    MINIBALL: Device virtualization

    Refer to the vmm-reference project to implement Miniball, and use dragonball-sandbox creats to implement Device virtualization.

    Fixes: https://github.com/openanolis/dragonball-sandbox/issues/183

    Signed-off-by: yaoyinnan [email protected]

    opened by yaoyinnan 4
  • MINIBALL: Memory virtualization

    MINIBALL: Memory virtualization

    Refer to the vmm-reference project to implement Miniball, and use dragonball-sandbox creats to implement Memory virtualization.

    Fixes: https://github.com/openanolis/dragonball-sandbox/issues/182

    Signed-off-by: yaoyinnan [email protected]

    opened by yaoyinnan 4
  • allcator: change &mut self -> &mut self to mut self -> self

    allcator: change &mut self -> &mut self to mut self -> self

    Previous constraint implemented &mut self -> &mut self for changing max, min, etc.

    But this cause problem for code like

    let constraint = Constraint::new(...).max(...).min(...);
    

    This code creates a Constraint and return the mut reference to it, but there will be no one take the ownership of that Constraint so it'll be dropped and cannot be used later. Since temporary value is freed at the end of this statement, it is not a ideal case for us.

    Signed-off-by: Chao Wu [email protected]

    opened by studychao 4
  • db-arch: introduce x86_64 regs(PART I)

    db-arch: introduce x86_64 regs(PART I)

    introduce x86_64 regs to help set regs, sregs and fpu. This is the first patch of the x86_64 regs, We'll introduce more regs related functions and unit tests in the coming patches.

    Signed-off-by: Chao Wu [email protected]

    opened by studychao 4
  • MINIBALL: add CPU virtualization docs

    MINIBALL: add CPU virtualization docs

    Add description document for CPU virtualization part. Modify the description of CPU virtualization in MiniBall's README.md.

    Fixes: https://github.com/openanolis/dragonball-sandbox/issues/187

    Signed-off-by: yaoyinnan [email protected]

    opened by yaoyinnan 3
  • virtio-queue: update virtio-queue to v0.6.0

    virtio-queue: update virtio-queue to v0.6.0

    Since the vm-memory conflict brought by virtio-queue 0.4.0, we need to upgrade virtio-queue to the newest version. Meanwhile, virtio-queue change a lot of APIs from 0.4.0 to 0.5.0, so this PR mainly for fixing all the API changes.

    Signed-off-by: Chao Wu [email protected]

    opened by studychao 0
  • Codecov may not be testing this project under docker.

    Codecov may not be testing this project under docker.

    In file crates/dbs-virtio-devices/src/fs, the coverage of the file reported by codecov is here https://app.codecov.io/gh/openanolis/dragonball-sandbox/blob/main/crates/dbs-virtio-devices/src/fs/device.rs. In line 314 (approximately), the fn manipulate_backend_fs() is marked with "test-resources" and commented "run via dbuvm docker image", is tested in line 1288 (approximately) fn test_manipulate_backend_fs() but reported not covered.

    opened by TimePrinciple 1
  • dbs-address-space: UTs might be needed for unimplemented methods in the future.

    dbs-address-space: UTs might be needed for unimplemented methods in the future.

    In file hybrid.rs, the following methods are not yet implemented in vm-memory/src/guest_memory.rs:

    • 'file_offset()'
    • 'as_slice()'
    • 'as_mut_slice()'

    which returns None regardless of conditions. UTs of these functions will be needed when they are implemented.

    opened by TimePrinciple 0
  • dbs-address-space: Further test is need in UT bitmap

    dbs-address-space: Further test is need in UT bitmap

    In file hybrid.rs, UT test_bitmap should have a self constructed bitmap to test the correctness of bitmap method. I tried construct one but failed by various reasons.

    opened by TimePrinciple 0
Releases(dbs-virtio-devices-v0.1.1)
Owner
OpenAnolis Community
OpenAnolis Community
OpenAnolis Community
An LC-3 virtual machine written in Rust for learning purposes.

LC-3 written in Rust An LC-3 virtual machine written in Rust for learning purposes.

Rodrigo Araújo 30 Dec 11, 2022
A Rust implementation of the Lox programming language. Based on clox, the bytecode virtual machine.

A Rust implementation of the Lox programming language. Based on clox, the bytecode virtual machine.

Diego Freijo 23 Dec 26, 2022
BM - a basic virtual machine written in rust

A basic virtual machine implementation with it's own binary format and assembly, as a learning experience.

KaviiSuri 1 May 8, 2022
LC3 Virtual Machine written in Rust 🦀

LC3 - Emulator LC3-rust is a virtual machine for the Little Computer 3 architecture, written using the Rust programming language. The VM has been writ

Gabriele Pappalardo 2 Oct 25, 2022
little computer 3 (lc3) virtual machine written in Rust

Little Computer 3 (LC3) Virtual Machine (by @lowlevelers) What is Little Computer 3? Little Computer 3, or LC-3, is a type of computer educational pro

LowLevelers 3 Oct 25, 2023
vore is a virtual machine management tool focused on VFIO set ups.

vore is a virtual machine management tool focused on VFIO set ups. with a minimal TOML file you should be able to get you should be able to create a VFIO-focused VM.

eater 8 Mar 20, 2022
Ethereum Virtual Machine implementation

Fast EVM implementation with full async support. Port of evmone to Rust.

Artem Vorotnikov 147 Dec 9, 2022
crosvm is a virtual machine monitor (VMM) based on Linux’s KVM hypervisor

crosvm - The Chrome OS Virtual Machine Monitor crosvm is a virtual machine monitor (VMM) based on Linux’s KVM hypervisor, with a focus on simplicity,

Google 454 Dec 31, 2022
🍄 A disassembler for the UEFI Bytecode Virtual Machine.

?? A disassembler for the UEFI Bytecode Virtual Machine.

Samuel Wilder 51 Dec 6, 2022
STARK-based virtual machine

Polygon Miden A STARK-based virtual machine. WARNING: This project is in an alpha stage. It has not been audited and may contain bugs and security fla

Polygon (previously Matic) 415 Dec 28, 2022
SVM - Spacemesh Virtual Machine

SVM - Spacemesh Virtual Machine Project Goals Self-contained. Should be hosted by the Spacemesh Golang full-node and future Spacemesh Rust full-node B

Spacemesh 83 Sep 15, 2022
Virtual Machine Language - Yet another stack-based programming language

Virtual Machine Language - Yet another stack-based programming language

null 2 Feb 26, 2022
Secure and fast microVMs for serverless computing.

Our mission is to enable secure, multi-tenant, minimal-overhead execution of container and function workloads. Read more about the Firecracker Charter

firecracker-microvm 20.3k Jan 8, 2023
RailCar: Rust implementation of the Open Containers Initiative oci-runtime

railcar - rust implementation of the oci-runtime spec What is railcar? railcar is a rust implementation of the opencontainers initiative's runtime spe

Oracle 1.1k Dec 21, 2022
Advanced Rust quantum computer simulator

quantum Advanced Rust quantum computer simulator. Motivation Quantum is a quantum computer simulator written with the following design goals in mind:

Ben Eills 215 Jan 1, 2023
Rust bindings for the unicorn CPU emulator

unicorn-rs THIS PACKAGE IS DEPRECATED AND NO LONGER MAINTAINED. Rust bindings are now included with unicorn and will be maintained there from now on.

null 129 Oct 10, 2022
Rust API to the OS X Hypervisor framework for hardware-accelerated virtualization

hypervisor-rs hypervisor is a Rust library that taps into functionality that enables hardware-accelerated execution of virtual machines on OS X. It bi

Saurav Sachidanand 57 Dec 8, 2022
StarWM is an extensible window manager written in Rust.

StarWM is an extensible, floating and tiling, X window manager for Linux-based operating systems written in Rust.

StarWM 30 Dec 9, 2022
A toy Cairo VM implementation in Rust

oriac A toy Cairo VM implementation in Rust This is a toy implementation of the Cairo VM I'm building for learning purposes. There's no guarantee on w

Jonathan LEI 57 Nov 23, 2022