# Сборка StratoVirt из исходного кода ## 1. Проверка окружения Rust Для сборки StratoVirt убедитесь, что среда языка Rust и Cargo уже установлены. Рекомендуется использовать версию rustc 1.64.0 или более позднюю, иначе компиляция может завершиться неудачно. ```shell $ rustc --version rustc 1.64.0 ``` Если вы хотите развернуть окружение Rust, вам поможет следующая ссылка: <https://www.rust-lang.org/tools/install> ## 2. Сборка с glibc При использовании glibc StratoVirt связывается динамически. Это целевой объект по умолчанию для сборки StratoVirt. ```shell # Добавьте цепочку инструментов gnu rust, если она установлена, пропустите $ arch=`uname -m` $ rustup target add ${arch}-unknown-linux-gnu # Соберите StratoVirt $ cargo build --workspace --bins --release --target ${arch}-unknown-linux-gnu ``` Теперь вы можете найти двоичный файл StratoVirt в `target/${arch}-unknown-linux-gnu/release/stratovirt`. ## 3. Сборка с musl-libc StratoVirt также можно собрать с помощью инструментальных цепочек musl-libc. Таким образом, StratoVirt связан статически и не имеет зависимостей от библиотек. ```shell # Добавьте цепочку инструментов musl rust, если она установлена, пропустите $ arch=`uname -m` $ rustup target add ${arch}-unknown-linux-musl # Соберите StratoVirt $ cargo build --workspace --bins --release --target ${arch}-unknown-linux-musl ``` Теперь вы можете найти статический двоичный файл StratoVirt в `target/${arch}-unknown-linux-musl/release/stratovirt`. ## 4. Сборка с функциями Для различных сценариев StratoVirt предоставляет опции условной компиляции на основе груза `feature`. Список дополнительных функций: - scream_alsa: включить виртуальную звуковую карту с интерфейсом ALSA - scream_pulseaudio: включить виртуальную звуковую карту с интерфейсом PulseAudio - usb_host: включить устройство USB Host - usb_camera_v4l2: включить камеру USB с бэкэндом v4l2 - gtk: включить отображение GTK - vnc: включить отображение VNC - ramfb: включить устройство отображения ramfb - virtio_gpu: включить виртуализированную видеокарту virtio-gpu - pvpanic: включить виртуализированное устройство pvpanic pci ```shell $ cargo build --workspace --bins --release --features "scream_alsa" ``` ## 5. Компиляция версии OpenHarmony OS Stratovirt теперь может работать на OpenHarmony OS (OHOS). Stratovirt, версия OHOS, скомпилирован для x64 и использует набор инструментов для кросс-компиляции RUST и SDK, предлагаемый OHOS. Перед компиляцией укажите путь к SDK OHOS в переменной среды OHOS_SDK. Некоторые ящики, необходимые для StratoVirt, теперь не поддерживают платформу OHOS, необходима адаптация. Вот пример команды: ``` RUSTFLAGS="-C link-arg=--target=aarch64-linux-ohos -C linker={OHOS_SDK}/llvm/bin/clang" cargo build --target aarch64-linux-ohos --features {FEATURES}" ``` # Сборка статического StratoVirt в контейнерах ## 1. Проверьте окружение docker Чтобы собрать StratoVirt в контейнеры, убедитесь, что программное обеспечение docker установлено. Это можно проверить с помощью следующей команды: ```shell $ docker -v Docker version 18.09.0 ``` Если вы хотите настроить окружение docker, вам может помочь следующая ссылка: <https://docs.docker.com/get-docker/> ## 2. Запустите скрипт сборки Запустите скрипт в каталоге tools/build_stratovirt_static, чтобы автоматически запустить контейнер docker для сборки статически связанного StratoVirt. ```shell $ cd tools/build_stratovirt_static # Соберите StratoVirt с вашим custom_image_name $ sh build_stratovirt_from_docker.sh custom_image_name ``` После завершения сборки вы можете найти статически связанный двоичный файл StratoVirt по пути: `target/${arch}-unknown-linux-musl/release/stratovirt`.