鲲鹏ARM环境编译升级虚拟化组件(QEMU+libvirt) - Frytea's Blog
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.
本文首发于: 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.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK