树莓派4b编译内核+mtu9000

树莓派4b编译内核+mtu9000

前言

最大传输单元(Maximum Transmission Unit,MTU)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。树莓派中默认为1500,但是树莓派中上限为16436,因此在一定程度上,限制了传输效率。
网上通常将mtu值从1500修改为9000,在外部修改,没有修改内核。本文将记录在内核修改MTU过程。

一.环境配置

需要安装

sudo apt update
sudo apt install git bc bison flex libssl-dev make
sudo apt install raspberrypi-kernel raspberrypi-kernel-headers
sudo apt-get install libncurses5-dev libssl-dev
 sudo apt-get install build-essential openssl
sudo apt-get install zlibc minizip

缺少啥安装啥,这是我总结过来的,兴许会多了也有可能少。
重点安装:交叉编译工具
1.下载:https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
2.安装交叉编译工具依赖

apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev

3.解压

tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar
mv ./gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu ~/gcc-linaro

4.配置环境

vim ~/.bashrc
###在最后一行添加
export PATH=$PATH:~/gcc-linaro/bin
source ~/.bashrc

二.下载树莓派内核

1.下载链接:https://github.com/raspberrypi
在这里插入图片描述
选择linux,下载对应的内核版本。我的是linux-rpi-5.9.y。下载后进行解压。

三,修改文件实现MTU9000

主要修改三处
1.linux-rpi-5.9.y/include/linux/if_vlan.h

#define VLAN_ETH_DATA_LEN	1500	/* Max. octets in payload	 */
#define VLAN_ETH_FRAME_LEN	1518	/* Max. octets in frame sans FCS */
修改为
#define VLAN_ETH_DATA_LEN	9000	/* Max. octets in payload	 */
#define VLAN_ETH_FRAME_LEN	9018	/* Max. octets in frame sans FCS */

2.linux-rpi-5.9.y/include/uapi/linux/if_ether.h

#define ETH_DATA_LEN	1500		/* Max. octets in payload	 */
#define ETH_FRAME_LEN	1514		/* Max. octets in frame sans FCS */
修改为
#define ETH_DATA_LEN	9000		/* Max. octets in payload	 */
#define ETH_FRAME_LEN	9014		/* Max. octets in frame sans FCS */

3.linux-rpi-5.9.y/drivers/net/ethernet/broadcom/genet/bcmgenet.c

#define RX_BUF_LENGTH		2048
修改为
#define RX_BUF_LENGTH		10240

四,编译

1.构建编译配置

cd linux  //linux修改为自己的内核包名字,即进入内核目录
KERNEL=kernel7l  
make bcm2711_defconfig

2.内核编译

make -j4 zImage modules dtbs

3.内核安装

sudo make modules_install
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
####替换内核名称,不保留原始内核
sudo cp arch/arm/boot/zImage /boot/$KERNEL.img
####保留原始内核
sudo cp arch/arm/boot/zImage /boot/kernel-my.img

4.修改配置文件

sudo nano /boot/config.txt

在文件最后一行加上

kernel=kernel-my.img

重启

sudo reboot

五,查看结果

内核版本查看
终端输入

uname -r

之前我的内核版本是5.10,现在修改到了自己编译的5.9。
MTU查看
终端输入

ifconfig

效果如下图,MTU值从默认的1500,提升到9000.
在这里插入图片描述

问题1:scripts/Kconfig.include:35: compiler ‘aarch64-linux-gnu-gcc’ not found
scripts/kconfig/Makefile:90: recipe for target ‘bcm2711_defconfig’ failed
解决方法:安装交叉编译依赖。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小俊俊的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值