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 建立串口恢复通道,确保新内核无法联网时仍能观察和修复系统。

相关推荐
fastjson_4 小时前
帆软看板 - 问题收集
linux·前端·javascript
jianpeng的工程笔记4 小时前
EL8 / EL9 安装 Slurm 26.05.4:主备控制器、MariaDB 记账与作业验收
linux·数据库·mariadb·高性能计算·slurm
程序员-Benothing4 小时前
Linux系统时间管理:date、timedatectl、NTP、Chrony配置
linux·运维·服务器
the3clipse5 小时前
MacOS、Linux 与 Windows 视频编解码对比:AV1、HEVC、ProRes 与硬件加速优劣势
linux·windows·macos·hevc·av1·视频解码·硬件解码
s6516654965 小时前
bootsect.s,setup.s,head.s的主要功能和对系统状态的影响、作用
linux
夜雪一千5 小时前
Python URL解码详解:单层、双重URL解码实战与踩坑指南
linux·服务器·python
咯哦哦哦哦5 小时前
配置VNC sever 6.11.0版本 linux(激活码)
linux·运维·服务器
傲世仙尊5 小时前
序列化与自定义协议-把结构体拆成字节流再拼回来
linux·服务器·网络·arm开发
꯭自꯭闭꯭5 小时前
DM主备集群以及读写分离集群搭建
linux·运维·数据库
倔强的石头1065 小时前
【Linux指南】动静态库系列(九):动态库如何进入进程地址空间:从磁盘 .so 到共享内存映射
java·linux·服务器