1. 为什么要在RK3588上自己构建Ubuntu 24.04?
如果你手头有一块基于瑞芯微RK3588的开发板,比如讯为的ITX-3588J,你可能已经习惯了使用官方提供的现成系统镜像。这些镜像开箱即用,确实方便。但时间一长,你可能会遇到一些“不爽”的地方:系统里预装了一堆你用不到的软件,占用了宝贵的存储空间;内核驱动版本可能不是最新的,导致一些新硬件无法识别;或者你想深度定制系统,从内核到用户空间都打上自己的烙印。这时候,从零开始构建一个属于自己的根文件系统,就成了一个非常吸引人的选择。
我最近就在讯为的开发板上折腾了一遍,把Ubuntu 24.04 LTS(代号Noble Numbat)的根文件系统给“搬”了上去。整个过程听起来有点硬核,但实际拆解下来,每一步都有清晰的路径可循。自己构建系统最大的好处就是“干净”和“可控”。你可以得到一个最小化的系统底座,然后只安装你真正需要的软件包,系统体积可以控制得非常小。更重要的是,你能完全掌控系统的每一个组成部分,从启动服务到网络配置,从驱动加载到桌面环境,都可以按照你的想法来定制。这对于嵌入式开发、边缘计算盒子或者打造一个专用的媒体中心来说,意义重大。
这篇文章,我就以讯为RK3588开发板为例,带你走一遍从准备环境到最终让桌面亮起来的完整流程。我会尽量把每一步的原理和操作都讲清楚,即使你之前没有太多Linux系统构建的经验,跟着做下来也能成功。我们不会涉及任何复杂的SDK内核修改,重点就放在替换根文件系统这个核心环节上,这是定制化最关键、也最见效果的一步。
2. 动手前的准备工作:理清思路与备好工具
在开始敲命令之前,我们得先搞清楚我们要做什么,以及需要哪些“家伙事儿”。讯为的SDK提供了一套完整的编译打包流程,最终会生成一个可以烧录的update.img文件。这个镜像文件就像一个大礼包,里面包含了引导程序(U-Boot)、内核(Kernel)、恢复系统(Recovery)和根文件系统(Rootfs)等所有东西。
我们的目标很明确:保持U-Boot、内核等底层组件不变,只替换掉那个rootfs.img,把我们自己构建的Ubuntu 24.04系统塞进去。 这样做风险最小,因为引导和内核驱动都是经过官方验证的,能保证硬件基础功能正常。所以,首要前提是:你已经能够成功编译并运行讯为SDK提供的原始系统。如果你的开发板连官方镜像都还没跑起来,那得先解决那个问题。
接下来是工具准备。我们主要会在一个x86_64的Linux主机(比如Ubuntu 22.04/24.04的PC或虚拟机)上完成大部分工作,这里需要安装两个核心工具:
- debootstrap:这是Debian/Ubuntu官方提供的“神器”,它的作用是在一个现有系统的目录里,构建出一个全新的、最简化的Debian或Ubuntu系统。它会自动从软件源下载所有基础包并解压配置好,为我们生成一个干净的根文件系统骨架。
- qemu-user-static:这是一个“模拟器”。因为我们的主机是x86架构,而RK3588是ARM64(aarch64)架构,指令集不同。这个工具能在x86系统上静态地模拟ARM64的执行环境,让我们可以在主机上直接
chroot到为ARM准备的文件系统里,运行里面的ARM程序(比如apt)进行配置。
安装命令非常简单,在你的主机上打开终端执行:
sudo apt update
sudo apt install debootstrap qemu-user-static
另外,确保你的主机有足够的磁盘空间,建议至少预留10GB以上,因为我们要下载大量的软件包。
最后,你需要准备好你的RK3588开发板、USB数据线(用于烧录)、以及SDK源码目录。我们将构建好的rootfs.img放到SDK的指定位置,重新打包,最后烧录验证。
3. 第一步:使用debootstrap“浇筑”系统基石
万事俱备,现在开始“打地基”。我们将使用debootstrap来创建最基础的Ubuntu 24.04 ARM64根文件系统。
首先,找一个空间充足的位置,创建一个工作目录并进入。然后执行下面的命令:
# 创建一个目录来存放我们的根文件系统,名字可以自定,比如ubuntu_rootfs
sudo debootstrap --arch=arm64 --variant=minbase noble ./ubuntu_rootfs http://ports.ubuntu.com/
</


1038

被折叠的 条评论
为什么被折叠?



