**StratoVirt** StratoVirt — это платформа виртуализации корпоративного уровня для облачных дата-центров в сфере вычислений. Она реализует набор архитектур, поддерживающих три сценария: виртуальные машины, контейнеры и бессерверные вычисления. У StratoVirt есть конкурентные преимущества в лёгкости и низком уровне шума, координации программного и аппаратного обеспечения, а также безопасности на уровне языка Rust. StratoVirt оставляет интерфейсы и дизайн открытыми для поддержки большего количества функций. В настоящее время платформа может поддерживать как стандартную, так и облегчённую виртуализацию, а также имеет возможность расширения поддержки новых гетерогенных устройств. **Как начать** *Подготовка* Перед сборкой StratoVirt убедитесь, что язык Rust и Cargo уже установлены. Если нет, вы можете найти руководство по установке по следующей ссылке: https://www.rust-lang.org/tools/install. И у вас будет меньше накладных расходов памяти, если вы подготовите набор инструментов musl для Rust. *Сборка StratoVirt* Чтобы собрать StratoVirt, сначала клонируйте проект и соберите его: ```sh $ git clone https://gitee.com/openeuler/stratovirt.git $ cd stratovirt $ make build ``` Теперь вы можете найти двоичный файл StratoVirt в target/release/stratovirt. *Запуск виртуальной машины с помощью StratoVirt* Для быстрого запуска StratoVirt требуется: * ядро Linux формата PE или bzImage (только x86_64); * образ диска корневой файловой системы EXT4 в формате raw. Вы можете получить ядро и образ корневой файловой системы по следующей ссылке: https://repo.openeuler.org/openEuler-22.03-LTS/stratovirt_img/. Для стандартной виртуальной машины требуется файл прошивки EDK2, который соответствует UEFI. ```shell # Если сокет qmp существует, удалите его сначала. # Запустите 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.md). StratoVirt поддерживает гораздо больше функций, подробное руководство можно найти в [Configuration Guidebook](docs/config_guidebook.md). **Дизайн** Чтобы узнать больше о базовой архитектуре дизайна StratoVirt, обратитесь к [StratoVirt design](./docs/design.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.