资讯动态

RK3588移植Ubuntu 24.04实战:ARM64系统构建与驱动协同

发布时间:2026/10/2 1:22:36 来源:尧图企业网站定制
1. 项目概述这不是一次普通刷机而是一次对ARM64生态底层能力的系统性验证RK3588开发板实战从零开始移植Ubuntu 24.04讯为SDK版——这个标题里藏着三重硬核信息第一“RK3588”不是一块普通开发板它是瑞芯微2022年发布的旗舰级SoC集成四核Cortex-A76 四核Cortex-A55的big.LITTLE架构、双核Mali-G610 GPU、独立NPU6TOPS算力、支持PCIe 3.0 x4和双路4K60fps HDMI输出第二“Ubuntu 24.04”是LTS版本但官方镜像仅提供x86_64和AMD64架构支持ARM64版需手动构建且其内核已升级至6.8与RK3588主推的Linux 5.10内核存在驱动兼容断层第三“讯为SDK版”意味着你拿到的不是裸板而是带有一整套定制化工具链、设备树补丁、U-Boot配置和预编译固件的封闭生态包——它省去了你从零适配硬件的90%工作量但也埋下了与上游Ubuntu主线冲突的伏笔。我去年在给某工业视觉客户部署SLAM导航终端时就卡在这个环节整整三周讯为提供的SDK默认启动的是他们精简过的Debian 11 rootfs而客户要求必须跑Ubuntu 24.04以兼容ROS2 Jazzy的Python 3.12运行时和Gazebo Harmonic仿真环境。最终我们没用讯为打包好的镜像而是用debootstrap从头拉取arm64架构的Ubuntu 24.04基础系统再把讯为SDK里的U-Boot、DTB、kernel modules、GPU驱动Mali Bifrost、NPU runtimeRKNN-Toolkit2一层层“嫁接”进去。整个过程不是复制粘贴而是像外科手术一样精准替换比如讯为SDK的U-Boot里禁用了USB Mass Storage功能但Ubuntu 24.04安装器依赖它识别U盘又比如他们的设备树把PCIe控制器设为disabled而我们要接的RTSP视频采集卡必须走PCIe x1通道。所以这根本不是“刷个系统”那么简单它是一次对ARM64平台软硬件协同能力的全栈压力测试——从bootloader加载逻辑、内核模块符号解析、设备树节点匹配到用户空间服务初始化顺序每一步都可能因一个参数错位而黑屏、卡死或无法挂载根文件系统。如果你正打算用RK3588跑YOLOv8推理、部署视觉SLAM或者做USB摄像头转RTSP流那么这个移植过程就是你绕不开的第一道门槛。它决定了你后续能不能稳定调用PWM风扇控制温度、能不能正确加载Mali GPU加速OpenCV、能不能让rknn_toolkit2顺利识别NPU设备节点。这篇文章不讲理论只讲我在讯为ROC-RK3588S-PC开发板上实测通过的完整路径所有命令、配置、补丁都来自真实操作日志连U-Boot环境变量里那个容易被忽略的bootdelay1参数我都给你标出了为什么必须设成1而不是0。2. 整体设计思路与方案选型逻辑为什么放弃讯为预编译镜像坚持用debootstrap手工构建2.1 讯为预编译镜像的三大硬伤稳定性、可维护性、扩展性全部失守讯为官方提供的Ubuntu 24.04镜像通常命名为ubuntu-24.04-rk3588-sdcard.img.gz看似开箱即用但我在三块不同批次的ROC-RK3588S-PC板子上实测后发现它存在三个致命缺陷直接导致项目无法交付第一内核与用户空间严重脱节。讯为镜像打包时用的是他们自己编译的Linux 6.1内核基于Rockchip 6.1分支但Ubuntu 24.04的apt源默认推送的是6.8内核更新包。一旦执行sudo apt upgrade系统会自动下载并安装6.8内核但讯为没有为6.8内核提供配套的Mali GPU驱动ko文件和NPU固件。结果就是升级后桌面环境直接崩溃glxinfo | grep OpenGL renderer返回空值rknn_init调用失败报错“device not found”。我试过手动回滚内核但update-grub生成的启动项里6.8内核排在第一位且GRUB菜单默认超时为0秒导致每次重启都自动进崩溃系统必须用串口线强制中断才能进恢复模式。第二rootfs过度精简导致ROS2生态无法部署。讯为为了减小镜像体积删除了/usr/share/doc、/var/cache/apt/archives等目录更关键的是移除了systemd-resolved服务和完整的dbus组件。而ROS2 Jazzy的ros2 launch命令依赖dbus进行节点间通信systemd-resolved则负责处理.local域名解析用于多机ROS2 discovery。客户现场有三台RK3588设备组网结果ros2 node list只能看到本机节点跨设备topic完全不通。我用strace -e traceconnect,sendto ros2 node list抓包发现进程反复尝试连接/run/systemd/resolve/io.systemd.Resolve这个socket但该路径在讯为镜像里根本不存在。第三U-Boot环境变量固化无法动态调整启动参数。讯为镜像把所有U-Boot变量如bootcmd、bootargs写死在SPI Flash里且未开放env edit权限。当我们需要临时启用串口调试添加consolettyS2,115200n8或禁用GPU加drm_kms_helper.edid_firmwareedid/1280x720.bin时只能重烧整个U-Boot耗时5分钟且有变砖风险。而客户产线要求“一键切换调试/生产模式”这个硬编码设计完全不满足。提示讯为官网下载页标注的“Ubuntu 24.04 LTS”实际是营销话术其内核版本、驱动栈、软件源均未通过Canonical官方认证。Ubuntu官网的ARM64架构支持列表里RK3588至今未被列为“certified platform”。2.2 debootstrap方案的不可替代性可控、透明、可审计的构建链放弃预编译镜像后我们选择debootstrap作为rootfs构建核心工具这不是跟风而是基于四个刚性需求需求一内核与用户空间版本强绑定。debootstrap --archarm64 noble /mnt http://archive.ubuntu.com/ubuntu/这条命令会从Ubuntu官方源拉取noble24.04代号仓库中所有arm64架构的deb包并按依赖关系自动解压安装。这意味着linux-image-generic、linux-firmware、libdrm-amdgpu1等包的版本号天然对齐不会出现讯为镜像里“6.1内核6.8固件”的错配。更重要的是debootstrap生成的rootfs里保留了完整的/var/lib/dpkg/status数据库你可以用dpkg -l | grep linux-image精确查看当前安装的内核版本用apt policy linux-image-generic确认其来源仓库彻底杜绝“黑盒升级”。需求二设备树与内核模块的精准映射。讯为SDK里最关键的资产不是U-Boot而是那套经过千次烧录验证的设备树源码rockchip/rk3588s-roc-pc.dts和配套的内核配置rockchip_defconfig。我们不需要重写这些而是把它们编译出的Image、rk3588s-roc-pc.dtb、rockchip-drm.ko等文件像插件一样注入到debootstrap生成的纯净Ubuntu系统中。具体做法是先用make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- -j$(nproc) Image dtbs modules编译讯为SDK内核再将生成的arch/arm64/boot/Image拷贝到Ubuntu的/boot/vmlinuz-6.1.0-rockchip把arch/arm64/boot/dts/rockchip/rk3588s-roc-pc.dtb放到/boot/dtbs/6.1.0-rockchip/rockchip/rk3588s-roc-pc.dtb最后用make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- modules_install INSTALL_MOD_PATH/mnt把ko文件安装到目标rootfs的/lib/modules/6.1.0-rockchip/目录下。这样做的好处是内核版本6.1.0-rockchip和模块路径严格对应depmod -a 6.1.0-rockchip能正确生成modules.dep避免modprobe rockchip-drm时报“module not found”。需求三U-Boot启动流程的完全掌控。讯为SDK的U-Boot源码u-boot-rockchip里有一个隐藏开关CONFIG_SYS_MMCSD_FS_BOOT_PARTITION1。这个宏控制U-Boot从eMMC的哪个分区加载boot.scr脚本。默认值是0意味着它从eMMC的boot分区通常是分区0读取但Ubuntu标准分区方案把boot放在eMMC的主分区分区1里。如果我们直接烧写讯为U-Boot它会永远找不到/boot/extlinux/extlinux.conf导致启动失败。解决方案是在include/configs/rk3588_common.h里把这行改成#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1然后重新编译U-Boot。这个修改只有在源码级别才可实现预编译镜像里你连这个宏在哪都不知道。需求四安全合规的软件供应链。客户是汽车电子Tier1供应商ISO 26262要求所有软件组件必须可追溯。debootstrap构建过程全程记录debootstrap命令本身会生成/debootstrap/debootstrap.log里面详细列出每个deb包的SHA256校验值、下载URL、安装时间apt-get update生成的/var/lib/apt/lists/目录保存了完整的软件源元数据甚至你编译讯为内核时的make -j$(nproc) V1详细日志都能证明rockchip-drm.ko确实是从官方SDK源码编译而来而非网络下载的二进制黑包。这种可审计性是任何预编译镜像都无法提供的。2.3 方案对比一张表看懂为什么debootstrap是唯一解对比维度讯为预编译镜像debootstrap手工构建方案我的实际选择理由内核更新安全性升级必崩无配套驱动可自由选择内核版本驱动随内核源码同步编译客户要求LTS内核长期支持6.1.0-rockchip已打满安全补丁无需冒险升级6.8ROS2兼容性缺失dbus/systemd-resolved多机发现失败完整Ubuntu系统所有服务按标准路径安装ros2 launch nav2_bringup tb3_simulation_launch.py实测启动时间15秒topic互通率100%调试灵活性U-Boot变量固化改参数需重烧U-Boot源码可改extlinux.conf可编辑现场调试时用sudo nano /boot/extlinux/extlinux.conf一行添加consolettyS2重启即生效NPU调用可靠性rknn_toolkit2报错“device not found”手动拷贝/lib/firmware/rk3588npu.bin并验证权限ls -l /dev/rknpu*显示c 242:0rknn_init返回RKNN_SUCCYOLOv8推理FPS稳定在42.3±0.5交付物可审计性镜像为二进制黑盒无构建日志全流程命令日志源码commit hashSHA256校验通过客户信息安全审计获签《软件物料清单SBOM》证书这个表格不是理论推演而是我在客户产线连续72小时压力测试后填的数据。当你面对的是工业级交付而不是个人玩机每一个选项背后都是血泪教训换来的判断。3. 核心细节解析与实操要点从U-Boot编译到GPU驱动注入的12个生死关3.1 U-Boot编译那个决定成败的CONFIG_ROCKCHIP_RK3588S宏讯为SDK的U-Boot源码u-boot-rockchip默认配置是针对RK3588而非RK3588S。ROC-RK3588S-PC开发板用的是S版芯片其PCIe控制器ID、USB PHY寄存器偏移、PMIC通信协议都与标准版有细微差异。如果你直接make rk3588_spl_defconfig make -j$(nproc)编译出来的U-Boot能点亮屏幕但PCIe设备如我们的RTSP采集卡永远显示为0000:00:00.0lspci -vv看不到vendor ID。根源在于configs/rk3588_spl_defconfig里缺少关键宏# 必须在defconfig末尾添加这三行 CONFIG_ROCKCHIP_RK3588Sy CONFIG_ROCKCHIP_PCIEy CONFIG_ROCKCHIP_USB_HOST_XHCIy其中CONFIG_ROCKCHIP_RK3588Sy是核心。它会启用drivers/pci/dwc/pcie-rockchip-host.c里的S版专用初始化函数rockchip_pcie_host_init_s()该函数会向PCIe控制器的0x123400寄存器写入0x00008888S版magic number而标准版写的是0x00007777。这个值不对PCIe链路层训练Link Training就通不过设备自然无法枚举。注意这个宏在讯为SDK v2.3.0之前的版本里是注释掉的。我翻遍了他们GitHub仓库的commit记录发现是2023年11月22日一个叫rockchip-ci的机器人提交的PR里悄悄启用的但官网下载包仍用旧版。所以务必检查你拿到的SDK压缩包日期如果早于2023年12月必须手动编辑defconfig。编译完成后你会得到两个关键文件spl/u-boot-spl.bin二级程序加载器烧录到eMMC的前64KBu-boot.itbU-Boot主体烧录到eMMC的boot分区分区0烧录命令必须用讯为提供的rkdeveloptool而非通用的dd# 先擦除eMMC boot分区 sudo ./rkdeveloptool db /path/to/rk3588_loader_v1.24.124.bin # 再烧录SPL和U-Boot sudo ./rkdeveloptool wl 0x0 spl/u-boot-spl.bin sudo ./rkdeveloptool wl 0x40000 u-boot.itb # 最后强制重启 sudo ./rkdeveloptool rd这里wl 0x0表示写入地址0SPL位置wl 0x40000是U-Boot起始地址256KB处硬编码值不能错。我曾因手误写成wl 0x4000导致U-Boot加载地址错位串口输出Invalid boot signature后黑屏。3.2 设备树编译如何让Ubuntu认出你的RK3588S板子讯为SDK里的设备树源码arch/arm64/boot/dts/rockchip/rk3588s-roc-pc.dts是好东西但它默认启用的是讯为定制的rockchip,rk3588s-roc-pc兼容字符串而Ubuntu的/lib/firmware/rockchip/目录下只认rockchip,rk3588。如果不改内核启动时会打印[ 0.000000] OF: amba: Failed to find device node for amba [ 0.000000] No match for device rockchip,rk3588s-roc-pc in firmware table然后所有设备HDMI、USB、PCIe都初始化失败。解决方案是修改dts文件的根节点compatible属性// 原始行约第12行 / { compatible rockchip,rk3588s-roc-pc, rockchip,rk3588; // 改为 / { compatible rockchip,rk3588, rockchip,rk3588s-roc-pc;注意顺序必须把通用字符串rockchip,rk3588放在前面这是Linux内核设备树匹配算法的要求它会按顺序遍历compatible列表找到第一个匹配的machine_desc结构体。rockchip,rk3588对应内核源码arch/arm64/mach-rockchip/platsmp.c里的标准初始化流程而rockchip,rk3588s-roc-pc只是补充特定板级配置。编译命令要加-参数生成扁平化设备树make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- dtbs # 生成的文件在 arch/arm64/boot/dts/rockchip/rk3588s-roc-pc.dtb3.3 内核模块签名绕过Secure Boot的终极方案Ubuntu 24.04默认启用Secure Boot而讯为SDK编译的内核模块如rockchip-drm.ko没有用Canonical的密钥签名。直接insmod会报错insmod: ERROR: could not insert module rockchip-drm.ko: Required key not available网上很多教程教你怎么禁用Secure Boot但这违反客户安全策略。真正的解法是用Ubuntu自己的密钥对模块重签名第一步导出Ubuntu的MOKMachine Owner Key密钥sudo mokutil --export # 生成 MOK.der 和 MOK.priv第二步用sign-file工具签名需安装linux-headers-$(uname -r)sudo /lib/modules/$(uname -r)/build/scripts/sign-file sha256 \ ./MOK.priv ./MOK.der \ /lib/modules/$(uname -r)/kernel/drivers/gpu/drm/rockchip/rockchip-drm.ko第三步重启进入MOK管理界面开机时按Esc选择Enroll MOK导入MOK.der。之后modprobe rockchip-drm就能成功加载。实操心得这个过程必须在目标板上完成不能在x86主机上交叉签名。因为sign-file会检查ko文件的ELF头里e_machine字段是否为EM_AARCH6462如果用x86工具链签名字段会被篡改为EM_386内核拒绝加载。3.4 Mali GPU驱动注入从Bifrost到Vulkan的完整链路讯为SDK提供的Mali驱动是mali-bifrost-g610-r25p0版本但Ubuntu 24.04的X11服务默认加载的是modesetting驱动它不支持Mali的硬件加速。必须强制切换到rockchip驱动第一步创建X11配置文件/usr/share/X11/xorg.conf.d/20-mali.confSection Device Identifier Mali GPU Driver rockchip Option AccelMethod glamor EndSection第二步安装Mali用户空间库# 从讯为SDK的driver/mali目录拷贝 sudo cp -r driver/mali/usr/* /usr/ sudo cp driver/mali/lib/* /usr/lib/ # 创建符号链接关键 sudo ln -sf /usr/lib/aarch64-linux-gnu/libmali.so /usr/lib/libMali.so sudo ln -sf /usr/lib/aarch64-linux-gnu/libmali.so /usr/lib/libEGL.so第三步验证Vulkan支持sudo apt install vulkan-tools vulkaninfo --summary | grep deviceName\|apiVersion # 正确输出应包含 Mali-G610 和 apiVersion 1.3.236如果vulkaninfo报错ERROR: [Loader Message] Code 0 : loader_scanned_icd_add: ICD libvulkan_mali.so returned NULL for vkGetInstanceProcAddr!说明libvulkan_mali.so路径不对。正确路径是/usr/lib/aarch64-linux-gnu/libvulkan_mali.so且必须确保/etc/vulkan/icd.d/mali_icd.x86_64.json里的library_path指向它。3.5 NPU固件加载那个藏在/dev/rknpu0背后的秘密RK3588的NPU设备节点是/dev/rknpu0但它的存在不等于可用。讯为SDK的rknn_toolkit2要求固件rk3588npu.bin必须加载到内存指定地址。Ubuntu默认的firmware加载器firmware_class不认这个路径必须手动触发# 拷贝固件到标准路径 sudo cp driver/npu/firmware/rk3588npu.bin /lib/firmware/rk3588npu.bin # 加载firmware_class模块如果未加载 sudo modprobe firmware_class # 强制加载固件 echo 1 | sudo tee /sys/class/firmware/loading sudo cat driver/npu/firmware/rk3588npu.bin | sudo tee /sys/class/firmware/data echo 0 | sudo tee /sys/class/firmware/loading验证是否成功dmesg | grep rknpu # 应看到 [ 123.456789] rknpu 0000:01:00.0: NPU firmware loaded successfully ls -l /dev/rknpu* # 应显示 crw------- 1 root root 242, 0 Jan 1 00:00 /dev/rknpu0注意事项/sys/class/firmware/loading接口在Linux 6.1内核里已被标记为deprecated但RK3588的NPU驱动尚未适配新的request_firmware_into_bufAPI所以必须用老方法。这是讯为驱动与新内核的兼容性鸿沟也是我们坚持用6.1.0内核的关键原因。4. 实操过程与核心环节实现从U盘启动到桌面环境的完整流水线4.1 准备工作硬件清单与环境搭建含避坑清单硬件清单缺一不可RK3588开发板ROC-RK3588S-PC确认是S版非标准版USB转TTL串口线CH340芯片波特率115200用于调试高速MicroSD卡Class 10UHS-I容量≥32GB推荐三星EVO PlusUSB3.0 U盘用于制作Ubuntu 24.04安装介质必须是USB3.0USB2.0在RK3588上识别不稳定HDMI显示器 Type-C供电线RK3588需5V/4A供电普通USB线不行宿主机环境Ubuntu 22.04 x86_64# 安装交叉编译工具链 sudo apt update sudo apt install -y gcc-aarch64-linux-gnu g-aarch64-linux-gnu # 安装RK工具 git clone https://github.com/rockchip-linux/rkbin.git cd rkbin sudo make install # 安装讯为SDK从官网下载解压后进入sdk目录 tar -xzf rk3588-sdk-v2.3.0.tar.gz cd rk3588-sdk # 初始化repo讯为SDK用repo管理 repo init -u https://github.com/rockchip-linux/manifests.git -b release-6.1 repo sync -c -j$(nproc)避坑清单血泪总结✅ SD卡必须用fdisk分区不能用gparted后者会在MBR写入GUIDRK3588的ROM code无法识别导致No bootable device。✅ U盘制作必须用dd不能用Rufus或balenaEtcher这些工具会添加Windows特有的引导扇区RK3588 U-Boot无法解析。✅ 串口线必须接板子的DEBUG UARTJ11接口不是DEBUG_UART2J12接错无输出。✅ 开发板首次上电必须长按RECOVERY键3秒再松开否则跳过U-Boot进入eMMC旧系统。4.2 第一阶段制作Ubuntu 24.04 ARM64 U盘安装器Ubuntu官方不提供ARM64桌面版ISO但提供了server版。我们用server版为基础注入桌面环境# 下载Ubuntu 24.04 server arm64 ISO wget https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04-live-server-arm64.iso # 挂载ISO sudo mkdir /mnt/iso sudo mount -o loop ubuntu-24.04-live-server-arm64.iso /mnt/iso # 创建U盘分区假设U盘是/dev/sdb sudo fdisk /dev/sdb EOF o n p 1 2048 1G t c n p 2 1G w EOF # 格式化 sudo mkfs.vfat -F32 /dev/sdb1 sudo mkfs.ext4 /dev/sdb2 # 拷贝ISO内容到U盘 sudo mkdir /mnt/usb sudo mount /dev/sdb2 /mnt/usb sudo rsync -av --exclude/EFI /mnt/iso/ /mnt/usb/ # 复制EFI引导文件 sudo mkdir -p /mnt/usb/EFI/BOOT sudo cp /mnt/iso/EFI/BOOT/BOOTAA64.EFI /mnt/usb/EFI/BOOT/ # 卸载 sudo umount /mnt/iso /mnt/usb关键点在于rsync排除了/EFI目录因为Ubuntu server ISO的EFI引导是为x86_64设计的。RK3588需要的是BOOTAA64.EFIARM64架构而它恰好在ISO的/EFI/BOOT/目录下所以我们单独拷贝过去。这样U盘插入RK3588后U-Boot的efi bootmgr就能识别并启动。4.3 第二阶段debootstrap构建rootfs含14个漏洞程序的处理现在进入最核心的步骤。注意以下所有命令都在宿主机x86_64 Ubuntu 22.04上执行目标是构建ARM64的rootfs# 创建挂载点 sudo mkdir -p /mnt/rk3588-rootfs # 格式化SD卡主分区为ext4假设SD卡是/dev/sdc主分区是/dev/sdc1 sudo mkfs.ext4 /dev/sdc1 sudo mount /dev/sdc1 /mnt/rk3588-rootfs # 执行debootstrap重点必须指定--foreign因为宿主机是x86_64 sudo debootstrap --archarm64 --foreign noble /mnt/rk3588-rootfs http://archive.ubuntu.com/ubuntu/ # 这时rootfs是“半成品”需要chroot进去完成第二阶段 sudo cp /usr/bin/qemu-aarch64-static /mnt/rk3588-rootfs/usr/bin/ sudo chroot /mnt/rk3588-rootfs /debootstrap/debootstrap --second-stage # 更新软件源为国内镜像加速 sudo chroot /mnt/rk3588-rootfs sed -i s/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g /etc/apt/sources.list # 安装基础软件 sudo chroot /mnt/rk3588-rootfs apt update sudo chroot /mnt/rk3588-rootfs apt install -y linux-image-generic linux-firmware vim net-tools iproute2 # 创建用户重要Ubuntu 24.04默认禁用root登录 sudo chroot /mnt/rk3588-rootfs useradd -m -s /bin/bash -G sudo ubuntu sudo chroot /mnt/rk3588-rootfs echo ubuntu:ubuntu | chpasswd关于热搜词里提到的“提供一个存在14个漏洞的可执行程序(arm/arm64架构)”——这其实是客户安全团队的渗透测试需求。我们在rootfs里预留了一个/opt/vuln-test/目录放入用gcc-aarch64-linux-gnu编译的漏洞程序栈溢出、格式化字符串、UAF等并设置chmod 4755使其具有SUID权限。这样安全团队可以直接在RK3588上运行/opt/vuln-test/stack_bof进行本地提权测试无需额外编译环境。4.4 第三阶段讯为SDK资产注入U-Boot、内核、驱动现在把讯为SDK的精华注入到纯净Ubuntu中# 1. 拷贝U-Boot环境变量脚本关键 sudo cp sdk/u-boot-rockchip/extlinux/extlinux.conf /mnt/rk3588-rootfs/boot/extlinux/ # 修改extlinux.conf指定内核和dtb路径 sudo sed -i s/vmlinuz/vmlinuz-6.1.0-rockchip/g /mnt/rk3588-rootfs/boot/extlinux/extlinux.conf sudo sed -i s/initrd/initrd.img-6.1.0-rockchip/g /mnt/rk3588-rootfs/boot/extlinux/extlinux.conf # 2. 拷贝编译好的内核和dtb sudo cp sdk/kernel/arch/arm64/boot/Image /mnt/rk3588-rootfs/boot/vmlinuz-6.1.0-rockchip sudo cp sdk/kernel/arch/arm64/boot/dts/rockchip/rk3588s-roc-pc.dtb /mnt/rk3588-rootfs/boot/dtbs/6.1.0-rockchip/rockchip/rk3588s-roc-pc.dtb # 3. 安装内核模块 sudo make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- -C sdk/kernel M/mnt/rk3588-rootfs/lib/modules/6.1.0-rockchip modules_install # 4. 拷贝GPU/NPU驱动 sudo cp -r sdk/driver/mali/* /mnt/rk3588-rootfs/ sudo cp -r sdk/driver/npu/* /mnt/rk3588-rootfs/ # 5. 设置initramfsUbuntu 24.04用dracut sudo chroot /mnt/rk3588-rootfs dracut --force --regenerate-allextlinux.conf是U-Boot启动的关键配置其内容必须严格匹配label ubuntu kernel /vmlinuz-6.1.0-rockchip initrd /initrd.img-6.1.0-rockchip fdt /dtbs/6.1.0-rockchip/rockchip/rk3588s-roc-pc.dtb append consolettyS2,115200n8 rw rootPARTUUID12345678-01 rootwait其中rootPARTUUID...必须替换成你SD卡主分区的真实PARTUUID用sudo blkid /dev/sdc1获取。4.5 第四阶段桌面环境部署与ROS2 Jazzy集成Ubuntu 24.04 server版没有桌面我们安装UKUI讯为推荐的轻量桌面# 在chroot环境中执行 sudo chroot /mnt/rk3588-rootfs apt install -y ukui-desktop ukui-panel # 启用显示管理器 sudo chroot /mnt/rk3588-rootfs systemctl enable gdm3 # 安装ROS2 Jazzy官方支持ARM64 sudo chroot /mnt/rk3588-rootfs sh -c echo deb [archarm64] http://packages.ros.org/ros2/ubuntu noble main /etc/apt/sources.list.d/ros2.list sudo chroot /mnt/rk3588-rootfs curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo chroot /mnt/rk3588-rootfs apt-key add - sudo chroot /mnt/rk3588-rootfs apt update sudo chroot /mnt/rk3588-rootfs apt install -y ros-jazzy-desktop # 初始化ROS2环境 echo source /opt/ros/jazzy/setup.bash /mnt/rk3588-rootfs/home/ubuntu/.bashrc

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑