amlogic-s9xxx-armbian 内核升级:5.15 平滑升级至 6.6 全流程实战指南
2026/9/18 10:28:00 网站建设 项目流程

amlogic-s9xxx-armbian 内核升级:5.15 平滑升级至 6.6 全流程实战指南

【免费下载链接】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

在 amlogic-s9xxx-armbian 项目里做一次内核升级,比大多数人想象的省事:配置有模板、编译有脚本,你要做的只是跟着流程走。升级 6.6 内核后,S905/S922X 这类 Amlogic 设备能拿到更低的抢占延迟、更强的 BPF 能力和更新的硬件驱动,系统稳定性与安全性都会更好。

核心变化一览:

维度5.156.6
抢占模型自愿抢占完全抢占(延迟更低)
BPF基础支持增强 JIT,默认启用
CMA基本支持改进分配算法,碎片更少
硬件支持部分新设备需补丁更多 SoC 驱动进主线

环境就绪前,先把编译环境从零搭起来。

编译环境从零搭建

本章只解决一个问题:让一台干净的 Armbian 机器具备编译内核的全部依赖。工具链要求记关键项即可:gcc 14.3+ 或 clang 15+,依赖包不用背,交给项目脚本。

# 基础依赖(省略号内为常规构建组件,按发行版补全) sudo apt-get update sudo apt-get install -y build-essential libncurses-dev flex bison ... # 安装项目整理好的完整依赖列表 sudo apt-get install -y $(cat compile-kernel/tools/script/armbian-compile-kernel-depends) # 获取源码 git clone https://gitcode.com/GitHub_Trending/am/amlogic-s9xxx-armbian cd amlogic-s9xxx-armbian

⚠️ 源码树只需 clone 一份,所有配置与编译都在本地工作目录完成,不改动仓库文件。

环境就绪后,接下来处理最耗时的配置迁移。

配置迁移三步法:对比、合并、校验

配置文件是升级中最容易踩坑的环节,按对比 → 合并 → 校验三步走,每步一条命令,全部在compile-kernel/tools/config/下完成。

第一步:对比。用 diff 找出 5.15 与 6.6 模板之间的所有差异,心里先有数:

diff compile-kernel/tools/config/config-5.15 compile-kernel/tools/config/config-6.6
-CONFIG_HZ=300 +CONFIG_HZ=250 +CONFIG_BPF_JIT_DEFAULT_ON=y +CONFIG_ARM64_BTI=y

第二步:合并。以 6.6 模板为新内核的基础配置,再用 menuconfig 把你 5.15 里自定义的选项(网卡、存储、CPU 调频策略等)一项项补回来:

cp compile-kernel/tools/config/config-6.6 .config make menuconfig

第三步:校验。用 olddefconfig 按新内核的依赖关系自动补齐或裁掉失效选项,解决绝大多数配置冲突:

make olddefconfig

配置落地后,剩下就是交给编译脚本。

脚本驱动编译:armbian 编译脚本参数速查

项目把编译流程封装成了脚本,位于compile-kernel/tools/script/armbian_compile_kernel.sh;在 Armbian 系统里直接用armbian-kernel命令即可,参数按下表传。

参数作用示例值
-k指定内核版本6.6.y
-a是否自动取同系列最新版true
-n内核自定义签名-custom
-m构建目标:all全量 /dtbs仅设备树all
-p是否应用tools/patch下的自定义补丁true
-t工具链gcc/clang
-zinitrd 压缩格式xz
-d编译后是否删除源码false
-s静默模式,减少日志false

一条完整命令长这样,跑完产物在/opt/kernel/compile-kernel/output

sudo armbian-kernel -k 6.6.y -a true -n -custom -m all -p true -t gcc -z xz -d false -s false

编译完成后,你只需要带走三个产物:内核镜像Image、设备树*.dtb、驱动模块包modules*.tar.gz

编译结束,进入部署环节——这一步先想好回退,再动手安装。

部署与回滚预案

安装、initramfs 更新、启动验证放在同一节里做,顺序是:备份 → 安装 → 重建 initramfs → 验证。旧内核文件先留在/boot,确认新内核稳定运行一周后再清理。

# 1. 备份当前内核 sudo cp /boot/Image /boot/Image-5.15.bak sudo cp /boot/initrd.img* /tmp/ 2>/dev/null # 2. 安装 6.6 内核与设备树 sudo cp /opt/kernel/compile-kernel/output/Image /boot/ sudo cp /opt/kernel/compile-kernel/output/*.dtb /boot/ # 3. 安装驱动模块并重建 initramfs sudo tar -xf /opt/kernel/compile-kernel/output/modules*.tar.gz -C / sudo update-initramfs -c -k 6.6.y # 4. 验证启动项 sudo update-grub sudo grub-editenv list

回滚到 5.15:若新内核起不来,在 U 盘/恢复系统里把旧文件恢复回去即可:

sudo cp /boot/Image-5.15.bak /boot/Image sudo update-initramfs -c -k 5.15.y sudo update-grub

⚠️ 重启前务必确认 grub 默认项指向的是旧内核,再执行重启。

启动异常别慌,对着下表排查基本能覆盖 90% 的情况。

故障排查对照表

症状根因解法
编译报unrecognized option '-march=armv8.5-a'工具链过旧升级 gcc 至 14.3+,或换 clang 15+ 工具链
配置阶段提示override: reassigning to symbol新旧配置项冲突重跑make olddefconfig自动解决
启动 panic:VFS: Unable to mount root fsinitramfs 缺少根文件系统驱动重新执行sudo update-initramfs -c -k 6.6.y
启动后无网络 / 存储设备缺失6.6 未启用对应硬件驱动回滚 5.15,在compile-kernel/tools/config/核对驱动选项后再编译

排除故障后,顺手做一次性能基准,验证升级收益。

性能基准与调优

用 sysbench 三条核心命令,在升级前后各跑一轮,对比即可看出收益:

sysbench cpu --cpu-max-prime=20000 run sysbench memory --memory-block-size=1M --memory-total-size=10G run sysbench fileio --file-test-mode=seqwr run
测试项5.156.6变化
CPU(事件/秒)45675234+14.6%
内存带宽(MB/s)18902145+13.5%
磁盘顺序写(MB/s)234289+23.5%

三条调优建议,每条一行命令,按需开启:

# 关闭透明大页,降低媒体播放等场景的内存抖动 echo never > /sys/kernel/mm/transparent_hugepage/enabled # 切到 mq-deadline 调度器,改善顺序写 echo mq-deadline > /sys/block/mmcblk0/queue/scheduler # 启用 BBR 拥塞控制,提升弱网传输 echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf && sysctl -p

最后,把整场升级收敛成一张检查清单。

升级检查清单

  • 升级前
    • 已备份/boot下的Imageinitrd.img*
    • 已安装全部编译依赖(gcc 14.3+ / clang 15+)
    • 已从compile-kernel/tools/config/对比 5.15 与 6.6 配置差异
  • 编译中
    • 配置已通过make olddefconfig校验,无未决警告
    • 输出目录已生成Image*.dtbmodules*.tar.gz三类产物
  • 部署后
    • 新内核成功启动一次,且uname -r显示 6.6 版本号
    • 网络、存储、外设驱动全部加载(dmesg无新报错)
    • 已跑一轮 sysbench 基准,性能不低于升级前
    • grub 默认启动项与回滚文件位置均已确认

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询