19

鲲鹏ARM环境编译升级虚拟化组件(QEMU+libvirt) - Frytea's Blog

 3 years ago
source link: https://blog.frytea.com/archives/559/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

本文首发于: https://blog.frytea.com/archives/559/

鲲鹏 ARM 环境编译升级虚拟化组件(QEMU+libvirt)

在 鲲鹏 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

---------------------
Author: Frytea
Title: 鲲鹏 ARM 环境编译升级虚拟化组件(QEMU+libvirt)
Link: https://blog.frytea.com/archives/559/
Copyright: This work by TL-Song is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK