前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >鲲鹏ARM环境编译升级虚拟化组件(QEMU+libvirt)

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

作者头像
宋天伦
发布2023-10-18 09:16:52
4140
发布2023-10-18 09:16:52
举报
文章被收录于专栏:fryteafrytea

本文 首发于 🌱 煎茶,请注明 来源。

在 鲲鹏 arm 环境下可以直接使用 yum 安装相关虚拟化组件(以 centos 为例):

代码语言:javascript
复制
yum -y install qemu* libvirt* AAVMF virt-install

但是软件库中的虚拟化组件版本较老,不支持 spice 等,而且对端口有限制,无法使用 virt-manager ,也无法对接 openstack 使用,因此需要分别升级 QEMU, libvirt。

(本文内容主要来自华为鲲鹏支持官网文档

鲲鹏 ARM 编译升级 QEMU(带有 OpenStack 相关组件)#

安装依赖包。

代码语言:javascript
复制
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/

代码语言:javascript
复制
wget https://download.qemu.org/qemu-4.0.0.tar.xz

1, 解压并进入 QEMU 目录。

代码语言:javascript
复制
tar -xvf qemu-4.0.0.tar.xz
cd qemu-4.0.0

2, 配置安装,若需对接 openstack 请包含相关依赖:

代码语言:javascript
复制
## 普通配置安装
./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

编译安装

代码语言:javascript
复制
# 多线程编译
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 库路径。

代码语言:javascript
复制
vim /etc/ld.so.conf
include /usr/local/lib

使 lib 库更改生效。

代码语言:javascript
复制
ldconfig

4, 检验 QEMU 版本。

代码语言:javascript
复制
qemu-img --version

鲲鹏 ARM 环境编译升级 libvirtd#

说明:

官方提供的 src.rpm 包在编译时,有一定几率会失败,需多次尝试。

安装 edk2#

  • 在线安装

执行如下命令在线安装 edk2

代码语言:javascript
复制
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

安装依赖包#

说明:本章节的操作需要外网可用或已配置本地源。

代码语言:javascript
复制
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 源码包。

代码语言:javascript
复制
rpm -i libvirt-5.6.0-1.fc30.src.rpm

2, 生成 rpm 包。

代码语言:javascript
复制
cd /root/rpmbuild/SPECS/
rpmbuild -ba libvirt.spec

说明: 官方提供的 src.rpm 包在编译时,有一定几率会失败,需多次尝试。

3, 安装 rpm 包。

代码语言:javascript
复制
cd /root/rpmbuild/RPMS/aarch64/yum -y install *.rpm

4, 修改配置文件。

打开 qemu.conf 文件。

代码语言:javascript
复制
vim /etc/libvirt/qemu.conf

添加如下配置。

代码语言:javascript
复制
nvram = ["/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2.git/aarch64/vars-template-pflash.raw"]

5, 重启 libvirtd 服务。

代码语言:javascript
复制
service libvirtd restart
systemctl restart libvirtd

6, 关闭 SELinux。

代码语言:javascript
复制
setenforce 0

参考文献#

注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 鲲鹏 ARM 编译升级 QEMU(带有 OpenStack 相关组件)#
    • 编译安装#
    • 鲲鹏 ARM 环境编译升级 libvirtd#
      • 安装 edk2#
        • 安装依赖包#
          • 编译安装#
          • 参考文献#
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档