环境
- Raspberry Pi OS 64 bit
- Linux 5.15.y
前言
之前说到,我用 rpi-update 把树莓派更新到了 5.15.y 版本的内核。
折腾树莓派,总会遇上需要编译点内核模块啥的。
但是你会发现,没有内核头文件,也就没法继续干下去。
一般来说,官方源里面就应该有对应版本的内核头文件包。
sudo apt install raspberrypi-kernel-headers
但树莓派官方源里面的内核头文件包,大概率是跟不上你天天敲 rpi-update 的速度的。
所以我们需要借助一个 Python2 写的小工具,来自动下载适合你的内核的内核头文件,并且自动配置环境。
或者你可以选择把整个内核源码拉下来,然后手动配置环境。
rpi-source
这里又是第二个坑了。
如果用原版的 rpi-source 来下载 64 位 RaspiOS 环境下的内核头文件,那么就会处处不对劲。
因为 rpi-source 只支持 32 位架构的内核头文件获取。
Issue with raspberry pi beta kernel #933 在这里可以看到类似的 issue。
非常幸运的是,已经有人修改好支持 64 位架构的 rpi-source 并且提了 pr,只是还没合并进主线。
所以我们用的是修改之后的 rpi-source。
准备
sudo apt install git bc bison flex libssl-dev libncurses5-dev python2
安装
sudo wget https://raw.githubusercontent.com/RPi-Distro/rpi-source/ceee03b5fb9cee65dd933f4784bb455cfa872a76/rpi-source -O /usr/local/bin/rpi-source && sudo chmod +x /usr/local/bin/rpi-source && /usr/local/bin/rpi-source -q --tag-update
运行
python2 /usr/local/bin/rpi-source --architecture 1
完成
这时候,检查 /usr/lib/modules 目录,会发现对应的内核版本号里面,已经有 build 目录。