**StratoVirt**

StratoVirt — это корпоративная платформа виртуализации, ориентированная на облачные центры обработки данных в ИТ-отрасли. Она обеспечивает унифицированную архитектуру для поддержки виртуальных машин, контейнеров и бессерверных сценариев.

StratoVirt обладает ключевыми технологическими преимуществами в таких областях, как лёгкость, низкий уровень шума, мягкая и жёсткая согласованность, а также безопасность на уровне языка Rust.

В StratoVirt предусмотрены интерфейсы и дизайн для поддержки дополнительных функций. Платформа поддерживает как стандартную, так и облегчённую виртуализацию, а также предоставляет возможности расширения для новых гетерогенных устройств.

**Начало работы**

* **Подготовка среды:** перед компиляцией StratoVit убедитесь, что среда разработки на языке Rust и программное обеспечение Cargo успешно установлены. Если нет, следуйте инструкциям по установке, указанным по ссылке: https://www.rust-lang.org/tools/install.

* **Компиляция программного обеспечения:** чтобы скомпилировать StratoVirt, необходимо сначала клонировать код проекта, а затем выполнить команду сборки:

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

Скомпилированный двоичный файл можно найти в пути target/release/stratovirt.

**Запуск виртуальной машины с помощью StratoVirt:** для быстрого начала работы со StratoVirt необходимо подготовить следующее:

— Образ ядра Linux в формате PE или bzImage (только для x86_64).
— Файловую систему ext4 и образ корневой файловой системы raw.

Образ ядра Linux и корневую файловую систему можно загрузить по следующей ссылке:
https://repo.openeuler.org/openEuler-22.03-LTS/stratovirt_img/.

Для запуска виртуальной машины стандартного типа требуется указать файл микропрограммы UEFI edk2.

Чтобы запустить виртуальную машину microvm, выполните следующие команды:

```shell
# Если -qmp socket уже существует, удалите его

# Запуск виртуальной машины 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

# Запуск стандартной виртуальной машины на 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
```

Подробные инструкции по созданию образа корневой файловой системы, компиляции ядра и компиляции StratoVirt см. в разделе «Быстрый старт» (Quickstart) документации StratoVirt (docs/quickstart.ch.md).

Дополнительную информацию о поддерживаемых функциях StratoVirt и их настройке см. в руководстве по конфигурации (Configuration Guidebook, docs/config_guidebook.md).

**Дизайн**

Если вы хотите получить больше информации о базовой архитектуре StratoVirt, обратитесь к разделу «Дизайн» документации (docs/design.ch.md).

**Как внести свой вклад**

Мы приветствуем новых участников и готовы предоставить им помощь и руководство.

При разработке StratoVirt используется стандарт программирования на языке Rust. Для ознакомления с рекомендациями по стилю кода и использованию инструментов форматирования обратитесь к следующим ресурсам:

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

https://github.com/rust-lang/rust-clippy

Дополнительные сведения о StratoVirt можно найти по этой ссылке:

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

Если у вас есть вопросы, идеи или вы обнаружили ошибку, пожалуйста, свяжитесь с нами через список рассылки virt (https://mailweb.openeuler.org/postorius/lists/virt.openeuler.org/) или создайте заявку на сайте (https://gitee.com/openeuler/stratovirt/issues).

**Лицензия**

StratoVirt распространяется под лицензией Mulan PSL v2 с открытым исходным кодом.