1 基于centos8 qemu src rpm
1.1 环境准备
下载src rpm
安装额外的repo
- epel
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
或者
yum install epel-release -y
- enable powertools
编辑/etc/yum.repos.d/CentOS-PowerTools.repo,设置enabled=1
准备rpmbuild开发环境
https://blog.csdn.net/get_set/article/details/53453320
- yum install -y rpm-build rpmdevtools
- cd /root && rpmdev-setuptree
rpmdev-setuptree这个命令就是安装rpmdevtools带来的。可以看到运行了这个命令之后,在$HOME目录下多了一个叫做rpmbuild的文件夹,里边内容如下:
$ tree rpmbuild
rpmbuild
├── BUILD
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS
安装src rpm
rpm -ivh qemu-kvm-2.12.0-99.module_el8.2.0+524+f765f7e0.4.src.rpm
src rpm会安装到$HOME/rpmbuild/下
安装rpmbuild qemu-kvm.spec的依赖
在$HOME/rpmbuild/SPECS/下执行rpmbuild -bp qemu-kvm.spec时会报缺少以下依赖
[root@localhost SPECS]# rpmbuild -bp qemu-kvm.spec
error: Failed build dependencies:
bluez-libs-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
brlapi-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
check-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
cyrus-sasl-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
device-mapper-multipath-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
glib2-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
glusterfs-api-devel >= 3.6.0 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
glusterfs-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
gnutls-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
iasl is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libaio-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libattr-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libcacard-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libcap-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libcap-ng-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libcurl-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libgcrypt-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libiscsi-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libpmem-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libpng-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
librados-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
librbd-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libseccomp-devel >= 2.4.0 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libssh-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libusbx-devel >= 1.0.22 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
libuuid-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
lzo-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
ncurses-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
nss-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
numactl-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
pciutils-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
pixman-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
pkgconfig(epoxy) is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
pkgconfig(gbm) is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
pkgconfig(libdrm) is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
pkgconfig(xkbcommon) is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
python3-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
rdma-core-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
snappy-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
spice-protocol >= 0.12.12 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
spice-server-devel >= 0.12.8 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
systemd-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
systemtap-sdt-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
texinfo is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
usbredir-devel >= 0.7.1 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
zlib-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64
其中,比较特殊的依赖有
- iasl
yum search iasl是找不到相关包,但是可以直接yum install -y iasl,因为iasl是在acpica-tools中的
- python3-devel
yum search python3-devel,是找不到相关包,但是可以直接yum install -y python3-devel
然后建立软连接
ln -sf /usr/bin/python3 /usr/bin/python
- pkgconfig(epoxy)
yum install -y libepoxy-devel.x86_64
- pkgconfig(gbm)
yum install -y mesa-libgbm-devel.x86_64
- pkgconfig(libdrm)
yum install -y libdrm-devel.x86_64
- pkgconfig(xkbcommon)
yum install -y libxkbcommon-devel.x86_64
其他的包,可以直接使用以下命令安装
yum install -y bluez-libs-devel brlapi-devel check-devel cyrus-sasl-devel device-mapper-multipath-devel glib2-devel glusterfs-api-devel glusterfs-devel gnutls-devel libaio-devel libattr-devel libcacard-devel libcap-devel libcap-ng-devel libcurl-devel libgcrypt-devel libiscsi-devel libpmem-devel libpng-devel librados-devel librbd-devel libseccomp-devel libssh-devel libusbx-devel libuuid-devel lzo-devel ncurses-devel nss-devel numactl-devel pciutils-devel pixman-devel rdma-core-devel snappy-devel spice-protocol spice-server-devel systemd-devel systemtap-sdt-devel texinfo usbredir-devel zlib-devel
2 直接build qemu code
- 编译命令
./configure --enable-kvm --prefix=/home/zhanghaoyu/qemu-obj/ --enable-debug --target-list=x86_64-softmmu
make && make install
- 依赖包安装
- python