**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 с открытым исходным кодом.