# Начало работы со StratoVirt ## 1. Подготовка * **Хостовая ОС** Вы можете запускать StratoVirt на платформах x86_64 и aarch64. Также StratoVirt основан на KVM, поэтому убедитесь, что у вас установлен модуль KVM на вашей платформе. * **Права доступа** У вас должны быть права на чтение и запись в `/dev/kvm`. Если нет, вы можете получить их с помощью: ```shell $ sudo setfacl -m u:${USER}:rw /dev/kvm ``` ## 2. Получение бинарного файла StratoVirt StratoVirt предлагается openEuler 20.09 или более поздней версией. Вы можете установить его напрямую через yum. ```shell $ sudo yum install stratovirt ``` Теперь вы можете найти бинарный файл StratoVirt по пути: `/usr/bin/stratovirt`. Если вы хотите собрать StratoVirt самостоятельно, ознакомьтесь с [build_guide](./build_guide.md). ## 3. Запуск StratoVirt С бинарным файлом StratoVirt (установленным через yum или собранным из исходного кода) мы можем загрузить гостевую Linux-машину. Сейчас StratoVirt предоставляет два типа машин: microvm и standard_vm («q35» на платформе x86_64 и «virt» на платформе aarch64). В качестве быстрого старта мы покажем, как запустить виртуальную машину с microvm. Сначала вам понадобится двоичный файл ядра Linux в формате PE и образ файловой системы ext4 (в качестве rootfs). * Источник загрузки для x86_64: [ядро](https://repo.openeuler.org/openEuler-22.03-LTS/stratovirt_img/x86_64/vmlinux.bin) и [rootfs](https://repo.openeuler.org/openEuler-22.03-LTS/stratovirt_img/x86_64/openEuler-22.03-LTS-stratovirt-x86_64.img.xz). * Источник загрузки для aarch64: [ядро](https://repo.openeuler.org/openEuler-22.03-LTS/stratovirt_img/aarch64/vmlinux.bin) и [rootfs](https://repo.openeuler.org/openEuler-22.03-LTS/stratovirt_img/aarch64/openEuler-22.03-LTS-stratovirt-aarch64.img.xz). Или получите ядро и rootfs с помощью оболочки: ```shell arch=`uname -m` dest_kernel="vmlinux.bin" dest_rootfs="rootfs.ext4" image_bucket_url="https://repo.openeuler.org/openEuler-22.03-LTS/stratovirt_img" if [ ${arch} = "x86_64" ] || [ ${arch} = "aarch64" ]; then kernel="${image_bucket_url}/${arch}/vmlinux.bin" rootfs="${image_bucket_url}/${arch}/openEuler-22.03-LTS-stratovirt-${arch}.img.xz" else echo "Cannot run StratoVirt on ${arch} architecture!" exit 1 fi echo "Downloading $kernel..." wget ${kernel} -O ${dest_kernel} --no-check-certificate echo "Downloading $rootfs..." wget ${rootfs} -O ${dest_rootfs}.xz --no-check-certificate xz -d ${dest_rootfs}.xz echo "kernel file: ${dest_kernel} and rootfs image: ${dest_rootfs} download over." ``` Запустите гостевую Linux-машину с помощью StratoVirt: ```shell socket_path=`pwd`"/stratovirt.sock" kernel_path=`pwd`"/vmlinux.bin" rootfs_path=`pwd`"/rootfs.ext4" # Убедитесь, что QMP можно создать. rm -f ${socket_path} # Запустите Linux VM с типом машины «microvm» с помощью StratoVirt. /usr/bin/stratovirt \ -machine microvm \ -kernel ${kernel_path} \ -smp 1 \ -m 1024 \ -append "console=ttyS0 pci=off reboot=k quiet panic=1 root=/dev/vda" \ -drive file=${rootfs_path},id=rootfs,readonly=off,direct=off \ -device virtio-blk-device,drive=rootfs,id=rootfs \ -qmp unix:${socket_path},server,nowait \ -serial stdio ``` Вы должны увидеть последовательный вывод в stdio, предлагающий вам войти в гостевую машину. Если вы использовали наш образ `openEuler-22.03-LTS-stratovirt.img`, вы можете войти как `root`, используя пароль `openEuler12#$`. Если вы хотите завершить работу гостевой машины, использование команды `reboot` внутри гостевой машины фактически приведёт к выключению StratoVirt. Это связано с тем, что StratoVirt не реализовал управление питанием гостя в типе microvm. Если вы хотите узнать больше информации о запуске StratoVirt, перейдите в [Руководство по настройке](./config_guidebook.md).