让树莓派 5 跑上“香草”主线内核:精简裁剪、交叉编译与部署全流程

摘要 本文系统记录了我如何将树莓派 5 打造成主线 Linux 内核(Vanilla Kernel)的极简开发 与测试平台——包括仓库极简裁剪思路、定制化内核配置、交叉编译与自动部署脚 本、overlay 移除技巧,以及长期与主线社区同步维护的实战心得。适合关注 Linux 主 线、ARM64 适配、内核开发、Upstream 贡献或喜欢折腾内核的极客们参考和实践。 背景与动机 最近一段时间,我在深入研究 Linux Kernel 的理论和架构,准备正式切入操作系统内核领 域。因此,特意购买了树莓派 5 作为开发板,用于学习和实践内核开发。然而刚上手就发 现,目前树莓派 5 并不能直接跑主线 Linux 内核,只能依赖树莓派团队维护的内核仓 库。当时最新的分支是 rpi-6.14.y(现在是 rpi-6.16.y),仓库的维护方式是“动态拉取上游主线代码+rebase+大量自定义补丁”,涉及 上万行的修改和历史反复变动。 这些定制补丁对于官方内核在树莓派上稳定运行、兼容所有功能确实非常重要,但对我这种 纯粹想研究主线内核特性、关注内核本身的开发者来说,这些补丁反而变成了负担: 主线同步困难,merge 经常出冲突, 版本历史频繁重写,难以回溯和比较, 验证主线新特性或做反馈变得不直观。 我对比了 x86 开发板,发现它们大多能直接运行主线内核,但价格昂贵,性价比远不如树 莓派 5。因此,我开始思考,如何让树莓派 5 也能顺畅运行主线内核,真正实现随时体验 和测试内核最新特性,并为 ARM64 平台反馈问题、贡献补丁提供便利。我的目标很明确: 用最少的补丁、最贴近 upstream 的方式,让树莓派 5 成为个人主线内核实验和学习的理 想 ARM64 平台。 仓库结构与修改范围 我的做法十分简单却又直奔核心——只保留最必要的驱动与补丁,其余全部紧跟主线。仅对 drivers/ 目录做补丁,聚焦核心硬件支持,主要包括: SD 卡驱动:保证树莓派能正常引导,内核能加载根文件系统。虽然启动固件自带部 分初始化功能,但主线内核仍需驱动挂载根文件系统。 有线网卡(Ethernet):方便通过 SSH 实现远程登录、下载新内核镜像、远程开发 和调试,是内核开发过程中最重要的 IO 通道之一。 UART 串口:作为内核调试和 early print 的输出窗口,可以直接观察内核日志,判 断启动和运行状态。 ...

2025年6月14日