准备环境

使用说明

  • StratoVirt仅支持运行于x86_64和AArch64处理器架构下并启动相同架构的Linux虚拟机。
  • 建议在 openEuler 21.03 版本编译、调测和部署该版本 StratoVirt。
  • StratoVirt支持以非root权限运行。

环境要求

运行StratoVirt需要具备如下环境:

  • /dev/vhost-vsock设备(用于实现mmio)
  • nmap工具
  • Kernel镜像和rootfs镜像

准备设备和工具

  • StratoVirt运行需要实现mmio设备,所以运行之前确保存在设备/dev/vhost-vsock

查看该设备是否存在:

  1. $ ls /dev/vhost-vsock
  2. /dev/vhost-vsock

若该设备不存在,请执行如下命令生成/dev/vhost-vsock设备。

  1. $ modprobe vhost_vsock
  • 为了能够使用QMP命令,需要安装nmap工具,在配置yum源的前提下,可执行如下命令安装nmap。

    1. # yum install nmap

准备镜像

制作kernel镜像

当前版本的StratoVirt仅支持x86_64和AArch64平台的PE格式内核镜像。此格式内核映像可通过以下方法生成。

  1. 获取openEuler的kernel源代码,参考命令如下:

    1. $ git clone https://gitee.com/openeuler/kernel
    2. $ cd kernel
  2. 查看并切换kernel的版本到4.19,参考命令如下:

    1. $ git checkout kernel-4.19
  3. 配置并编译Linux kernel。可使用推荐配置(获取配置文件),将其复制到kernel路径下并重命名为.config。也可通过以下命令进行交互,根据提示完成kernel配置。

    1. $ make menuconfig
  4. 使用下面的命令制作并转换kernel镜像为PE格式,转化后的镜像为vmlinux.bin。

    1. $ make -j vmlinux && objcopy -O binary vmlinux vmlinux.bin
  5. 如果想在x86平台使用bzImzge格式的kernel,可以使用如下命令进行编译。

    1. $ make -j bzImage

制作rootfs镜像

rootfs镜像是一种文件系统镜像,在StratoVirt启动时可以装载带有init的ext4格式的镜像。下面是制作ext4 rootfs镜像的简单方法。

  1. 准备一个大小合适的文件(例如在/home中创建10GiB空间大小的文件)。

    1. $ cd /home
    2. $ dd if=/dev/zero of=./rootfs.ext4 bs=1G count=10
  2. 在此文件上创建空的ext4文件系统。

    1. $ mkfs.ext4 ./rootfs.ext4
  3. 挂载文件镜像。创建/mnt/rootfs,使用root权限,将rootfs.ext4挂载到/mnt/rootfs目录。

    1. $ mkdir /mnt/rootfs
    2. # 返回刚刚创建文件系统的目录(如/home)
    3. $ cd /home
    4. $ sudo mount ./rootfs.ext4 /mnt/rootfs && cd /mnt/rootfs
  4. 获取对应处理器架构的最新alpine-mini rootfs。

    • 如果是AArch64处理器架构,参考命令如下:

      1. $ wget http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/aarch64/alpine-minirootfs-3.12.0-aarch64.tar.gz
      2. $ tar -zxvf alpine-minirootfs-3.12.0-aarch64.tar.gz
      3. $ rm alpine-minirootfs-3.12.0-aarch64.tar.gz
    • 如果是x86_64处理器架构,参考命令如下:

      1. $ wget http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/x86_64/alpine-minirootfs-3.12.0-x86_64.tar.gz
      2. $ tar -zxvf alpine-minirootfs-3.12.0-x86_64.tar.gz
      3. $ rm alpine-minirootfs-3.12.0-x86_64.tar.gz
  5. 为ext4文件镜像制作一个简单的/sbin/init,参考命令如下:

    1. $ rm sbin/init; touch sbin/init && cat > sbin/init <<EOF
    2. #! /bin/sh
    3. mount -t devtmpfs dev /dev
    4. mount -t proc proc /proc
    5. mount -t sysfs sysfs /sys
    6. ip link set up dev lo
    7. exec /sbin/getty -n -l /bin/sh 115200 /dev/ttyS0
    8. poweroff -f
    9. EOF
    10. sudo chmod +x sbin/init
  6. 卸载rootfs镜像。

    1. $ cd /home; umount /mnt/rootfs

至此, rootfs制作成功,已可使用ext4 rootfs镜像文件rootfs.ext4,该文件在/home目录下。