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 rpmbuildrpmbuild├── 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.specerror: Failed build dependencies:bluez-libs-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64brlapi-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64check-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64cyrus-sasl-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64device-mapper-multipath-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64glib2-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64glusterfs-api-devel >= 3.6.0 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64glusterfs-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64gnutls-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64iasl is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libaio-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libattr-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libcacard-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libcap-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libcap-ng-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libcurl-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libgcrypt-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libiscsi-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libpmem-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libpng-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64librados-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64librbd-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libseccomp-devel >= 2.4.0 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libssh-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libusbx-devel >= 1.0.22 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64libuuid-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64lzo-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64ncurses-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64nss-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64numactl-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64pciutils-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64pixman-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64pkgconfig(epoxy) is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64pkgconfig(gbm) is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64pkgconfig(libdrm) is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64pkgconfig(xkbcommon) is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64python3-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64rdma-core-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64snappy-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64spice-protocol >= 0.12.12 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64spice-server-devel >= 0.12.8 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64systemd-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64systemtap-sdt-devel is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64texinfo is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64usbredir-devel >= 0.7.1 is needed by qemu-kvm-15:2.12.0-99.el8.4.x86_64zlib-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-softmmumake && make install
- 依赖包安装
- python
