rk3588根文件系统制作和导出镜像img

前言

在我们做过根文件系统精简以后,我们需要将目前精简过的根文件系统导出,制成镜像文件,方便生产烧录。

一、准备工作

一台运行着精简根文件系统的RK3588开发板,一台Ubuntu主机(或者虚拟机),两者可以相互ping通,或者都连接到了公网。

二、文件系统镜像制作

将该脚本复制到ubuntu主机,赋予可执行权限,然后执行

chmod a+x generate_rootfs_img.sh
./generate_rootfs_img.sh

然后根据提示,输入RK3588开发板的用户名和ip。即可在ubuntu根目录下生成rootfs.img根文件系统镜像。

脚本如下:

#! /bin/bash

# acquire root privilege
if [ ! "$UID" -eq 0 ]; then
    echo "This script require root privilege."
    exit 0
fi

function check_ip() 
{   
    local IP=$1   
    VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')   
    if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then   
        if [ $VALID_CHECK == "yes" ]; then   
         echo "IP $IP  available!"   
            return 0   
        else   
            echo "IP $IP not available!"   
            return 1   
        fi   
    else   
        echo "IP format error!"   
        return 1   
    fi   
}   
while true ;do   
    read -p "Enter your username and ip:" userName IP   
    check_ip $IP   
    [ $? -eq 0 ] && break   
done
# Install the rsync
if ! type rsync >/dev/null 2>&1; then
    echo 'rsync did not install,Now we will intall rsync!'
    apt update
    apt install rsync
fi
# Test ip
if  ping -c 2 ${IP} >/dev/null ; then
    echo 'The IP is conneted!'   
else 
    echo 'The IP can not conneted! '
    exit 0
fi
# New path
rm -rf /root/rootfs
if [ ! -d "/root/rootfs" ]; then
  mkdir /root/rootfs
fi
# Download rootfs
rsync -avx $userName@$IP:/ /root/rootfs

# Creat new img by dd 
dd if=/dev/zero of=rootfs.img  bs=1M count=15000
mkfs.ext4 -F -L linuxroot rootfs.img
if [ ! -d "/ubuntu-mount" ]; then
    mkdir /ubuntu-mount
fi
mount rootfs.img /ubuntu-mount
cp -rfp /root/rootfs/* /ubuntu-mount
umount /ubuntu-mount
e2fsck -p -f rootfs.img
resize2fs -M rootfs.img
exit 0

三、完整镜像制作

通过上述的文件系统制作流程,我们得到了一个rootfs.img镜像,该镜像可以直接通过rockchip提供的工具进行烧录,如果需要制作一个完整的镜像包含uboot、kernel和rootfs,需要将rootfs.img放
/sdk/rk3588_repo_sdk_v1.0.2a/ubuntu_rootfs目录下(firefly开发板),运行指令:

./build.sh

即可在目录/sdk/rk3588_repo_sdk_v1.0.2a/rockdev/pack下看到名为ITX-3588J_Ubuntu_*.img文件即完整的镜像文件,使用rockchip的烧录工具进行完整烧录。
在目录/rk3588_repo_sdk_v1.0.2a/rockdev下有一个 名字为 parameter.txt的软连接文件,其中描述了各个分区的地址和大小,如下所示:

FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3588
MACHINE_ID: 007
MANUFACTURER: RK3588
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00004000@0x00004000(uboot),0x00002000@0x00008000(misc),0x00080000@0x0000a000(boot:bootable),0x00040000@0x0008a000(recovery),0x00010000@0x000ca000(backup),0x00c00000@0x000da000(rootfs),-@0x00cda000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

uboot的起始地址在0x00004000,大小为0x00004000=8M,其他部分的大小:

uboot 4000= 8M
misc  0x00002000=4M
boot 0x00080000 = 256M
recovery 0x00040000=128M
backup  0x00010000 = 32m
rootfs  0x00c00000  =6G
userData =

我们自己制作的根文件系统大小可能超过了6G,那么我们需要修改rootfs和userdata的大小和起始地址,例如,如果我们的根文件系统大小为8G多,那么可以指定rootfs大小为9G,那么 parameter.txt就应该如下所示:

FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3588
MACHINE_ID: 007
MANUFACTURER: RK3588
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00004000@0x00004000(uboot),0x00002000@0x00008000(misc),0x00080000@0x0000a000(boot:bootable),0x00040000@0x0008a000(recovery),0x00010000@0x000ca000(backup),0x001200000@0x000da000(rootfs),-@0x0012da000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

同步修改了rootfs的大小和userdata的起始地址。

参考资料

根文件制作和导出

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
导出rk3588s镜像,可以按照以下步骤进行操作: 1. 首先,在主机上使用dd工具创建一个镜像文件。可以执行以下指令: ``` dd if=/dev/zero of=rk3588s.img bs=1M count=3000 ``` 这将创建一个名为rk3588s.img镜像文件,大小为3000MB。\[1\] 2. 接下来,将开发板RK3588s的整个文件系统的文件通过ssh拷贝到PC系统(Ubuntu)。可以使用以下命令: ``` scp -r user@rk3588s:/path/to/rootfs /path/to/destination ``` 这将把开发板上的文件系统拷贝到PC系统上的指定目录。\[2\] 3. 然后,将拷贝的全部文件加载到虚拟光盘中,制作img文件。具体操作可以参考使用工具如genimage或者mkimage等进行镜像制作的方法。\[2\] 4. 最后,将制作好的img文件烧写回RK3588s开发板进行测试。可以使用rockchip提供的烧录工具进行烧录操作。如果需要制作一个完整的镜像包含uboot、kernel和rootfs,需要将rootfs.img放在相应的目录下,然后运行相应的指令进行构建。\[3\] 请注意,具体的操作步骤可能会因为不同的环境和工具而有所差异,建议参考相关文档或者开发板的说明进行操作。 #### 引用[.reference_title] - *1* *2* [导出开发板上的文件系统,并打包制成img镜像](https://blog.csdn.net/Cappuccino_jay/article/details/125162742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [rk3588文件系统制作导出镜像img](https://blog.csdn.net/weixin_44244400/article/details/131088887)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒙蒂锅巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值