环境:
系统:CentOS 6.8 内核版本:4.4.43 PF_RING版本:6.9.0编译PF_RING需要内核源码,由于我的机器上只有4.4.43版本的modules和4.4.43的源码,并没有在该机器上编译这个版本的内核,没有编译的中间文件,尝试编译PF_RING失败了,所以我先编译了一下内核。
Step 1. 编译内核。也许别人并不需要这一步。
我需要编译的原因是,我把编译内核的中间文件给删除了,也就是 /lib/module/x.x.xx 文件夹里 build 和 source 软连接指向的文件夹给删掉了,所以我要编译一遍内核,把这两个软连接指向我编译的目录。Step 2. 安装软件包,在编译过程中提示有两个命令找不到 bison、lex,编译前需要先安装 bison flex。
yum -y install bison flex
是的,安装的软件包是flex,不识别的命令是lex,不是我打错了。
Step 3. 卸载网卡驱动。这一步就比较谨慎了,别人说要先卸载网卡驱动,我不明白为什么这么做。卸载了网卡驱动,该机器的远程连接可能就会断了,我的机器上有两种网卡,e1000e和ixgbe,我需要编译的是ixgbe的驱动,机器接入局域网用的e1000e网卡,所以我远程卸载ixgbe驱动是没有问题的。假使要卸载的网卡驱动是正在使用的,就要去机器边上操作了。卸载libpcap。rpm -qa | grep libpcap查看安装版本, 然后执行rpm -e libpcapXXX卸载。
#查看安装版本rpm -qa | grep libpcap#卸载rpm -e libpcapXXX
Step 4. 编译、安装pf_ring。进入到PF_RING_DEV/kernel/文件夹下,执行 make编译, make install 安装 pf_ring驱动和头文件。这一步就可以获得 pf_ring.ko 了。
Step 5. 进入 userland/lib,把这个文件里和上个文件夹里的 configure 赋予可执行权限 chmod +x configure,执行 ./configure,make,这个时候就可以获得libpfring.a和libpfring.so文件了。
Step 6. 编译pcap库。进入userland/libpcap,赋予configure可执行权限,执行./configure , make,获得了libpcap.so,so文件后面可能会跟上版本号。
Step 7. 编译网卡驱动。我需要的ixgbe网卡驱动,进入drivers/intel/ixgbe/ixgbe-5.0.4/src,执行make,获得了ixgbe.ko文件。
到这一步,需要的文件差不多都有了,有几步中我只执行了make,并没有执行make install,是想把这些文件拿走放到自己的文件夹中使用。
drivers/intex/igb/igb-xxxx/src 这个文件夹中有 load_driver.sh 脚本文件,修改这个脚本文件中的路径和网卡类型名就可以使用了(执行这个脚本前还要在/mnt 路径下创建一个文件夹huge,不然挂不上大页)。