type
Post
status
Published
slug
2023/11/09/run-dae-on-Raspberry-Pi-OS
summary
tags
Linux
树莓派
category
技术分享
icon
password
new update day
Property
Nov 9, 2023 04:03 AM
created days
Last edited time
Nov 9, 2023 04:03 AM
0 查看要求
因为大鹅是基于 Linux ebpf 子系统,所以需要内核在 5.8 版本以上,并且支持 btf ,而默认的 Raspberry Pi OS 的内核虽然版本达到了要求,但是没有编译对应的 btf 内核特性,所以需要进行手动编译,并进行内核替换。
1 配置交叉编译环境
因为涉及到树莓派的内核编译,而树莓派的性能羸弱,如果直接在树莓派上进行内核编译,不知道猴年马月能够完成编译,所以准备使用交叉编译的方法进行内核编译。
1.1 安装 crosstool-ng
sudo pacman -S --needed git base-devel sudo pacman -S bc git clone https://aur.archlinux.org/yay.git cd yay makepkg -si sudo pacman -S clang llvm yay -S crosstool-ng
1.2 查看 crosstool-ng 预制配置文件
ct-ng show-aarch64-rpi4-linux-gnu [G...] aarch64-rpi4-linux-gnu Languages : C,C++ OS : linux-6.4 Binutils : binutils-2.40 Compiler : gcc-13.2.0 C library : glibc-2.38 Debug tools : gdb-13.2 Companion libs : expat-2.5.0 gettext-0.21 gmp-6.2.1 isl-0.26 libiconv-1.16 mpc-1.2.1 mpfr-4.2.1 ncurses-6.4 zlib-1.2.13 zstd-1.5.5 Companion tools :
1.3 使用 crosstool-ng 配置交叉编译工具
mkdir ct-ng cd ct-ng ct-ng aarch64-rpi4-linux-gnu ct-ng menuconfig # 配置一些需要的参数,工具链存储地址等信息 ct-ng build # 构建交叉编译工具链,等待完成 ## 编译完成的后工具链存储的地址 ls /home/XXX/x-tools/aarch64-rpi4-linux-gnu/bin
1.4 下载 raspberrypi linux 源码
git clone --depth=1 https://github.com/raspberrypi/linux.git rpi-linux-6.1.x cd rpi-linux-6.1.x
1.5 开始编译内核
export PATH=$PATH:/home/XXX/x-tools/aarch64-rpi4-linux-gnu/bin # 生成默认配置 make ARCH=arm64 CROSS_COMPILE=aarch64-rpi4-linux-gnu- bcm2711_defconfig # 开启配置菜单 make ARCH=arm64 CROSS_COMPILE=aarch64-rpi4-linux-gnu- menuconfig # 开启下面的内核编译选项 CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y CONFIG_DEBUG_INFO_COMPRESSED_ZLIB=y CONFIG_DEBUG_INFO_BTF=y CONFIG_KPROBE_EVENTS=y CONFIG_BPF_EVENTS=y CONFIG_RING_BUFFER=y CONFIG_TRACING=y CONFIG_STACKTRACE=y CONFIG_NOP_TRACER=y CONFIG_BINARY_PRINTF=y CONFIG_EVENT_TRACING=y CONFIG_TRACE_CLOCK=y CONFIG_TASKS_RCU=y # 开始编译 make -j10 ARCH=arm64 CROSS_COMPILE=aarch64-rpi4-linux-gnu- # 安装模块到上级目录,会有一个 lib 目录 make -j10 ARCH=arm64 CROSS_COMPILE=aarch64-rpi4-linux-gnu- INSTALL_MOD_PATH=../ modules_install
1.6 复制内核与模块到树莓派
# 压缩 tar cvfh lib.tar lib/ # 解压 tar xf lib.tar
1.7 在树莓派上执行内核替换
首先切换目录:
lib/modules/6.1.61-v8+/source/arch/arm64/boot/
执行以下命令:
cp Image /boot/kernel8.img cp dts/broadcom/*.dtb /boot/ cp dts/overlays/*.dtb* /boot/overlays/ cp dts/overlays/README /boot/overlays/
1.8 安装内核模块
make ARCH=arm64 modules_install
1.9 修改配置文件(可选)
树莓派默认是用32位内核启动,需要修改
boot
分区下的 config.txt
文件arm_64bit=1 kernel=kernel8.img
1.10 重启
执行
reboot
启动后执行uname -a
可查看内核版本,是否成功更换内核。
2 安装大鹅
手动下载 dae 与 daed 进行配置安装,并编写 systemd 服务文件,其他省略(因为可以正常运行,并且官方文档写的挺仔细的)。
3 遇到的问题
3.1 非对称路由无法使用
这里的旁路由定义为:1,被设为网关。2,对 TCP/UDP 进行 SNAT。3,LAN 接口和 WAN 接口属于同一个网段。
具体现象:
关闭 dae
开始内核转发参数设备可以正常上网。sudo sysctl -a | grep forward net.ipv4.conf.all.bc_forwarding = 0 net.ipv4.conf.all.forwarding = 1 net.ipv4.conf.all.mc_forwarding = 0 net.ipv4.conf.default.bc_forwarding = 0 net.ipv4.conf.default.forwarding = 1 net.ipv4.conf.default.mc_forwarding = 0 net.ipv4.conf.eth0.bc_forwarding = 0 net.ipv4.conf.eth0.forwarding = 1 net.ipv4.conf.eth0.mc_forwarding = 0 net.ipv4.conf.lo.bc_forwarding = 0 net.ipv4.conf.lo.forwarding = 1 net.ipv4.conf.lo.mc_forwarding = 0 net.ipv4.conf.wlan0.bc_forwarding = 0 net.ipv4.conf.wlan0.forwarding = 1 net.ipv4.conf.wlan0.mc_forwarding = 0 net.ipv4.ip_forward = 1 net.ipv4.ip_forward_update_priority = 1 net.ipv4.ip_forward_use_pmtu = 0 net.ipv6.conf.all.forwarding = 0 net.ipv6.conf.all.mc_forwarding = 0 net.ipv6.conf.default.forwarding = 0 net.ipv6.conf.default.mc_forwarding = 0 net.ipv6.conf.eth0.forwarding = 0 net.ipv6.conf.eth0.mc_forwarding = 0 net.ipv6.conf.lo.forwarding = 0 net.ipv6.conf.lo.mc_forwarding = 0 net.ipv6.conf.wlan0.forwarding = 0 net.ipv6.conf.wlan0.mc_forwarding = 0
开启 dae 设备无法上网
,可以 ping 通网关(192.168.1.150),以及主路由(192.168.1.1),但是无法上网,无法ping通公网ip(233.5.5.5)解决方案:
- 安装
systemd-resolved
并启用systemd-resolved
- 关闭 taiscale 的 dns 接受
tailscale set --accept-dns=false
后续测试正常。
欢迎加入“喵星计算机技术研究院”,原创技术文章第一时间推送。
- 作者:tangcuyu
- 链接:https://expoli.tech/articles/2023/11/09/run-dae-on-Raspberry-Pi-OS
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章