站内交易
每日签到
周边相关
收藏本站
切换到宽版
论坛
NaixiBBS
扩展
Fun
商店
Shop
动态
Space
任务
Task
登录
注册
积分商店
道具商店
奶昔论坛
»
论坛
›
交流
›
技术
›
(原创/技术向教程)为NanoPi R3s 编译一个支持eBPF的Ub ...
返回列表
发布新帖
查看:
141
|
回复:
1
(原创/技术向教程)为NanoPi R3s 编译一个支持eBPF的Ubuntu内核
奖
9 金币
回复本帖可获得 1 金币奖励! 每人限 1 次
(中奖概率 50%)
eerie
eerie
当前离线
积分
4067
雷达卡
发表于 2025-6-10 23:10:10
|
查看全部
|
阅读模式
欢迎注册账号,享受无广告更清爽的界面!
您需要
登录
才可以下载或查看,没有账号?
注册
×
第一步:安装编译依赖
使用 amd64 架构的 Ubuntu 20.04 操作系统即可。
sudo apt-get -y update
sudo apt-get install -y sudo curl
sudo bash -c "$(curl -fsSL <a href="https://raw.githubusercontent.com/friendlyarm/build-env-on-ubuntu-bionic/master/install.sh" target="_blank">https://raw.githubusercontent.com/friendlyarm/build-env-on-ubuntu-bionic/master/install.sh</a>)"
复制代码
大陆用户可使用以下命令以获得更快的下载速度:
sudo bash -c "$(curl -fsSL <a href="http://112.124.9.243:3000/friendlyelec/build-env-on-ubuntu-bionic/raw/branch/cn/install.sh" target="_blank">http://112.124.9.243:3000/friendlyelec/build-env-on-ubuntu-bionic/raw/branch/cn/install.sh</a>)"
复制代码
上述脚本运行成功后,会在在 Ubuntu 安装以下交叉编译器:
版本
架构
编译器路径
用途
4.9.3
armhf
/opt/FriendlyARM/toolchain/4.9.3
用于编译 armhf 架构的应用程序
6.4
aarch64
/opt/FriendlyARM/toolchain/6.4-aarch64
用于交叉编译 4.4 内核
11.3
aarch64
/opt/FriendlyARM/toolchain/11.3-aarch64
用于交叉编译 4.19 及以上内核(含 5.10, 6.1)及 uboot
第二步:设置环境变量
使用 vim 编辑 ~/.bashrc,使用 GG 跳到文件结尾,另起一行加入以下内容:
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin:$PATH
export GCC_COLORS=auto
复制代码
使用WSL进行编译时,请额外添加 export PATH=$(echo "$PATH" | tr ':' '\n' | grep -v '^/mnt/c/' | tr '\n' ':' | sed 's/:$//')
执行以下命令使环境变量生效:
. ~/.bashrc
复制代码
验证是否安装成功:
aarch64-linux-gcc -v
复制代码
输出应包含以下信息:
Using built-in specs.
COLLECT_GCC=aarch64-linux-gcc
...
gcc version 11.3.0 (ctng-1.25.0-119g-FA)
复制代码
第三步:下载源代码(请下载NanoPi官方验证版本)
git clone <a href="https://github.com/friendlyarm/kernel-rockchip" target="_blank">https://github.com/friendlyarm/kernel-rockchip</a> --single-branch --depth 1 -b nanopi6-v6.1.y kernel-rockchip
cd kernel-rockchip
export PATH=/opt/FriendlyARM/toolchain/11.3-aarch64/bin/:$PATH
touch .scmversion
复制代码
第四步:加入 eBPF 支持
使用 vim 编辑 arch/arm64/configs/nanopi5_linux_defconfig 文件,跳到文件结尾,添加以下依赖项:
CONFIG_DEVEL=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_REDUCED=n
CONFIG_DEBUG_INFO_BTF=y
CONFIG_CGROUPS=y
CONFIG_CGROUP_BPF=y
CONFIG_BPF_EVENTS=y
CONFIG_BPF_TOOLCHAIN_HOST=y
CONFIG_XDP_SOCKETS=y
CONFIG_PACKAGE_kmod-xdp-sockets-diag=y
复制代码
第五步:编译
配置内核
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 nanopi5_linux_defconfig
复制代码
编译内核
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 -j$(nproc)
复制代码
编译驱动模块
mkdir -p out-modules && rm -rf out-modules/*
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 INSTALL_MOD_PATH="$PWD/out-modules" modules -j$(nproc)
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 INSTALL_MOD_PATH="$PWD/out-modules" modules_install
复制代码
获取内核版本:
KERNEL_VER=$(make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 kernelrelease)
复制代码
确保生成的模块依赖文件存在:
[ ! -f "$PWD/out-modules/lib/modules/${KERNEL_VER}/modules.dep" ] && depmod -b $PWD/out-modules -E Module.symvers -F System.map -w ${KERNEL_VER}
(cd $PWD/out-modules && find . -name \*.ko | xargs aarch64-linux-strip --strip-unneeded)
复制代码
第六步:打包 kernel.img
下载并设置可执行权限:
wget <a href="https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3566/kernel-6.1.y/tools/mkkrnlimg" target="_blank">https://raw.githubusercontent.com/friendlyarm/sd-fuse_rk3566/kernel-6.1.y/tools/mkkrnlimg</a> && chmod 755 mkkrnlimg
复制代码
生成 kernel.img:
./mkkrnlimg arch/arm64/boot/Image kernel.img
复制代码
完成后会得到如下文件:
kernel.img
驱动模块位于 out-modules 目录
复制代码
第七步:安装 kernel
在开发板命令台,使用 parted 命令查看分区布局(如果缺少该包,可以通过
apt install parted
安装):
parted /dev/mmcblk2 print
复制代码
得到如下输出:
Model: MMC AT3SFB (sd/mmc)
Disk /dev/mmcblk2: 31.3GB
...
Number Start End Size File system Name Flags
1 8389kB 12.6MB 4194kB uboot
2 12.6MB 16.8MB 4194kB misc
...
5 37.7MB 79.7MB 41.9MB kernel
...
复制代码
kernel 分区的序号为 5,对应的设备节点为 /dev/mmcblk2p5,使用 dd 命令如下:
dd if=kernel.img of=/dev/mmcblk2p5 bs=1M
复制代码
第八步:安装新内核驱动模块
必须
安装新驱动模块(否则可能会导致网卡驱动失效)。
将编译产生的 out-modules 目录上传并替换 /lib/modules 目录下的文件即可。
最后验证替换成功,进入 /lib/modules 目录,可以看到名字与新安装内核版本相同的文件夹,例如:
#ls /lib/modules/
6.1.99
复制代码
结尾(免责声明):
本文步骤按照官方Wiki制作,操作前请确保有技术实力,其他需求和usb线刷救砖文件请转到官方文档自寻。
附官方链接 <a href="https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R3S/zh" target="_blank">https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R3S/zh</a>
复制代码
爱生活,爱奶昔~
回复
使用道具
举报
提升卡
置顶卡
变色卡
顶贴箭
nicexi
nicexi
当前离线
积分
735
雷达卡
发表于 2025-6-10 23:11:42
|
查看全部
回帖奖励
+1
金币
为啥不用Markdown啊,而且论坛有MdEdit(Markdown编辑器)
爱生活,爱奶昔~
回复
支持
反对
使用道具
举报
返回列表
发布新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
相关网站
9eSIM
Xesim (原5ber)
eSIM.GG
RedteaGO
站内导航
奶昔SSO
奶昔超市
数字证书
奶昔云盘
商业推广
商家申请规则
Apply for Provider
合作商家展示
广告招商
卡粉专属群
官方电报群
© 2025
Naixi Networks
沪ICP备13020230号-1
|
沪公网安备 31010702007642号
关灯
在本版发帖
扫一扫添加微信客服
返回顶部
快速回复
返回顶部
返回列表