RK3288编译Armbian系统:从三次编译失败到一把跑通的完整记录
【免费下载链接】amlogic-s9xxx-armbianSupports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk3568, rk3399, rk3328, h6, etc.项目地址: https://gitcode.com/GitHub_Trending/am/amlogic-s9xxx-armbian
如果你正拿着一块RK3288开发板,想在它上面编译Armbian系统,却反复被依赖报错、编译中断折磨到怀疑人生,那这篇文章就是为你准备的——它会带着你从头走一遍全部流程,并把我踩过的每一个坑都提前标出来。
事故现场:一个新手的第一天
晚上十点,屏幕上是密密麻麻的红色报错。我第一次尝试给RK3288设备编译Armbian系统内核,卡在了第14分钟:先是gcc: command not found,装完编译器又提示缺少libncurses-dev,补上之后再编译,硬盘空间又不够了——日志里赫然写着No space left on device。那一刻我差点把板子扔出窗外。
冷静下来我才发现,问题从来不在内核本身,而在于准备阶段欠的债,编译时都会加倍奉还。现在我把整条路重新走了一遍,下面是完全复现的流程,每一步该看什么、该防什么都写在里面了。
出发前:一张能救命的"自检清单"
先别急着编译,花十分钟做一次环境体检,能省下后面好几个小时。对照清单逐项勾选:
| 检查项 | 通过标准 | 怎么查 |
|---|---|---|
| 磁盘空间 | 剩余 ≥ 20GB | df -h / |
| Docker 就绪 | docker ps能正常输出 | 未装则自动安装 |
| 编译工具链 | gcc 或 clang 可用 | gcc --version |
| 内核头文件/开发库 | 无缺失报错 | 见下方安装命令 |
| 网络稳定 | 能顺畅下载源码 | 建议开代理或镜像 |
不同发行版的依赖有差异,Ubuntu 24.04 用户可以直接用项目内置的依赖清单一次装齐:
sudo apt-get update -y && sudo apt-get full-upgrade -y sudo apt-get install -y $(cat compile-kernel/tools/script/ubuntu2404-build-armbian-depends)其他发行版别硬抄,遇到缺什么就补什么,重点盯三类包:编译工具链、libncurses系列的配置库、bison/flex等词法解析工具。
工具链怎么选?项目默认走gcc,这是最稳的方案,兼容性最好;如果你想提速,可以用 clang——它编译更快、报错更友好,代价是偶发兼容性问题。新手先认准 gcc,跑通之后再尝试-t clang切换。
编译闯关实录:三个里程碑,一个一个过
仓库克隆命令(记得加--depth 1只拉最新历史):
git clone --depth 1 https://gitcode.com/GitHub_Trending/am/amlogic-s9xxx-armbian cd amlogic-s9xxx-armbian然后启动编译,这是我在RK3288上最终跑通的完整命令:
sudo ./recompile -k 5.15.y -a true -n -rk3288 -p true逐参数拆解:
-k 5.15.y:指定内核系列,.y后缀会自动选用该系列最新版,省得自己查版本号;-a true:自动升级到同系列的最新内核,建议保持开启;-n -rk3288:给内核打上专属签名,之后在系统里一眼就能认出"这是我自己编的内核";-p true:应用compile-kernel/tools/patch目录下的自定义补丁。
里程碑一:配置阶段,过了这一步就成功了一半
脚本会先拉起 Armbian 的 Docker 编译容器,同步配置和补丁文件。你要盯住两件事:日志里是否出现SUCCESS字样、tools/config下是否有对应内核版本的config-*文件。RK3288 相关的驱动在这步都会自动勾选,不用手动折腾。
里程碑二:构建阶段,最考验耐心的一关
真正的编译会持续数十分钟到数小时,中途最怕两件事:内存被打爆和网络断流。建议后台挂着htop盯内存;如果编译进程被 OOM 杀掉,先去把 swap 加上(见下文的提速秘籍),再重跑一次——放心,ccache 缓存会帮你跳过已经编完的部分。
里程碑三:打包阶段,看到这行就赢了
编译完成后会依次生成 Image、modules、dtbs,并打包成可直接安装的内核文件。当日志里出现这行时,恭喜你,最难的部分已经结束了:
[ SUCCESS ] All processes completed successfully.产物就躺在compile-kernel/output目录里,包括内核镜像、模块包和 dtb 设备树文件。记得顺手df -h看一眼磁盘,确认编译没有吃掉太多空间。
落地部署:三步完成内核安装与验证
拿到编译产物后,把它传到 RK3288 设备上,然后走这三步:
在线更新内核:
armbian-update会自动检测并替换内核,默认更新到最新稳定版:armbian-update -k 5.15 -u stable -d deb-d deb很重要——如果你以后想自己编驱动模块,deb 格式是必需品。验证内核:重启后执行
uname -r,如果看到自己签名的版本号(比如5.15.xxx-rk3288),说明替换成功。确认驱动正常:
dmesg | grep -i error检查启动日志,重点看网卡、存储、USB 等关键驱动是否加载。
小贴士:更新时系统会自动备份旧内核,放在
/ddbr/backup,保留最近 3 个版本。新内核如果翻车,随时可以回滚,不用慌。
提速秘籍:优化前后,数字不会说谎
RK3288 大多只有 1~2GB 内存,跑 Docker 或编译时很容易捉襟见肘。这套组合拳实测效果非常明显:
| 项目 | 优化前 | 优化后 |
|---|---|---|
| 可用内存 | 编译中途 OOM 被杀 | 稳定编译不中断 |
| swap 虚拟内存 | 无 | 2GB 起步 |
| 开机时间 | 启动服务杂乱 | 精简模块后明显缩短 |
| 系统监控 | 全靠猜 | 实时面板随时看 |
先创建 swap,一行命令搞定(参数单位是 GiB):
armbian-swap 2再精简开机自启和内核模块,把用不到的服务关掉。最后装上监控组件,让数据告诉你系统真实状态:
armbian-software -u # 先更新软件中心列表 armbian-software # 打开软件中心,选装监控组件装好后打开监控面板,内存、CPU、网络一目了然——Docker 再也不是玄学。
避坑地图:把常见错误一次看全
我把编译期遇到的所有坑汇总成一张速查表,按图索骥即可:
| 错误类型 | 典型症状 | 一句话解法 |
|---|---|---|
| 依赖缺失 | command not found、No rule to make target | 对照自检清单补齐开发包,Ubuntu 24.04 直接用依赖列表一条命令装齐 |
| 磁盘不足 | No space left on device | 清理临时文件,预留 20GB 以上;编译完用-d true自动删源码 |
| 工具链冲突 | 版本不匹配、编译报段错误 | 卸载残留版本,统一用默认 gcc 重编 |
| 内存耗尽 | OOM killed、编译进程消失 | armbian-swap加虚拟内存后重跑,ccache 会续上进度 |
| 启动失败 | 开机卡 Logo、内核 panic | 依次查内核镜像完整性 → 设备树是否匹配 → bootloader 配置 |
闭环:从"怀疑人生"到"一把跑通"
回到文章开头那个被报错刷屏的晚上——如果当时的我知道"先体检环境、再按里程碑推进、给足 swap",大概 40 分钟就能跑通全部流程,而不是折腾一整夜。
跑通只是开始。接下来你可以往两个方向走:一是定制内核,往tools/patch里塞自己的补丁,把不需要的驱动裁掉,编译出真正"私人订制"的 RK3288 系统;二是多设备批量部署,用同一条命令为多块板子统一编内核、统一更新,组一台低功耗服务器集群。
从失败到跑通,差的从来不是运气,而是一份靠谱的路线图。现在这张图已经在你手上了,去把属于你的 RK3288 Armbian 系统编出来吧。
【免费下载链接】amlogic-s9xxx-armbianSupports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk3568, rk3399, rk3328, h6, etc.项目地址: https://gitcode.com/GitHub_Trending/am/amlogic-s9xxx-armbian
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考