背景
在arm64主机编译使能kvm模式的qemu工具,并用于openubmc镜像运行可以显著提升运行效率。
本文记录了如何在arm64主机上编译qemu-system-aarch64工具。
- arm64工具已上传到社区工具仓,一般情况用户无需手动构建和安装,请使用bingo qemu命令自动安装、运行qemu。
拉取Docker镜像
docker pull docker.1ms.run/library/ubuntu:24.04
# 如果拉取的不是arm64版本镜像,可以执行下面的命令指定架构
docker pull --platform=linux/arm64 docker.1ms.run/library/ubuntu:24.04
运行镜像
docker run -itd --name xuhj -v /Users/xuhaijun/workspace/qemu/:/home/workspace docker.1ms.run/library/ubuntu:24.04 /bin/bash
# 如果在kunpeng处理器上运行,检查 /dev/kvm存在的,可以使用--device命令映射,实现kvm加速
docker run -itd --name xuhj --device /dev/kvm:/dev/kvm -v /home/xuhj/workspace/qemu/:/home/workspace docker.1ms.run/library/ubuntu:24.04 /bin/bash
更新APT软件源
# 更新apt软件源
sed -i 's/ports.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list.d/ubuntu.sources
安装依赖
apt install -y gcc g++ python3 python3-pip pkgconf ninja-build libfdt-dev libglib2.0-dev libpixman-1-dev python3-jsonschema wget unzip cpio libslirp-dev python3 vim git
# 更新pypi软件源
pip config --user set global.index https://mirrors.huaweicloud.com/repository/pypi
pip config --user set global.index-url https://mirrors.huaweicloud.com/repository/pypi/simple
pip config --user set global.trusted-host mirrors.huaweicloud.com
pip config --user set global.extra-index-url https://pypi.org/simple
编译工具
git clone https://gitcode.com/openubmc/qemu.git
cd qemu
mkdir build
cd build
../configure --target-list=aarch64-softmmu --enable-kvm --disable-docs --disable-werror --enable-slirp
ninja -j"$(nproc)" qemu-system-aarch64
# 可选strip减少包大小
strip -s qemu-system-aarch64
部署到环境上
生成的qemu-system-aarch64工具可以安装到/usr/bin目录下,重命令为qemu-system-aarch64-release并添加可执行权限。
bingo qemu在运行时会首先检查系统是否已经存在qemu-system-aarch64-release工具,如果存在则不会下载,不存在时会从repo.openubmc.cn网站下载工具。