树莓派4b编译内核+mtu9000 |
您所在的位置:网站首页 › 网卡mtu用处 › 树莓派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-dev3.解压 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-linaro4.配置环境 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_defconfig2.内核编译 make -j4 zImage modules dtbs3.内核安装 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.img4.修改配置文件 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 解决方法:安装交叉编译依赖。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |