# 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. StratoVirt has key technological 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 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 from the following link:

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

### Build StratoVirt
To build StratoVirt, clone the project and build it first:
```sh
$ git clone https://gitee.com/openeuler/stratovirt.git
$ cd stratovirt
$ cargo build --release
```
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-format rootfs image

```shell
# If the socket of api-channel exists, remove if first.
$ ./target/release/stratovirt \
    -kernel /path/to/kernel \
    -append console=ttyS0 root=/dev/vda reboot=k panic=1 \
    -drive file=/path/to/rootfs,id=rootfs,readonly=off \
    -api-channel unix:/path/to/socket \
    -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.