如何安装与$(uname -r)版本匹配的树莓派内核头文件
树莓派安装匹配当前内核版本的内核头文件解决方案
问题概述
需要安装与$(uname -r)输出版本匹配的树莓派内核头文件用于内核模块开发,但尝试以下方法均失败:
- 直接执行
sudo apt install raspberrypi-kernel-headers,安装的头文件版本与当前内核不匹配 - 通过
rpi-update更新内核至最新版后,头文件仍未同步更新 - 重装
raspberrypi-kernel后,头文件版本依旧不匹配 - 尝试
apt install linux-headers-$(uname -r)无法找到对应包
可行解决方案
方法1:使用rpi-source自动匹配内核版本安装头文件
这是树莓派官方推荐的解决版本不匹配问题的工具,会自动下载并安装与当前运行内核完全匹配的头文件及源码:
- 安装依赖工具:
sudo apt install git bc bison flex libssl-dev make
- 下载并配置rpi-source脚本:
wget https://raw.githubusercontent.com/RPi-Distro/rpi-source/master/rpi-source -O /usr/local/bin/rpi-source && sudo chmod +x /usr/local/bin/rpi-source /usr/local/bin/rpi-source --tag-update
- 执行脚本安装对应版本的头文件:
sudo rpi-source
执行完成后,/usr/src目录下会出现与uname -r匹配的内核头文件目录。
方法2:降级内核至apt仓库有对应头文件的版本
如果不需要最新内核,可以将内核降级到apt仓库中存在对应头文件的稳定版本:
- 查看apt仓库中可用的内核版本:
apt-cache policy raspberrypi-kernel
- 安装指定版本的内核和bootloader(替换下方版本号为仓库中存在的、与已安装头文件匹配的版本):
sudo apt install raspberrypi-kernel=1:1.20221208-1 raspberrypi-bootloader=1:1.20221208-1
- 重启系统后,验证内核版本:
uname -r
- 安装匹配的头文件:
sudo apt install raspberrypi-kernel-headers
方法3:手动下载对应版本的头文件deb包
- 找到与当前内核版本完全一致的
raspberrypi-kernel-headersdeb包(对应树莓派架构) - 下载后执行安装:
sudo dpkg -i raspberrypi-kernel-headers_<对应版本号>_armhf.deb
- 若出现依赖问题,修复依赖:
sudo apt -f install
问题原因说明
rpi-update安装的是树莓派的测试版/最新预览版内核,而apt仓库中的raspberrypi-kernel-headers通常只同步稳定版内核的头文件,因此会出现版本不匹配- 直接通过apt安装内核头文件时,会默认安装仓库中最新的稳定版,与当前运行的(通过rpi-update升级的)内核版本不一致
内容的提问来源于stack exchange,提问作者Horiemon_Hack
相关产品推荐
相关产品推荐

