• Stars
    star
    356
  • Rank 119,446 (Top 3 %)
  • Language
    Rust
  • Created about 4 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

StratoVirt

StratoVirt is an enterprise-level virtualization platform for cloud data centers in the computing industry. It implements a set of architecture that supports three scenarios: virtual machines, containers, and serverless computing.

StratoVirt has competitive advantages in light weight and low noise, software and hardware coordination, and Rust language-level security.

StratoVirt reserves interfaces and design to support more features, now can support standard and lightweight virtualization together, as well as the ability to extend support for new heterogeneous devices.

How to start

Preparation

Before building StratoVirt, make sure that Rust language and Cargo have already been installed. If not, you can find installation guidance via following link:

https://www.rust-lang.org/tools/install

And it will get smaller memory overhead if you prepare musl toolchain for rust.

Build StratoVirt

To build StratoVirt, clone the project and build it first:

$ git clone https://gitee.com/openeuler/stratovirt.git
$ cd stratovirt
$ make build

Now you can find StratoVirt binary in target/release/stratovirt.

Run a VM with StratoVirt

To run StratoVirt quickly, requires

  • A PE or bzImage (only x86_64) format Linux kernel
  • An EXT4 filesystem, raw format rootfs disk image

You can get kernel and rootfs image from the following link:

https://repo.openeuler.org/openEuler-22.03-LTS/stratovirt_img/

For standard VM, firmware file of EDK2 which follows UEFI is required.

# If the socket of qmp exists, remove it first.

# Start microvm
$ ./target/release/stratovirt \
    -machine microvm \
    -kernel /path/to/kernel \
    -append "console=ttyS0 root=/dev/vda reboot=k panic=1" \
    -drive file=/path/to/rootfs,id=rootfs,readonly=off \
    -device virtio-blk-device,drive=rootfs,id=rootfs \
    -qmp unix:/path/to/socket,server,nowait \
    -serial stdio

# Start standard VM on x86_64
$ ./target/release/stratovirt \
    -machine q35 \
    -kernel /path/to/kernel \
    -append "console=ttyS0 root=/dev/vda reboot=k panic=1" \
    -drive file=/path/to/firmware,if=pflash,unit=0,readonly=true \
    -device pcie-root-port,port=0x0,addr=0x1.0x0,bus=pcie.0,id=pcie.1 \
    -drive file=/path/to/rootfs,id=rootfs,readonly=off \
    -device virtio-blk-pci,drive=rootfs,bus=pcie.1,addr=0x0.0x0,id=blk-0 \
    -qmp unix:/path/to/socket,server,nowait \
    -serial stdio

The detailed guidance of making rootfs, compiling kernel and building StratoVirt can be found in StratoVirt QuickStart.

StratoVirt supports much more features, the detailed guidance can be found in Configuration Guidebook.

Design

To get more details about StratoVirt's core architecture design, refer to StratoVirt design.

How to contribute

We welcome new contributors! And we are happy to provide guidance and help for new contributors. StratoVirt follows Rust formatting conventions, which can be found at:

https://github.com/rust-dev-tools/fmt-rfcs/tree/master/guide https://github.com/rust-lang/rust-clippy

You can get more information about StratoVirt at:

https://gitee.com/openeuler/stratovirt/wikis

If you find a bug or have some ideas, please send an email to the virt mailing list or submit an issue.

Licensing

StratoVirt is licensed under the Mulan PSL v2.

More Repositories

1

iSulad

[mirror]A light weight container runtime daemon for IOT and Cloud infrastructure.
C
302
star
2

nestos-kubernetes-deployer

Go
104
star
3

kernel

42
star
4

RISC-V

Shell
17
star
5

bishengjdk-8

Java
14
star
6

isula-build

Go
14
star
7

KubeOS

Go
11
star
8

community

Python
9
star
9

rust_shyper

Rust
8
star
10

secGear

OCaml
8
star
11

itrustee_sdk

C
6
star
12

gazelle-cni

6
star
13

openeuler-docker-images

Shell
6
star
14

A-Tune

[mirror] An OS tuning engine based on AI.
Go
6
star
15

rubik

Go
4
star
16

libcareplus

C
4
star
17

fastblock

C++
4
star
18

bishengjdk-11

Java
4
star
19

A-Ops

Python
3
star
20

gala-gopher

C
3
star
21

compass-ci

Ruby
3
star
22

arkui-linux

C++
3
star
23

openstack

Python
3
star
24

itrustee_client

C
3
star
25

openeuler-os-build

Roff
3
star
26

dpu-core

Shell
3
star
27

dim

C
3
star
28

open-eBackup

2
star
29

openeuler-obs

Python
2
star
30

openeuler-jenkins

Python
2
star
31

raspberrypi

Shell
2
star
32

release-management

2
star
33

bishengjdk-17

Java
2
star
34

PilotGo

Go
2
star
35

process1

Rust
2
star
36

gala-spider

Python
2
star
37

cve-manager

Go
2
star
38

btfhub-archive

2
star
39

eulerlauncher

Python
2
star
40

lboot

Rust
2
star
41

memory-scan

C
2
star
42

gala-docs

2
star
43

AvxToNeon

C
2
star
44

openEuler-Advisor

Python
2
star
45

easybox

Rust
2
star
46

libxml2-rust

C
2
star
47

lfs-course

Python
2
star
48

docs

2
star
49

bgmprovider

Java
2
star
50

gazelle

C
2
star
51

wsl

Shell
1
star
52

attest-tools

C
1
star
53

wisdom-advisor

Rust
1
star
54

pkgship

Python
1
star
55

bounds_checking_function

C
1
star
56

gitbook-theme-hugo

JavaScript
1
star
57

raspberrypi-kernel

1
star
58

website-v2

Vue
1
star
59

lcr

C
1
star
60

A-Tune-Collector

Python
1
star
61

tp-libvirt

Python
1
star
62

iSulad-img

Go
1
star
63

oec-hardware

Python
1
star
64

bigdata

1
star
65

chaosArsenal

Go
1
star
66

qingzhou

Java
1
star
67

gala-anteater

Python
1
star
68

secpaver

Go
1
star
69

oncn-bwm

C
1
star
70

libboundscheck

C
1
star
71

secDetector

C
1
star
72

ft_engine

C++
1
star
73

safeguard

C
1
star
74

CuckooSQL

1
star
75

X-diagnosis

C
1
star
76

release-tools

Python
1
star
77

intel-lkvs

1
star
78

oemaker

Shell
1
star
79

distributed-codelabs

C++
1
star
80

unizip

C
1
star
81

CTinspector

C
1
star
82

eulerpublisher

Python
1
star
83

opensd

Python
1
star
84

Intel-kernel

C
1
star
85

UniProton

C
1
star
86

libwd

C
1
star
87

auto_py2to3

Python
1
star
88

tarsier

1
star
89

syscontainer-tools

Go
1
star
90

gala-ragdoll

1
star
91

wayca-scheduler-bench

Shell
1
star
92

aops-apollo

Python
1
star
93

sync-config

This is a repository for sync configuration
1
star
94

itrustee_tzdriver

C
1
star
95

distributed-beget

1
star