开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

部署核心组件

为构建一个安全的虚拟化环境,支持TEE的隔离执行和安全启动,需要部署相关软件,本小节主要描述如何安装libvirt、QEMU、Host Kernel、EDK2等组件。

编译环境信息

openEuler 24.03 LTS SP2/openEuler 24.03 LTS SP3

下载编译依赖:

sudo yum install ninja-build libcap-ng-devel libattr-devel glib2-devel numactl-devel libslirp-devel liburing-devel meson.noarch ncurses-devel openssl-devel elfutils-libelf-devel dwarves gnutls-devel yajl-devel libtirpc-devel python3-docutils libxml2-devel rpcgen libpciaccess-devel meson
sudo yum groupinstall "Development Tools"

部署libvirt

  1. 拉取源码。
    cd /home
    git clone https://gitcode.com/openeuler/libvirt.git -b libvirt-9.10.0 --depth=1
  2. 源码编译。
    # configure
    meson setup build  --prefix=/usr -Dsystem=true -Ddriver_qemu=enabled -Ddriver_libvirtd=enabled -Ddriver_remote=enabled -Dnumactl=enabled
    # remove `-Wswitch-enum`
    sed -i '/-Wswitch-enum/s/^/#/' meson.build
    # compile
    ninja -C build
  3. 安装部署。
    # install
    ninja -C build install
  4. 如果需要启动libvirt中透传dtb dump参数,需要修改libvirt配置使QEMU启动用户与当前OS用户一致。
    1. 查看当前用户。
      whoami 

    2. 打开“/etc/libvirt/qemu.conf”文件。
      vim /etc/libvirt/qemu.conf
    3. “i”进入编辑模式,将user、group配置项修改为“root”。

    4. “Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
    5. 查看libvirtd状态。
      systemctl status libvirtd
      如果libvirtd状态为inactive则执行如下命令启动libvirtd,否则需跳过此步骤,直接执行4.f
      systemctl start libvirtd

    6. 重新加载libvirtd配置。
      systemctl reload libvirtd

部署QEMU

  1. 拉取源码。
    cd /home
    git clone -b qemu-8.2.0 https://gitcode.com/openeuler/qemu.git --depth=1
  2. 源码编译。
    # configure
    cd qemu/
    rm -rf build && mkdir build
    cd build/
    ../configure --target-list=aarch64-softmmu --cc="gcc" --extra-cflags="-Wno-error" --disable-docs --enable-virtfs --enable-numa --enable-slirp
    
    # compile
    make -j$(nproc)

    编译成功后,在“qemu/build”目录下生成可执行文件qemu-system-aarch64。

部署Host Kernel

  1. 获取当前环境yum源下Kernel版本列表。
    yum list kernel --showduplicates

  2. 安装6.6.0-145.0.3及以上的Kernel版本。
    yum install kernel-6.6.0-141.0.0.136.oe2403sp2.aarch64

  3. reboot重启时选中新安装内核生效。

部署EDK2

  1. 下载EDK2源码。
    git clone https://gitcode.com/ComputingSecuritySolution/edk2.git -b openEuler-24.03-LTS-SP3
  2. 编译。
    cd edk2-tianocore/
    git submodule update --init --recursive
    source edksetup.sh
    make -j -C BaseTools
    build -b RELEASE -a AARCH64 -t GCC5 -D CC_MEASUREMENT_ENABLE=TRUE -p ArmVirtPkg/ArmVirtQemu.dsc

    生成fd的目录:Build/ArmVirtQemu-AARCH64/RELEASE_GCC5/FV/QEMU_EFI.fd

  3. 将QEMU_EFI.fd文件大小对齐到64MB。
    fallocate -l $((64 * 1024 * 1024)) /usr/share/edk2/aarch64/QEMU_EFI.fd