在 鲲鹏 arm 环境下可以直接使用 yum 安装相关虚拟化组件(以 centos 为例):
yum -y install qemu* libvirt* AAVMF virt-install
但是软件库中的虚拟化组件版本较老,不支持 spice
等,而且对端口有限制,无法使用 virt-manager
,也无法对接 openstack 使用,因此需要分别升级 QEMU, libvirt。
(本文内容主要来自华为鲲鹏支持官网文档)
鲲鹏 ARM 编译升级 QEMU(带有 OpenStack 相关组件)
安装依赖包。
yum -y install glib2-devel zlib-devel pixman-devel libaio-devel glib libffi-devel gcc gcc-c++ automake libtool bzip2-devel libuuid-devel spice-protocol spice-server-devel usbredir-devel gtk3-devel SDL2-devel libjpeg-turbo-devel crudini librbd-devel snappy-devel
编译安装
说明:QEMU 默认安装在“/usr/local”下,源码包的下载请参见获取软件包。
使用的是 qemu-4.0.0 版本。该 arm 版本暂不支持虚拟机热迁移功能(支持冷迁移),若有虚拟机热迁移需求,可根据 openEuler 中的 patch 包进行补丁升级,链接如下:https://gitee.com/src-openeuler/qemu/tree/openEuler-20.03-LTS/
wget https://download.qemu.org/qemu-4.0.0.tar.xz
1, 解压并进入 QEMU 目录。
tar -xvf qemu-4.0.0.tar.xz
cd qemu-4.0.0
2, 配置安装,若需对接 openstack 请包含相关依赖:
## 普通配置安装
./configure --target-list=aarch64-softmmu --enable-linux-aio
## 配置安装,同时带有 openstack 相关依赖
../configure --prefix=/usr --target-list="aarch64-softmmu" \
--enable-rbd --enable-debug --enable-vnc --enable-vnc-jpeg --enable-vnc-png \
--enable-kvm --enable-spice --enable-curl --enable-snappy --enable-tools --enable-spice --enable-libusb \
--enable-usb-redir --enable-linux-aio
编译安装
# 多线程编译
make -j64
make install
# 链接 qemu-kvm ,若链接存在请先删除
ln -s /usr/bin/qemu-system-aarch64 /usr/bin/qemu-kvm
ln -s /usr/bin/qemu-system-aarch64 /usr/libexec/qemu-kvm
3, 添加 lib 库。
添加 lib 库路径。
vim /etc/ld.so.conf
include /usr/local/lib
使 lib 库更改生效。
ldconfig
4, 检验 QEMU 版本。
qemu-img --version
鲲鹏 ARM 环境编译升级 libvirtd
说明:
官方提供的 src.rpm 包在编译时,有一定几率会失败,需多次尝试。
安装 edk2
- 在线安装
执行如下命令在线安装 edk2
wget https://www.kraxel.org/repos/firmware.repo -O /etc/yum.repos.d/firmware.repo
yum -y install edk2.git-aarch64
- 离线安装
在有外网的环境下访问https://www.kraxel.org/repos/jenkins/edk2/,获取 rpm 包并拷贝至目标服务器系统相应位置。执行如下命令离线安装 edk2,如图2所示。
rpm -ivh edk2.git-aarch64*.rpm
安装依赖包
说明:本章节的操作需要外网可用或已配置本地源。
yum -y install libxml2-devel readline-devel ncurses-devel libtasn1-devel gnutls-devel libattr-devel libblkid-devel augeas systemd-devel libpciaccess-devel yajl-devel sanlock-devel libpcap-devel libnl3-devel libselinux-devel dnsmasq radvd cyrus-sasl-devel libacl-devel parted-devel device-mapper-devel xfsprogs-devel librados2-devel librbd1-devel glusterfs-api-devel glusterfs-devel numactl-devel libcap-ng-devel fuse-devel netcf-devel libcurl-devel audit-libs-devel systemtap-sdt-devel nfs-utils dbus-devel scrub numad
编译安装
说明:源码包的下载请参见获取软件包,本章以 libvirt-5.6.0 为例。该 Arm 版本暂不支持虚拟机热迁移功能(支持冷迁移),若有虚拟机热迁移需求,可根据 openEuler 中的 patch 包进行补丁升级,链接如下:https://gitee.com/src-openeuler/libvirt/tree/openEuler-20.03-LTS/
1, 安装 src.rpm 源码包。
rpm -i libvirt-5.6.0-1.fc30.src.rpm
2, 生成 rpm 包。
cd /root/rpmbuild/SPECS/
rpmbuild -ba libvirt.spec
说明:
官方提供的 src.rpm 包在编译时,有一定几率会失败,需多次尝试。
3, 安装 rpm 包。
cd /root/rpmbuild/RPMS/aarch64/yum -y install *.rpm
4, 修改配置文件。
打开 qemu.conf 文件。
vim /etc/libvirt/qemu.conf
添加如下配置。
nvram = ["/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2.git/aarch64/vars-template-pflash.raw"]
5, 重启 libvirtd 服务。
service libvirtd restart
systemctl restart libvirtd
6, 关闭 SELinux。
setenforce 0