RPM 环境准备
mkdir -p /root/rpmbuild/SOURCES
DPDK 编译
cp dpdk-16.07.tar.gz /root/rpmbuild/SOURCES
修改pkg/dpdk.spec
sed -ri 's,-native-linuxapp-gcc,-ivshmem-linuxapp-gcc,' pkg/dpdk.spec
sed -ri 's,BuildRequires,#BuildRequires,' pkg/dpdk.spec
sed -ri 's,make O=%\{target\} doc,#make O=%\{target\} doc,' pkg/dpdk.spec
sed -ri 's,docdir=%\{_docdir\}/dpdk,,' pkg/dpdk.spec
sed -ri 's,%package doc,#%package doc,' pkg/dpdk.spec
sed -ri 's,%description doc,#%description doc,' pkg/dpdk.spec
sed -ri 's,%files doc,#%files doc,' pkg/dpdk.spec
sed -ri 's,%doc %\{_docdir\}/dpdk,#%doc %\{_docdir\}/dpdk,' pkg/dpdk.spec
删除sed -ri 's,(LIBRTE_PMD_XENVIRT=).*,\1y,' %{target}/.config
rpmbuild -bb pkg/dpdk.spec
OVS 编译
cp openvswitch-2.6.1.tar.gz /root/rpmbuild/SOURCES
cd /root/zzx/openvswitch-2.6.1
sed -ri 's,%bcond_with dpdk,%bcond_without dpdk,' rhel/openvswitch-fedora.spec
rpmbuild -bb rhel/openvswitch-fedora.spec
新版本
dpdk的16.11.1版本已经发布了,是LTS版。
openvswitch的2.7.0版本也发布了,依赖16.11版,首个将DPDK移除了实验标签的版本。所以我觉得我们可以行动了,重新run起来吧。
DPDK 重新编译
这里我需要提一下,dpdk提供的pdump程序如果编译DPDK的时候编译成动态库,没有链接任何驱动的动态库,所以抓包就会有问题,需要修改一下动态链接库的配置。
cp dpdk-16.11.1.tar.gz /root/rpmbuild/SOURCES
修改pkg/dpdk.spec
sed -ri 's,BuildRequires,#BuildRequires,' pkg/dpdk.spec
sed -ri 's,make O=%\{target\} doc,#make O=%\{target\} doc,' pkg/dpdk.spec
sed -ri 's,docdir=%\{_docdir\}/dpdk,,' pkg/dpdk.spec
sed -ri 's,%package doc,#%package doc,' pkg/dpdk.spec
sed -ri 's,%description doc,#%description doc,' pkg/dpdk.spec
sed -ri 's,%files doc,#%files doc,' pkg/dpdk.spec
sed -ri 's,%doc %\{_docdir\}/dpdk,#%doc %\{_docdir\}/dpdk,' pkg/dpdk.spec
删除sed -ri 's,(LIBRTE_PMD_XENVIRT=).*,\1y,' %{target}/.config
rpmbuild -bb pkg/dpdk.spec
OVS 重新编译
tar xvf openvswitch-2.7.0.tar.gz
cd openvswitch-2.7.0
./boot.sh
./configure CFLAGS="-g -O2 -mssse3" or ./configure CFLAGS="-g -O2 -msse4.2" or ./configure CFLAGS="-g -O2 -march=native"
make rpm-fedora RPMBUILD_OPT="--with dpdk --without check"