# 编译 qemu,libvirt, qemu rpm 包和 libvirt rpm 包

## 环境准备

Host OS CentOS 8.2

Libvirt libvirt-6.10.0

Qemu qemu-5.2.0

### 增加用户

如果是VM 环境,建议直接使用root用户,可以避免一些权限问题

```

useradd ino

usermod -a -G root ino

passwd ino

Changing password for user ino.

```

### 准备源文件

libvirt :

```

wget https://libvirt.org/sources/libvirt-6.10.0.tar.xz

```

qemu:

```

wget https://download.qemu.org/qemu-5.2.0.tar.xz

```

libvirt RPM spec :

libvirt 压缩包内有一个参考,

```

~/libvirt-6.10.0/libivrt.spec

```

qemu rpm spec:

```

wget https://src.fedoraproject.org/rpms/qemu/blob/master/f/qemu.spec

```

我的电脑上目录如下

```

tree -L 2

|-- libvirt

| |-- libvirt-6.10.0

| |-- libvirt-6.10.0.tar.xz

| `-- libvirt.spec

|-- qemu

| |-- qemu-5.2.0

| |-- qemu-5.2.0.tar.xz

| |-- qemu.spec

| `-- rpm

`-- rpmbuild

|-- BUILD

|-- RPMS

|-- SOURCES

|-- SPECS

`-- SRPMS

```

## 安装依赖

dnf --enablerepo=PowerTools install -y wget git automake gcc make glibc glibc-utils glib2-devel zlib-devel pixman-devel flex bison numad numactl-devel numactl-libs numactl libtool gnutls-utils gnutls-devel libnl3-devel libxml2-devel libtirpc-devel python3-docutils device-mapper-devel libpciaccess-devel rpcbind readline-devel rpcgen yajl-devel libxslt-devel bzip2 ninja-build rpmdevtools rpm-build

### 安装源

```

rpmdev-setuptree

cd ~

wget https://download.qemu.org/qemu-5.2.0.tar.xz

wget https://libvirt.org/sources/libvirt-6.10.0.tar.xz

```

## 操作分步

### 编译 qemu

#### 可执行文件

```

tar xvf qemu-5.2.0.tar.xz

cd qemu-5.2.0

mkdir -p build

cd build

../configure --enable-trace-backend=simple --enable-debug --target-list=x86_64-softmmu --prefix=/usr/local

make -j

sudo make install

```

生成 qemu-system-x86_64 qemu 主程,并安装在 /usr/local/bin 目录下

#### rpm 包

##### 安装devel lib 及 devels

```

wget https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/e/epel-release-8-10.el8.noarch.rpm

rpm -Uvh epel-release-8-10.el8.noarch.rpm

dnf --enablerepo=PowerTools install -y SDL2-devel alsa-lib-devel brlapi-devel bzip2-devel chrpath daxctl-devel device-mapper-multipath-devel gtk3-devel libaio-devel libcacard-devel libdrm-devel libepoxy-devel libfdt-devel libjpeg-devel libpmem-devel libpng-devel libseccomp-devel libslirp-devel libusbx-devel libzstd-devel lzo-devel mesa-libgbm-devel pam-devel perl-Test-Harness pulseaudio-libs-devel python3-sphinx rdma-core-devel snappy-devel spice-protocol spice-server-devel systemtap texinfo usbredir-devel vte291-devel capstone-devel libnfs-devel capstone-devel cyrus-sasl-devel glusterfs-api-devel libattr-devel libcap-ng-devel libcurl-devel libiscsi-devel libnfs-devel librbd-devel libssh-devel meson python3-devel systemtap-sdt-devel

```

#####

```

cd ~

git clone https://src.fedoraproject.org/rpms/qemu.git

rpmdev-setuptree

cp ~/qemu/qemu.spec ~/rpmbuild/SPEC/

cp ~/qemu/*.* ~/rpmbuild/SOURCES

cp ~/qemu/qemu-5.2.0.tar.xy ~/rpmbuild/SOURCES

cd ~/rpmbuild/SPEC/

rpmbuild -ba qemu.spec

```

一直等待完成build

在rpmbuild/RPMS 目录下会看到x86_64/qemu*.rpm

mv x86_64 qemu-x86_64

这里要把 名字改一下,为了方便后续生成的libvirt时也生成 x86_64   目录,让两者混在一起

### 编译libvirt

#### 可执行文件

```

dnf install https://pkgs.dyn.su/el8/extras/x86_64/meson-0.54.0-1.el8.noarch.rpm

#或者

dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

dnf install meson -y

cd ~

tar xvf libvirt-6.10.0.tar.xz

cd libvirt-6.10.0

meson build --prefix=$HOME/libvirt_build

ninja -C build

sudo ninja -C build install

```

#### libvirt rpm 包

```

dnf —enablerepo=PowerTools install audit-libs-devel augeas dnsmasq gettext-devel iscsi-initiator-utils libblkid-devel libpcap-devel netcf-devel nfs-utils parted-devel radvd sanlock-devel scrub wireshark-devel xfsprogs-devel

cp ~/libvirt-6.10.0.tar.xz ~/rpmbuild/SOURCE/

cp ~/libvirt-6.10.0/libvirt.spec ~/rpmbuild/SPECS/

cd ~/rpmbuild/SPECS/

rpmbuild -ba libvirt.spec

等待编译完成

同样在 rpmbuild/RPMS 目录下可以看到 x86_64目录下生成的libvirt rpm 包

```

# 编译 qemu,libvirt, qemu rpm 包和 libvirt rpm 包相关推荐

  1. libvirt/qemu特性之快照

    快照分类 磁盘快照 对磁盘数据进行快照.主要用于虚拟机备份等场合. 按快照信息保存为可以可以分为: (1)内置快照 快照数据和base磁盘数据放在一个qcow2文件中. (2)外置快照 快照数据单独的 ...

  2. KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain]

    KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain] 学习 KVM 的系列文章: (1)介绍和安装 (2)CP ...

  3. 8.使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]

    1. QEMU/KVM 迁移的概念 迁移(migration)包括系统整体的迁移和某个工作负载的迁移.系统整理迁移,是将系统上所有软件包括操作系统完全复制到另一个物理机硬件机器上.虚拟化环境中的迁移, ...

  4. KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]...

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  5. 静态编译qemu_使用QEMU chroot进行固件本地调试

    阅读: 2,905 QEMU是开发者在调试一些不同架构的程序时经常使用的虚拟机软件.它有两种运行模式,全系统模拟(System mode)和单程序运行(User mode).System mode和开 ...

  6. optee介绍(一)代码下载编译以及使用qemu运行

    系列文章目录 第一章 optee介绍(一)代码下载与编译 第二章 optee介绍(二)qemu run-only运行 文章目录 系列文章目录 前言 一.optee代码下载 1.repo方式下载 2.手 ...

  7. [Linux运维基础]全家桶详解!Linux中RPM包、wget下载、YUM安装、tar包、zip等包管理方式区别与参数详解,附wget下载源码包编译安装方法

    文章目录 一.RPM.tar.gz 1.rpm包格式 2.rpm包管理 3.tar包管理参数 二.wget 1.wget参数 2.wget下载源码包后编译安装 三.YUM 1.YUM工作原理 2. Y ...

  8. Linux-什么是二进制包,源码包,RPM包,软件仓库

    博文说明[前言]: 本文将通过个人口吻介绍什么是二进制包,RPM包,源码RPM包(SRPM包),源码包,以及RPM常用命令,源码rpm的安装(*.src.rpm),源码包的安装步骤知识(./confi ...

  9. 安装软件包的三种方法、rpm包介绍、rpm工具用法、yum工具用法、yum搭建本地仓库...

    为什么80%的码农都做不了架构师?>>>    安装软件包的三种方法 rpm工具 yum工具 源码包 rpm rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linu ...

最新文章

  1. 人才管理是什么意思_你还不懂人才梯队建设,哪有机会升职加薪?
  2. mysql联合查询sql优化
  3. 电脑老是提示虚拟内存不足的原因及解决办法
  4. java基础入门数据类型,JAVA基础教程:JAVA的基本数据类型及介绍
  5. CSS进阶(二)——特性
  6. VMware虚拟机三种网络模式的区别
  7. python从入门到大神---4、python3文件操作最最最最简单实例
  8. javascript 字符串和json的互转
  9. pdf2htmlex linux,pdf2htmlEX Windows Version
  10. 科立捷默认频率_科立捷电子产品技术参数.doc
  11. C语言 Linux网络编程(C/S架构) 在线词典
  12. Spring Security 与 OAuth2(资源服务器)
  13. 高铁检测试验软件,高铁规划要点及测试情况分析
  14. android 高仿网易,Android项目实战教程之高仿网易云音乐启动页实例代码
  15. 鸿蒙系统清理垃圾,极速清理系统垃圾 一举收回上G磁盘空间
  16. 宁录哨兵机器人_能团灭X战警的哨兵机器人是漫威最强机器人吗?奥创:我不服!...
  17. 统一社会信用代码及其校验规则
  18. ftw遍历目录树 getcwd取得当前的工作目录
  19. 3ds Max场景卡顿的优化方法
  20. 便签记事内容怎么放到手机桌面上?

热门文章

  1. AxureRP(中英文版)——初识Axure(一)
  2. 【JVM学习笔记】-字节码-第一章(多图,多表,实操)
  3. 位图矢量化:Potrace的应用
  4. Reference counted Objects (引用计数对象) - 文章翻译
  5. LFM雷达实现及USRP验证【章节3:连续雷达测距测速】
  6. 计算机中可以由用户设置的文件属性,计算机考试模拟试题
  7. 【耀杨闯荡华儿街】(面试官)曹阿门:给我讲讲多线程;耀杨:md心态崩了~
  8. mysql写了代码如何看表_mysql之单表查询__我自己敲的代码
  9. 浙江大学ACM俱乐部 1036:镂空三角形
  10. 程序设计第二十二题 空心三角形