技术贴|如何在【RK3588】ELF 2开发板上进行根系统的定制原创

发布时间:2025-07-01 09:24:08
RK3588 RK3588开发板 根系统

ELF 2开发板基于瑞芯微RK3588高性能处理器设计,拥有四核ARM Cortex-A76与四核ARM Cortex-A55的CPU架构,主频最高可达2.4GHz,内置6TOPS算力的NPU,这一设计让它能够轻松驾驭多种深度学习框架,高效处理各类复杂的AI任务。

 

ELF 2开发板已经适配了Linux 5.10Elf2 Desktop 22.04操作系统,其中Elf2 Desktop 22.04系统是专为嵌入式设计的Ubuntu base。虽然其apt-get 等命令支持在线安装软件,但存在明显缺陷:重新烧写镜像后软件会丢失,需再次安装。 这在批量部署多块开发板时,工作量巨大。因此,将软件预先集成到镜像中,实现烧录后无需重新安装,成为亟待解决的问题。

 

本文将围绕如何在 【RK3588】ELF 2开发板上基于 Ubuntu 22.04 操作系统进行根文件系统的定制展开详细阐述。

 

1、 开发环境安装QEMU

QEMU 是一款轻量级硬件模拟器,支持多种架构,如 ARM、x86 和 x86-64。 它应用广泛,是 Xen 虚拟化平台和 Android 模拟器等项目的底层基础。在嵌入式领域,开发者常利用 QEMU 深入研究 Linux 系统,进行文件系统优化等工作。

 

下面我们开始在开发环境(需要开发环境能上网)中安装QEMU,如下:

(1)更新下载源

elf@ubuntu:~ sudo apt-get update

 

(2)执行命令安装

elf@ubuntu:~ sudo apt-get install qemu-user-static

 

2、文件系统挂载

将SDK中ELF 2 Desktop 文件系统镜像jammy-rootfs.img进行挂载,挂载后可以被访问操作。

 

(1)文件系统备份

操作前先对文件系统镜像备份,如若操作出现异常,可回退使用最初镜像。

elf@ubuntu:~cd work/ELF2-linux-source/ubuntu/   #SDK源码路径需修改为个人路径elf@ubuntu:~/work/ELF2-linux-source/ubuntumkdir bakelf@ubuntu:~/work/ELF2-linux-source/ubuntucp jammy-rootfs.img bak/

 

(2)文件系统扩容

文件系统扩容的大小不超过根分区大小(默认根分区为14G)

elf@ubuntu:~/work/ELF2-linux-source/ubuntue2fsck -f jammy-rootfs.imgelf@ubuntu:~/work/ELF2-linux-source/ubunturesize2fs jammy-rootfs.img 3145728

 

resize2fs IMAGE SIZE

  • IMAGE为要修改的镜像名称;

  • SIZE为块的数量,一个块的大小为4K。

(例如扩容到12G,12G=12x1024x1024=12582912K=3145728x4K,SIZE参数为3145728)

 

(3)创建挂载目录,并将文件系统挂载到该目录

elf@ubuntu:~/work/ELF2-linux-source/ubuntumkdir rootfself@ubuntu:~/work/ELF2-linux-source/ubuntusudo mount jammy-rootfs.img rootfs/

 

3、修改配置

(1)将开发环境中的qemu-arm-static拷贝到desktop文件系统中

elf@ubuntu:~/work/ELF2-linux-source/ubuntusudo cp /usr/bin/qemu-arm-static rootfs/usr/bin/

 

(2)将开发环境中的DNS配置拷贝到desktop文件系统中,因为安装程序时要用络

elf@ubuntu:~/work/ELF2-linux-source/ubuntusudo cp -b /etc/resolv.conf  rootfs/etc/resolv.conf

 

(3)修改下载源

$ sudo vim rootfs/etc/apt/sources.list

 

添加:

deb http://ports.ubuntu.com/ubuntu-ports/ jammy main universedeb-src http://ports.ubuntu.com/ubuntu-ports/ jammy main universe

 

4、文件系统隔离

通过chroot进行虚拟化隔离,将隔离步骤写入到ch-mount.sh脚本中。

#!/bin/bashfunction mnt() {echo "MOUNTING"sudo mount -t proc /proc ${2}procsudo mount -t sysfs /sys ${2}syssudo mount -o bind /dev ${2}devsudo chroot ${2}}function umnt() {echo "UNMOUNTING"sudo umount ${2}procsudo umount ${2}syssudo umount ${2}dev}if [ "$1" == "-m" ] && [ -n "$2" ] ;thenmnt $1 $2elif [ "$1" == "-u" ] && [ -n "$2" ];thenumnt $1 $2elseecho ""echo "Either 1'st, 2'nd or both parameters were missing"echo ""echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"echo ""echo "For example: ch-mount -m /media/sdcard/"echo ""echo 1st parameter : ${1}echo 2nd parameter : ${2}fi

 

ch-mount.sh脚本放到ELF2-linux-source/ubuntu目录下,赋予权限后,通过参数-m指定挂载路径:

elf@ubuntu:~/work/ELF2-linux-source/ubuntusudo chmod a+x ch-mount.shelf@ubuntu:~/work/ELF2-linux-source/ubuntusudo ./ch-mount.sh -m rootfs/root@ubuntu:/#

 

5、文件系统修改

前面我们挂载了文件系统,已将文件系统挂载到了QEMU模拟器,下面就可以安装我们所需要的软件了。

(1)更新下载源

root@ubuntu:/# apt update

 

(2)软件安装与卸载

至此,便可以安装所需软件了,在这里用apt-get安装自己所需软件,根据所需安装。我们这里来安装一个minicom串口测试工具。如下:

root@ubuntu:/# apt-get install minicom

此外通过dpkg --list命令查看所有安装的软件,如果想裁剪文件系统,可以使用【apt-get remove 软件包名称】进行卸载相关软件。

 

(3)安装完成后,exit退出QEMU

root@ubuntu:/# exitelf@ubuntu:~/work/ELF2-linux-source/ubuntu$

 

(4)执行ch-mount.sh脚本卸载文件系统,指定参数-u,后打印如下:

elf@ubuntu:~/work/ELF2-linux-source/ubuntusudo ./ch-mount.sh -u rootfs/elf@ubuntu:~/work/ELF2-linux-source/ubuntusudo umount rootfs

 

6、打包镜像

elf@ubuntu:~/work/ELF2-linux-source/ubuntucd ..elf@ubuntu:~/work/ELF2-linux-source./build.sh updateimg

在ELF2-linux-source/rockdev路径下会生成新的update.img。

 

通过以上步骤,我们成功完成了 【RK3588】ELF 2开发板上进行根文件系统的定制工作,这一过程不仅简化了批量生产中的软件安装流程,还显著提升了开发效率。各位小伙伴如果在实践过程遇见各种问题,欢迎随时留言探讨。

其它推荐:

推荐阅读:

/* 53客服*/ /* 百度统计*/ /* 百度站长*/