97 lines
3.3 KiB
Markdown
97 lines
3.3 KiB
Markdown
|
|
# 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 interface and design for importing more features, even
|
||
|
|
evaluates to standard virtualization.
|
||
|
|
|
||
|
|
## 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:
|
||
|
|
```sh
|
||
|
|
$ 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.
|
||
|
|
|
||
|
|
```shell
|
||
|
|
# 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](./docs/quickstart.md).
|
||
|
|
|
||
|
|
StratoVirt supports much more features, the detailed guidance can be found in
|
||
|
|
[Configuration Guidebook](docs/config_guidebook.md).
|
||
|
|
|
||
|
|
## Design
|
||
|
|
|
||
|
|
To get more details about StratoVirt's core architecture design, refer to
|
||
|
|
[StratoVirt design](./docs/design.md).
|
||
|
|
|
||
|
|
## 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](https://mailweb.openeuler.org/postorius/lists/virt.openeuler.org/)
|
||
|
|
or submit an [issue](https://gitee.com/openeuler/stratovirt/issues).
|
||
|
|
|
||
|
|
## Licensing
|
||
|
|
StratoVirt is licensed under the Mulan PSL v2.
|