0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux文件系统打包及镜像制作,触觉智能RK3562开发板演示

触觉智能 ? 2025-04-28 16:45 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文介绍Linux开发板文件系统打包及镜像制作的方法,演示Linux文件系统打包及镜像制作,适用于想将配置好的系统环境打包成镜像批量烧录。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑智能家居、教育电子、工业显示与控制等行业。

工具获取

本文所介绍的方法需要使用到Linux环境下的一些工具。工具可联系触觉智能客服或留言获取。下载Ubuntu PC环境后,需要解包后使用,解包方法如下:

$ tar -vxf ido-pack-tools.tar -C ./

解包后的文件内容如下:

wKgZPGgPQEeASExlAAA9TYlID6A41.jpeg

工具包脚本默认芯片信息是rk3562,如果使用其他芯片,则需要修改芯片信息,对应路径ido-pack-tools/mkupdate.sh。

wKgZO2gPQEeAPeI-AABPlLsaijw86.jpeg

文件系统打包及文件系统镜像制作

  • 从开发板中打包出文件系统

先在开发板中插入U盘或TF卡,然后通过mount命令查看文件系统分区节点,如下所示:

root@ido:/# mount /dev/mmcblk2p8 on / type ext4 (rw,relatime) devtmpfs on /dev type devtmpfs (rw,relatime,size=996844k,nr_inodes=249211,mode=755) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,size=1008396k,nr_inodes=252099) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,size=201680k,nr_inodes=252099,mode=755) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,nr_inodes=252099) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,size=1008396k,nr_inodes=252099,mode=755) cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd) pstore on /sys/fs/pstore type pstore (rw,relatime) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) debugfs on /sys/kernel/debug type debugfs (rw,relatime) tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime) configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime) fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime) adb on /dev/usb-ffs/adb type functionfs (rw,relatime) tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=201676k,nr_inodes=252099,mode=700) tmpfs on /run/user/1001 type tmpfs (rw,nosuid,nodev,relatime,size=201676k,nr_inodes=252099,mode=700,uid=1001,gid=1001) gvfsd-fuse on /run/user/1001/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1001,group_id=1001) /dev/mmcblk2p7 on /media/ido/oem type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2) /dev/mmcblk2p6 on /media/ido/userdata type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2) /dev/sda1 on /media/ido/U type vfat (rw,nosuid,nodev,relatime,uid=1001,gid=1001,fmask=0022,dmask=0022,codepage=936,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)

由上面命令第2和29行可以看到

/dev/mmcblk2p8 on/type ext4 (rw,relatime),/dev/mmcblk2p8

挂载到根目录,/dev/mmcblk2p8就是我们需要的节点。U盘挂载目录为/media/ido/U。

# 挂载根文件目录 $ sudo mount /dev/mmcblk2p8 /mnt # 进入挂载文件夹 $ cd /mnt $ rm var/lib/misc/firstrun $ sudo tar -czf /media/ido/U/ido-rootfs.tar.gz ./* $ sync

注意:打包使用tar命令需要用sudo权限。

  • 压缩包解压

将打包出的压缩包,解压至Ubuntu PC端环境,命令如下:

$ mkdir -p your/target/path/ $ sudo tar -xzf ido-rootfs.tar.gz -C your/target/path/

  • 文件系统镜像制作

查看文件系统大小,如下所示:

$ sudo du -sh your/target/path/

制作镜像需要的脚本文件mk-rootfs-image.sh,文件位于工具包的pack-tools/roofs_mk/目录。根据系统大小修改 mk-rootfs-image.sh 脚本第25行的参数,默认镜像大小设置为4096MB。

dd if=/dev/zero of=${ROOTFSIMAGE} bs=1M count=0 seek=4096

注意:一般脚本中设置的镜像大小需要大于 du 返回值。

$ sudo cd pack-tools/roofs_mk/ $ sudo ./mk-rootfs-image.sh ../../your/target/path/

脚本正常运行退出后,可在目录得到rootfs.img的文件系统镜像。

制作整包固件update.img

前面文章得到了rootfs.img散包固件,接下来我们制作update.img整包固件。

此处分两种情况:

1. 只修改文件系统,只需将原本烧录的update.img镜像解包后,替换新制作的rootfs.img。

2. 如果除了文件系统外还有其他修改,则可以修改sdk源码编译脚本,编译的时候使用自定义的文件系统。

  • 只修改文件系统的情况

将需要解包的完整镜像文件拷贝到工具包 pack-tools 目录下,此处以完整镜像 IDO-EVB3562-V1B_MIPI-800x1280_Ubuntu20_QT5_240719.img为例。

wKgZPGgPQEeAaudBAACW7HOKmU054.jpeg

执行解包脚本,将update镜像按照分区拆分出分区镜像。

$ ./unpack.sh IDO-EVB3562-V1B_MIPI-800x1280_Ubuntu20_QT5_240719.img

执行结果如下:

wKgZO2gPQEeAEyfzAAEBaKEaT0M55.jpeg

分区文件解包存放到./output/目录。

wKgZPGgPQEeAa_zuAAAxA9kF6n053.jpeg

将文章第2节中打包好的文件系统镜像复制替换到./output/rootfs.img,文件名称必须为rootfs.img。

最后执行./mkupdate.sh脚本将分区镜像合并为一个完整的镜像update.img。

wKgZO2gPQEeAMEJ-AAFgyL9BXVo66.jpeg

脚本运行成功后,将会产生新的整包文件./output/update.img。

  • 除了文件系统外还有其他修改的情况

不同SDK修改的地方不一致,在sdk中新建自定义目录myrootfs,把rootfs.img放入其中(myrootfs和build.sh同级目录)。

mkdir myrootfs #将rootfs.img放入myrootfs中 ls myrootfs/rootfs.img

情况一:直接修改build.sh,使其编译时使用我们的rootfs.img打包。在build.sh的function build_rootfs()函数中,添加24-27行代码。

function build_rootfs(){ check_config RK_ROOTFS_IMG || return 0 RK_ROOTFS_DIR=.rootfs ROOTFS_IMG=${RK_ROOTFS_IMG##*/} rm -rf $RK_ROOTFS_IMG $RK_ROOTFS_DIR mkdir -p ${RK_ROOTFS_IMG%/*} $RK_ROOTFS_DIR case "$1" in yocto) build_yocto ln -rsf yocto/build/latest/rootfs.img \ $RK_ROOTFS_DIR/rootfs.ext4 ;; debian) build_debian ln -rsf debian/linaro-rootfs.img \ $RK_ROOTFS_DIR/rootfs.ext4 ;; distro) build_distro for f in $(ls distro/output/images/rootfs.*);do ln -rsf $f $RK_ROOTFS_DIR/ done ;; myrootfs) ln -rsf myrootfs/rootfs.img \ $RK_ROOTFS_DIR/rootfs.ext4 ;; *) build_buildroot for f in $(ls buildroot/output/$RK_CFG_BUILDROOT/images/rootfs.*);do ln -rsf $f $RK_ROOTFS_DIR/ done ;; esac

在执行build.sh lunch后,执行以下命令:

export RK_ROOTFS_SYSTEM=myrootfs

最后执行build.sh即可生成包含了rootfs.img的update.img整包固件。

./build.sh

rockdev/update.img即为我们所需的完整固件。

情况二:如果build.sh脚本中没有function build_rootfs()函数,则修改

./device/rockchip/common/scripts/mk-rootfs.sh,添加以下8-12行与35行代码:

....省略部分代码........ build_ubuntu20() { ln -rsf "$PWD/ubuntu/rootfs-ubuntu20.04-desktop.img" $ROOTFS_DIR/rootfs.ext4 finish_build build_ubuntu20 $@ } build_myrootfs() { ln -rsf "$PWD/myrootfs/rootfs.img" $ROOTFS_DIR/rootfs.ext4 finish_build build_myrootfs $@ } ....省略部分代码........ build_hook() { check_config RK_ROOTFS_TYPE || return 0 if [ -z "$1" -o "$1" = rootfs ]; then ROOTFS=${RK_ROOTFS_SYSTEM:-buildroot} else ROOTFS=$1 fi ROOTFS_IMG=rootfs.${RK_ROOTFS_TYPE} ROOTFS_DIR="$RK_OUTDIR/rootfs" echo "==========================================" echo " Start building rootfs($ROOTFS)" echo "==========================================" rm -rf "$ROOTFS_DIR" mkdir -p "$ROOTFS_DIR" case "$ROOTFS" in yocto) build_yocto "$ROOTFS_DIR" ;; debian) build_debian "$ROOTFS_DIR" ;; buildroot) build_buildroot "$ROOTFS_DIR" ;; ubuntu) build_ubuntu20 "$ROOTFS_DIR" ;; myrootfs)build_myrootfs "$ROOTFS_DIR" ;; *) usage ;; esac

修改

./device/rockchip/common/configs/Config.in.rootfs,添加以下7、20、21行代码:

config RK_ROOTFS_SYSTEM string default "buildroot" if RK_ROOTFS_SYSTEM_BUILDROOT default "debian" if RK_ROOTFS_SYSTEM_DEBIAN default "yocto" if RK_ROOTFS_SYSTEM_YOCTO default "ubuntu" if RK_ROOTFS_SYSTEM_UBUNTU default "myrootfs" if RK_ROOTFS_SYSTEM_MYROOTFS choice prompt "default rootfs system" help Default rootfs system. config RK_ROOTFS_SYSTEM_BUILDROOT bool "buildroot" depends on RK_BUILDROOT_BASE_CFG != "" config RK_ROOTFS_SYSTEM_DEBIAN bool "debian" depends on RK_DEBIAN_VERSION != "" config RK_ROOTFS_SYSTEM_UBUNTU bool "ubuntu" config RK_ROOTFS_SYSTEM_MYROOTFS bool "myrootfs"

在执行build.sh lunch命令后,执行以下命令:

export RK_ROOTFS_SYSTEM=myrootfs

最后执行build.sh命令,即可生成包含了rootfs.img的update.img整包固件。

./build.sh

rockdev/update.img即为我们所需的完整固件。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    5725

    浏览量

    105644
  • Linux开发
    +关注

    关注

    0

    文章

    39

    浏览量

    7357
  • RK3568
    +关注

    关注

    5

    文章

    591

    浏览量

    6546
  • RK3588
    +关注

    关注

    7

    文章

    428

    浏览量

    6010
  • RK3566
    +关注

    关注

    0

    文章

    157

    浏览量

    5797
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    迅为RK3562开发板Buildroot系统功能测试

    迅为RK3562开发板Buildroot系统功能测试
    的头像 发表于 06-13 13:46 ?1243次阅读
    迅为<b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b>Buildroot<b class='flag-5'>系统</b>功能测试

    迅为国产四核RK3562开发板底板硬件接口原理说明

    迅为国产四核RK3562开发板底板硬件接口原理说明
    的头像 发表于 06-14 15:27 ?3042次阅读
    迅为国产四核<b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b>底板硬件接口原理说明

    新一代低价开发板芯片RK3562来啦! — 触觉智能RK3562开发板

    最近我收到了个一套开发板,有核心开发板,还有个7英寸触摸屏幕。这些东西,都是一家叫做触觉智能的公司做的基于瑞芯微
    的头像 发表于 08-15 17:42 ?3204次阅读
    新一代低价<b class='flag-5'>开发板</b>芯片<b class='flag-5'>RK3562</b>来啦! — <b class='flag-5'>触觉</b><b class='flag-5'>智能</b><b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b>

    Linux系统连接蓝牙、WiFi方法分享,适用瑞芯微RK3562等主板产品

    Linux系统连接蓝牙、WiFi方法分享,适用瑞芯微RK3562RK3568、RK3588等开发板
    的头像 发表于 09-12 10:24 ?1359次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统</b>连接蓝牙、WiFi方法分享,适用瑞芯微<b class='flag-5'>RK3562</b>等主板产品

    Linux系统挂载exfat格式U盘教程,触觉智能RK3562开发板演示

    本文介绍Linux系统(Ubuntu/Debian通用)挂载exfat格式U盘的方法,触觉智能RK3562
    的头像 发表于 12-10 10:10 ?796次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统</b>挂载exfat格式U盘教程,<b class='flag-5'>触觉</b><b class='flag-5'>智能</b><b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b><b class='flag-5'>演示</b>

    瑞芯微主板/开发板Linux系统播放音频方法,触觉智能RK3562开发板演示

    本文介绍瑞芯微方案主板/开发板Linux系统播放音频的方法,触觉智能RK3562
    的头像 发表于 12-13 11:40 ?1002次阅读
    瑞芯微主板/<b class='flag-5'>开发板</b><b class='flag-5'>Linux</b><b class='flag-5'>系统</b>播放音频方法,<b class='flag-5'>触觉</b><b class='flag-5'>智能</b><b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b><b class='flag-5'>演示</b>

    瑞芯微平台Android系统串口测试方法,触觉智能RK3562开发板演示

    瑞芯微方案主板Android系统串口测试方法,通用RK3568、RK3566、RK3588、RK3576等。
    的头像 发表于 12-24 11:51 ?996次阅读
    瑞芯微平台Android<b class='flag-5'>系统</b>串口测试方法,<b class='flag-5'>触觉</b><b class='flag-5'>智能</b><b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b><b class='flag-5'>演示</b>

    嵌入式开发必备-RK3562演示Linux常用系统查询命令(上)触觉智能出品

    实用干货!嵌入式开发学习必备-RK3562演示Linux常用系统查询命令(上)关注触觉
    的头像 发表于 12-31 10:51 ?117次阅读
    嵌入式<b class='flag-5'>开发</b>必备-<b class='flag-5'>RK3562</b><b class='flag-5'>演示</b><b class='flag-5'>Linux</b>常用<b class='flag-5'>系统</b>查询命令(上)<b class='flag-5'>触觉</b><b class='flag-5'>智能</b>出品

    嵌入式开发必备-RK3562演示Linux常用系统查询命令(下)

    本文继续介绍Linux系统查看硬件配置及常用调试命令,方便开发者快速了解开发板硬件信息及进行相关调试。触觉
    的头像 发表于 01-03 13:54 ?735次阅读
    嵌入式<b class='flag-5'>开发</b>必备-<b class='flag-5'>RK3562</b><b class='flag-5'>演示</b><b class='flag-5'>Linux</b>常用<b class='flag-5'>系统</b>查询命令(下)

    Linux系统更换开机logo方法教程,触觉智能RK3562开发板演示

    本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK
    的头像 发表于 01-06 10:53 ?831次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统</b>更换开机logo方法教程,<b class='flag-5'>触觉</b><b class='flag-5'>智能</b><b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b><b class='flag-5'>演示</b>

    触觉智能RK3562开发板新版强势亮相

    /RK3562J),都支持NPU和CAN功能了,为此触觉智能RK3562开发板进行了迭代升级,全新型号为EVB
    的头像 发表于 05-30 11:32 ?569次阅读
    <b class='flag-5'>触觉</b><b class='flag-5'>智能</b><b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b>新版强势亮相

    RK3562开发板uboot下GPIO的控制方法,触觉智能嵌入式方案商

    本文介绍如何uboot下GPIO的控制方法等,使用触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1To
    的头像 发表于 06-06 17:49 ?306次阅读
    <b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b>uboot下GPIO的控制方法,<b class='flag-5'>触觉</b><b class='flag-5'>智能</b>嵌入式方案商

    Linux系统查看及修改设备型号信息,触觉智能RK3562开发板演示

    本文介绍Linux系统如何查看及修改设备型号信息的方法,适用于想查看设备型号信息或者想将设备型号信息修改为自己项目的名称的情况。触觉智能RK3562
    的头像 发表于 06-19 15:58 ?417次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统</b>查看及修改设备型号信息,<b class='flag-5'>触觉</b><b class='flag-5'>智能</b><b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b><b class='flag-5'>演示</b>

    迅为RK3562开发板 Ubuntu系统功能测试

    迅为RK3562开发板 Ubuntu系统功能测试
    的头像 发表于 07-10 13:46 ?582次阅读
    迅为<b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b> Ubuntu<b class='flag-5'>系统</b>功能测试

    告别烧固件,RK3562开发板Android系统屏幕方向临时设置小妙招

    本文介绍RK3562开发板Android13系统不修改源码情况下,通过修改系统配置文件来实现屏幕方向旋转。使用触觉
    的头像 发表于 07-11 18:48 ?384次阅读
    告别烧固件,<b class='flag-5'>RK3562</b><b class='flag-5'>开发板</b>Android<b class='flag-5'>系统</b>屏幕方向临时设置小妙招