LubanCat RK3588 实时内核移植第一步:先确认硬件与系统版本

摘要:在开始 RT-Linux 移植前,建立硬件、rootfs、设备树、SDK 和内核版本基线,避免把旧教程直接套用到新内核。

写在前面

实时内核移植最容易犯的错误,是拿着旧版本教程直接执行命令。教程可能基于 5.10 内核,而当前设备运行的是 6.1;即使板卡名称相同,内核配置、设备树、启动分区和驱动接口也可能不同。

本文先建立一份"版本基线",后续所有编译和安装操作都以这份基线为准。

本次实测:LubanCat-5IOB(RK3588)从 6.1.84 迁移到 6.1.99-rt36-rk3588 #12。其他板卡不能直接复用本文的 DTB 和启动文件。

一、区分三个工作环境

移植过程通常同时涉及三个环境:

  • 开发主机 :运行 LubanCat SDK、交叉编译器和 build.sh。
  • 目标设备:安装新内核、加载模块并进行运行验证。
  • 串口终端:连接目标设备调试串口,用于网络不可用时查看 U-Boot 和内核日志。

build.sh 在开发主机执行,uname、modprobe 和 ip 等验证命令在目标设备执行。串口工具运行在开发主机,但显示的是目标设备的控制台。

二、目标设备基线检查

在目标板执行:

bash 复制代码
uname -a
cat /proc/cmdline
findmnt /
cat /etc/os-release

重点记录四项:

  1. 当前内核版本,例如 6.1.84;
  2. 根分区来源和文件系统;
  3. 启动参数中的 root=LABEL=... 或 root=PARTUUID=...;
  4. 发行版和架构,通常为 Ubuntu/Debian arm64。

还应记录板卡型号和设备树:

bash 复制代码
tr -d '\0' < /proc/device-tree/model
printf '\n'
tr '\0' '\n' < /proc/device-tree/compatible

model 和 compatible 能确认设备树描述的板卡身份,但不能直接告诉你 U-Boot 实际加载了哪个 .dtb 文件;后者还要结合 /boot 配置和串口启动日志判断。

三、开发主机 SDK 检查

bash 复制代码
SDK="$HOME/lubancat/LubanCat_SDK"
cd "$SDK"
./build.sh rk3588:LubanCat_rk3588_ubuntu_linux6.1_gnome_defconfig
./build.sh help | sed -n '/available defconfigs:/,/olddefconfig/p'

如果输出中出现 Using preferred kernel version(6.1),说明 SDK 已选择 6.1 内核。不要使用不存在的旧 defconfig,例如直接执行不带芯片前缀的配置名,可能得到 No such defconfig。

这里的 ubuntu、gnome 是 SDK 构建配置的一部分。只执行 kerneldeb 不会把目标板现有用户空间改成另一个 Ubuntu 版本,因此目标系统版本仍应以 cat /etc/os-release 为准。

四、为什么这一步不能省略

内核模块必须同时匹配内核版本、架构、配置和 vermagic。设备树还决定网卡、显示、CAN 控制器等硬件是否被描述。先固定版本,才能判断后续问题究竟来自编译、安装、启动还是驱动。

小结

移植的第一项成果不是生成一个文件,而是形成一份可追溯的版本基线。建议把 uname -a、/proc/cmdline、SDK manifest 和板卡型号保存到专栏配套资料中。

下一篇将使用 picocom 建立串口恢复通道,确保新内核无法联网时仍能观察和修复系统。

相关推荐
LongRunning14 小时前
【Linux】RK3568-OpenCV+YOLO(八)
linux·opencv·yolo
民乐团扒谱机17 小时前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
물の韜18 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
qq_3718021118 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
无足鸟ICT18 小时前
【RHCA+】iptraf-ng(网络监控分析)
linux·网络
独隅18 小时前
WebStorm 在 Linux 环境下的实战安装与高效开发指南
linux·ide·webstorm
坤坤子吖20 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
阡陌数智20 小时前
Claude API新版本重大变更与安全升级指南
java·linux·安全
奶茶树20 小时前
【Linux】环境开发工具(vim,gcc,g++,Makefile)
linux·运维·vim
木子欢儿1 天前
国内 macOS/Linux 安装 rust
linux·运维·服务器·macos·rust