部署核心组件
为构建一个安全的虚拟化环境,支持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
- 拉取源码。
cd /home git clone https://gitcode.com/openeuler/libvirt.git -b libvirt-9.10.0 --depth=1
- 源码编译。
# 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
- 安装部署。
# install ninja -C build install
- 如果需要启动libvirt中透传dtb dump参数,需要修改libvirt配置使QEMU启动用户与当前OS用户一致。
- 查看当前用户。
whoami

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

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

- 重新加载libvirtd配置。
systemctl reload libvirtd
- 查看当前用户。
部署QEMU
- 拉取源码。
cd /home git clone -b qemu-8.2.0 https://gitcode.com/openeuler/qemu.git --depth=1
- 源码编译。
# 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
- 获取当前环境yum源下Kernel版本列表。
yum list kernel --showduplicates

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

- reboot重启时选中新安装内核生效。
部署EDK2
- 下载EDK2源码。
git clone https://gitcode.com/ComputingSecuritySolution/edk2.git -b openEuler-24.03-LTS-SP3
- 编译。
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
- 将QEMU_EFI.fd文件大小对齐到64MB。
fallocate -l $((64 * 1024 * 1024)) /usr/share/edk2/aarch64/QEMU_EFI.fd
父主题: 部署软件