linux 增加tc命令
tc命令是iproute2包中的一个工具,可以用了模拟网络延时、抖动、丢包等操作,有些设备上没有tc命令,需要手动增加。下面以zynqMP linux 5.4为例说明tc命令的移植过程
一、tc命令交叉编译
1、下载iproute2包源码:git clone https://github.com/shemminger/iproute2
2、解压源码包就入目录,运行configure配置脚本查看帮助
我们可以看到这里需要配置的就是--prefix这个个安装目录参数
3、source zynqmp的交叉编译环境
4、运行配置脚本./configure --prefix /home/yyfage/YY/open_source/iproute2/iproute2_install-6.1.0
5、脚本运行完成后,会生成一个config.mk的文件,这个就是Makfile会读取的配置文件。打开这个配置文件可以看到已经配置好了各种编译参数。像CC参数其实就是第三步source 交叉编译环境产生的环境变量CC
6、执行make编译程序
7、执行make install安装,不过这里执行安装有问题出现以下错误
安装不成功也没关系,我们关心的tc命令就这 tc目录中,直接把tc目录中生成的tc程序复制到板端即可
二、交叉编译iptables
要运行tc命令还需要iptables库的支持
1、下载iptables源码:git clone git://git.netfilter.org/iptables
2、运行autogen.sh 脚本生成configure配置脚本
3、执行./configure --prefix=/home/yyfage/YY/open_source/iproute2/iptables_isntall --host=aarch64-xilinx-linux --disable-nftables 配置工程,会生成Makefile文件
4、执行make编译
5、执行make install安装
6、将安装目录 lib下的libxtables.so.12复制到板端即可
三、内核配置
在内核源码目录中执行make ARCH=arm64 CROSS_COMPILE=aarch64-xilinx-linux- menuconfig打开内核配置选项,也可以用petalinux
1、进入 --> Networking support
--> Networking options
添加IP: advanced router 和IP: policy routing
2、进入 --> Networking support
--> Networking options
-->QoS and/or fair queueing
添加Network emulator (NETEM)