news 2026/4/23 9:32:37

RK3588 开发实战:从零构建定制化Ubuntu根文件系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RK3588 开发实战:从零构建定制化Ubuntu根文件系统

1. RK3588开发环境搭建与准备工作

第一次接触RK3588开发板时,我被它强大的性能所震撼。这款采用ARM Cortex-A76/A55架构的处理器,不仅支持8K视频解码,还具备强大的AI加速能力。但在实际开发中,我发现官方提供的系统镜像往往无法满足定制化需求,于是决定从零构建一个专属的Ubuntu根文件系统。

在开始之前,我们需要准备以下环境:

  • 一台x86架构的PC(建议使用Ubuntu 18.04/20.04系统)
  • VMware Workstation Pro虚拟机软件
  • 至少50GB的磁盘空间
  • 稳定的网络连接

我强烈建议在虚拟机中操作,因为这样可以避免污染主机环境。记得去年我在主机上直接操作时,不小心改错了配置,导致整个系统崩溃,不得不重装系统。在VMware中创建虚拟机时,建议分配至少8GB内存和4个CPU核心,这样在后续编译时会更加流畅。

安装基础工具链是第一步,这些组件缺一不可:

sudo apt-get update sudo apt-get install -y qemu-user-static binfmt-support debootstrap

这里有个小技巧:如果你使用的是Ubuntu 20.04以上版本,建议安装qemu 5.0以上版本,否则在模拟ARM架构时可能会遇到兼容性问题。我曾经因为版本不匹配,花了整整两天时间排查一个诡异的段错误。

2. 构建基础Ubuntu根文件系统

2.1 下载和解压Ubuntu Base

选择适合的Ubuntu版本很关键。对于RK3588这种64位ARM处理器,我们需要aarch64架构的镜像。我推荐使用Ubuntu 20.04 LTS版本,因为它有长期支持,软件生态也比较完善。

下载和解压命令如下:

mkdir -p ~/rk3588_rootfs cd ~/rk3588_rootfs wget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04.4-base-arm64.tar.gz sudo tar -xpf ubuntu-base-20.04.4-base-arm64.tar.gz -C binary

解压后你会看到一个名为binary的目录,这就是我们根文件系统的雏形。这里有个坑要注意:一定要用sudo权限解压,否则某些设备文件无法正确创建。

2.2 配置基础系统环境

接下来是配置网络和软件源。我在多个项目中验证过,阿里云的镜像源在国内速度最快:

sudo cp /etc/resolv.conf binary/etc/ sudo cp /usr/bin/qemu-aarch64-static binary/usr/bin/ cat <<EOF | sudo tee binary/etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu-ports/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu-ports/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu-ports/ focal-backports main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu-ports/ focal-security main restricted universe multiverse EOF

创建挂载脚本mount.sh可以大幅简化后续操作:

cat <<EOF > mount.sh #!/bin/bash mnt() { sudo mount -t proc /proc \${2}proc sudo mount -t sysfs /sys \${2}sys sudo mount -o bind /dev \${2}dev sudo mount -o bind /dev/pts \${2}dev/pts } umnt() { sudo umount \${2}proc sudo umount \${2}sys sudo umount \${2}dev/pts sudo umount \${2}dev } if [ "\$1" == "-m" ] && [ -n "\$2" ]; then mnt \$1 \$2 elif [ "\$1" == "-u" ] && [ -n "\$2" ]; then umnt \$1 \$2 fi EOF chmod +x mount.sh

3. 定制化系统组件安装

3.1 基础软件包安装

挂载并进入chroot环境后,第一件事就是更新系统和安装基础软件:

./mount.sh -m binary/ sudo chroot binary /bin/bash apt update apt upgrade -y apt install -y systemd sudo bash-completion vim net-tools iputils-ping

这里有个重要提示:必须安装systemd,否则系统无法正常启动。我曾经尝试不用systemd,结果系统卡在启动界面无法进入。安装完成后,建议配置时区和语言环境:

apt install -y locales tzdata dpkg-reconfigure tzdata # 选择Asia/Shanghai dpkg-reconfigure locales # 选择en_US.UTF-8和zh_CN.UTF-8

3.2 图形界面安装

如果需要图形界面,Ubuntu桌面是个不错的选择:

apt install -y ubuntu-desktop systemctl set-default graphical.target

安装过程大约需要1小时,取决于你的网速。我建议在晚上进行这个步骤,让它自动完成。如果空间有限,可以考虑安装更轻量级的LXDE或Xfce桌面环境。

创建用户和设置密码也很重要:

useradd -s /bin/bash -m -G adm,sudo rkuser passwd rkuser passwd root echo "rk3588" > /etc/hostname

4. RK3588硬件适配

4.1 安装Rockchip专属驱动

RK3588的硬件加速功能需要通过专用驱动实现。假设你已经下载了官方SDK,可以这样安装:

# RGA2加速库 apt install ./packages/rga2/*.deb # DRM显示驱动 apt install ./packages/libdrm-cursor/*.deb # 多媒体处理平台 apt install ./packages/mpp/*.deb

4.2 无线网络和蓝牙配置

WiFi和蓝牙需要额外固件支持:

apt install ./packages/rkwifibt/*.deb cp -r /path/to/SDK/external/rkwifibt/firmware /lib/firmware/

这里有个常见问题:如果WiFi无法正常工作,很可能是固件版本不匹配。建议查看内核日志(dmesg)确认具体错误。

4.3 摄像头和视频处理

虽然官方文档提到摄像头适配尚未完成,但我们可以先安装GStreamer框架:

apt install -y gstreamer1.0-plugins-bad gstreamer1.0-plugins-good \ gstreamer1.0-plugins-ugly gstreamer1.0-tools

5. 系统优化与打包

5.1 文件系统扩展

创建自动扩展脚本可以避免存储空间不足的问题:

cat <<EOF > /etc/init.d/firstboot.sh #!/bin/bash if [ ! -e "/.resized" ]; then resize2fs /dev/mmcblk0p6 touch /.resized fi EOF chmod +x /etc/init.d/firstboot.sh

5.2 制作系统镜像

最后是打包环节,这个脚本可以帮你生成img文件:

cat <<EOF > mkimage.sh #!/bin/bash dd if=/dev/zero of=rootfs.img bs=1M count=6144 mkfs.ext4 -F -L rootfs rootfs.img mkdir -p mnt sudo mount rootfs.img mnt sudo cp -rfp binary/* mnt/ sudo umount mnt e2fsck -p -f rootfs.img resize2fs -M rootfs.img EOF chmod +x mkimage.sh ./mkimage.sh

生成的rootfs.img可以直接用RKDevTool烧写到开发板。记得第一次启动时要耐心等待,系统会自动完成初始化配置。如果卡在某个步骤,可以通过串口调试查看具体原因。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 9:29:41

终极指南:5分钟搭建AO3镜像站点,突破网络访问限制

终极指南&#xff1a;5分钟搭建AO3镜像站点&#xff0c;突破网络访问限制 【免费下载链接】AO3-Mirror-Site 项目地址: https://gitcode.com/gh_mirrors/ao/AO3-Mirror-Site 当AO3突然无法访问&#xff0c;无数创作者和读者陷入困境时&#xff0c;AO3-Mirror-Site开源项…

作者头像 李华
网站建设 2026/4/23 9:24:17

Figma中文插件快速上手指南:3分钟让英文界面变中文的完整教程

Figma中文插件快速上手指南&#xff1a;3分钟让英文界面变中文的完整教程 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否在使用Figma时被满屏的英文术语困扰&#xff1f;"A…

作者头像 李华
网站建设 2026/4/23 9:10:16

Applite镜像配置实战指南:三分钟解决Homebrew下载难题

Applite镜像配置实战指南&#xff1a;三分钟解决Homebrew下载难题 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 你是否曾经在macOS上使用Homebrew安装软件时&#xff0c;面对…

作者头像 李华
网站建设 2026/4/23 9:09:25

如何通过手机号快速查询QQ号:Python工具的终极指南

如何通过手机号快速查询QQ号&#xff1a;Python工具的终极指南 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾经因为忘记QQ号而无法登录&#xff1f;新手机到手却想不起绑定的QQ号码&#xff1f;现在&#xff0c;通过phone…

作者头像 李华
网站建设 2026/4/23 9:07:21

TypeScript:给JavaScript加上类型安全

TypeScript 的核心优势TypeScript 是 JavaScript 的超集&#xff0c;通过静态类型检查增强了代码的可靠性。类型系统能在编译阶段捕获潜在错误&#xff0c;减少运行时异常。基础类型注解变量声明时可直接标注类型&#xff1a;let username: string "Alice"; let age…

作者头像 李华
网站建设 2026/4/23 9:05:33

SpringBoot+Vue大学生就业信息管理系统源码+论文

代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择&#xff1a; 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…

作者头像 李华