编译QEMU并应用特性
QEMU虚拟机内存热插特性仅支持QEMU 6.2.0版本。获取QEMU 6.2.0源码后,先应用QEMU虚拟机内存热插特性Patch文件,再编译QEMU源码,即成功应用QEMU虚拟机内存热插特性。

因特性安装过程涉及到系统文件的修改,安装过程中的各操作默认由root用户执行,非root用户下进行相关操作应自行确保具有相关权限。
- 安装编译QEMU所需的依赖包。
yum -y install gcc gcc-c++ automake make python3 bzip2-devel zlib-devel glib2-devel pixman-devel librbd-devel openssl-devel spice*
- 获取适配openEuler 22.03 LTS SP4版本的QEMU源码。
git clone -b v6.2.0 --depth=1 https://git.qemu.org/git/qemu.git
- 创建QEMU源码的分支,并将分支切换到v6.2.0版本。
cd qemu git branch v6.2.0_patched v6.2.0 git checkout v6.2.0_patched
- 将QEMU源码目录与QEMU虚拟机内存热插特性Patch文件目录保持平级,并将Patch文件上传至编译环境。
QEMU Patch的获取路径请参见表2。
- 在QEMU源码目录下,将QEMU虚拟机内存热插特性Patch文件应用到QEMU源码。
- 检查QEMU v6.2.0原始版本的最新提交记录。
git log -n 2
- 验证Patch文件Add-Support-for-numa-being-initialized-with-mem-0-an.patch是否可以成功应用到当前代码库,实际补丁文件路径可自行配置,但应确保相应补丁文件存在。
git apply --check ../Add-Support-for-numa-being-initialized-with-mem-0-an.patch
如果上述命令没有返回任何错误信息,表示Patch文件与当前代码库兼容,可以安全地应用。
- 将Patch文件应用到当前分支。
git am ../Add-Support-for-numa-being-initialized-with-mem-0-an.patch
- 应用Patch文件后,再次检查最新的提交记录。
git log -n 2
如果Patch文件成功应用,会看到最新的提交记录已经更新。
如果使用的是git apply命令来应用Patch文件,那么它不会创建一个新的提交记录,此时如果没有返回错误回显,即表示Patch文件已成功应用。
一旦成功应用Patch文件,当前目录下的QEMU源码就已经包含了所需的QEMU虚拟机内存热插特性,可以准备编译QEMU。
- 检查QEMU v6.2.0原始版本的最新提交记录。
- 编译QEMU。
rm -rf build && mkdir build cd build/ ../configure --disable-werror --enable-spice --enable-spice-protocol --target-list=aarch64-softmmu --cc="gcc" --extra-cflags="-Wno-error" --disable-docs --enable-virtfs --enable-numa make -j 64
make -j 64命令中的64表示同时执行64个线程。用户可以根据系统的CPU核数或可用资源来调整这个数值。
- 在build目录下安装并部署QEMU。
make install
部署QEMU完成后,环境中已经成功应用QEMU虚拟机内存热插特性。合入特性后,默认特性为使能状态,无需手动开启。
利用XML文件定义虚拟机时,需要在该XML文件的<devices>节点下新增<emulator>节点,并将其路径指向刚刚安装的QEMU可执行文件。例如,在本例中,应新增如下内容。
<emulator>/usr/local/bin/qemu-system-aarch64</emulator>
父主题: 安装和使用