在嵌入式设备上运行最新的Linux主线内核往往面临驱动支持等挑战。近期,笔者在基于瑞芯微Rockchip RK3588芯片的Radxa ROCK 5B+单板计算机上,成功完成了Linux 6.19-rc1主线内核的本地编译与运行,过程记录如下。
1. 基础系统准备
首先,需要为ROCK 5B+准备一个可启动的基础操作系统。笔者选用了一张MicroSD卡,并按照Radxa官方文档的指引,使用balenaEtcher工具将最新的Armbian镜像烧录至卡中。所使用的镜像是基于内核版本6.18的Ubuntu 24.04,可从Armbian官网获取。
烧录完成后,将SD卡插入ROCK 5B+,设备顺利启动,进入带有6.18内核的Ubuntu系统,网络等功能均正常工作。
2. 配置编译环境
我们的目标是在板卡上直接编译主线内核,因此需要先在系统中安装必要的开发工具。
sudo apt install -y git curl wget \
gcc g++ make bc bison flex libssl-dev \
libelf-dev python3 python3-pip rsync \
unzip device-tree-compiler pkg-config dwarves
接着,克隆Armbian强大的构建框架到本地,它将帮助我们自动化处理内核配置与编译的复杂流程。
git clone https://github.com/armbian/build
为了编译最新的6.19内核,需要修改Armbian构建脚本中关于内核版本的定义。编辑文件 config/sources/families/include/rockchip64_common.inc,找到 edge 分支的配置部分,将内核主次版本号从 6.18 修改为 6.19。
@@ -33,7 +33,7 @@
;;
edge)
- declare -g KERNEL_MAJOR_MINOR="6.18"
+ declare -g KERNEL_MAJOR_MINOR="6.19"
declare -g LINUXFAMILY=rockchip64
declare -g LINUXCONFIG='linux-rockchip64-'$BRANCH
;;
3. 指定源码并编译内核
准备工作就绪后,即可开始编译。我们通过参数指定目标板卡、使用edge分支配置、并直接指向Linus Torvalds的Linux主线仓库进行编译。
./compile.sh BOARD=rock-5b-plus BRANCH=edge \
KERNELSOURCE='https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/' \
KERNELBRANCH='branch:master' kernel
编译过程结束后,在 output/debs 目录下会生成一系列 .deb 安装包。
4. 安装与重启
使用 dpkg -i 命令安装新编译好的内核包,然后重启系统。
sudo dpkg -i ./linux-*.deb
sudo reboot
重启后,ROCK 5B+成功引导至全新的Linux 6.19-rc1主线内核。系统功能完整,包括硬件加速在内的各项特性工作正常,甚至可以在Firefox浏览器中流畅播放在线4K视频。
5. 开发环境调优(可选)
对于开发用途,有时需要关闭一些安全模块以避免其对调试过程产生干扰。例如,可以禁用AppArmor。
sudo systemctl stop apparmor
sudo systemctl disable apparmor
总结:本次实践验证了Rockchip RK3588平台对Linux主线内核的良好支持能力。利用Armbian构建系统,开发者能够在Radxa ROCK 5B+这类ARM开发环境上相对便捷地追踪和测试最新的内核特性,这对于嵌入式Linux的内核编译与系统操作和底层开发具有重要意义。