RK3588技术分享 | TF卡烧写大于4G容量镜像

问题描述

通过SD卡烧写镜像具有操作简便、快速部署、灵活性强等优势。只需将镜像文件写入SD卡,然后插入开发板即可完成烧写,步骤简单且工具易得;烧写速度快,支持批量操作,适合设备的快速部署和更新。

但是瑞芯微TF卡制作软件只适用于4G以下大小镜像的制作,而在iTOP-RK3588开发板所提供的镜像中,只有安卓镜像以及buildroot镜像是小于4G的,Ubuntu和Debian镜像会超过4G大小的限制,从而导致TF卡制作失败。

 但是Ubuntu和Debian镜像客户使用频率是非常高的,在项目部署以及后续项目升级阶段难免需要使用TF卡烧写镜像,那要如何解决TF卡4G大小限制的问题呢?

解决步骤

首先使用TF卡磁盘升级工具创建一个普通的buildroot固件升级镜像,升级步骤如下图所示:

 

升级完成之后将TF卡转到ubuntu虚拟机,TF卡默认格式为FAT32格式,TF卡里的内容如下图所示: 

 由于FAT32格式的TF卡只能存放4G以下容量的文件,所以这里要重新拷贝上述文件(瑞芯微sd卡工具制作步骤不能缺少,因为需要进入recovery进行系统升级),为了方便起见,可以直接使用以下脚本: 

#!/bin/bash

# 检查参数数量
if [ "$#" -ne 2 ]; then
    echo -e "\033[31m用法: $0 <磁盘设备> <挂载点>\033[0m"
    echo -e "\033[33m例如: $0 /dev/sdc1 /mnt\033[0m"
    exit 1
fi

DISK=$1
MNT=$2

# Step 1: 创建临时目录并制作空的 rksdfw.tag
echo -e "\033[32m步骤 1: 创建临时目录并制作空的 rksdfw.tag...\033[0m"
touch rksdfw.tag
echo -e "\033[32mrksdfw.tag 文件已创建。\033[0m"

# Step 2: 制作升级的配置文件 sd_boot_config.config
echo -e "\033[32m步骤 2: 创建 sd_boot_config.config 文件...\033[0m"
cat <<EOL > sd_boot_config.config
#rockchip sdcard boot config file for factory
loader_update = 0
display_led = 1
display_lcd = 1
pcba_test = 0
fw_update = 1
demo_copy = 0
EOL
echo -e "\033[32msd_boot_config.config 文件已创建。\033[0m"

# Step 3: 检查固件文件是否存在
if [ ! -f sdupdate.img ]; then
    echo -e "\033[31m错误: 当前目录中未找到 sdupdate.img 文件。\033[0m"
    echo -e "\033[33m请将要升级的固件文件拷贝到当前目录,并重命名为 sdupdate.img。\033[0m"
    exit 1
else
    echo -e "\033[32msdupdate.img 文件已找到。\033[0m"
fi

# Step 4: 格式化磁盘并拷贝文件
echo -e "\033[32m步骤 4: 格式化磁盘并拷贝文件...\033[0m"
sudo umount $DISK
if [ $? -ne 0 ]; then
    echo -e "\033[31m卸载 $DISK 失败,请确认设备未被占用。\033[0m"
    exit 1
fi

sudo mkfs.ext4 -F $DISK
if [ $? -ne 0 ]; then
    echo -e "\033[31m格式化 $DISK 失败。\033[0m"
    exit 1
fi

sudo mount $DISK $MNT
if [ $? -ne 0 ]; then
    echo -e "\033[31m挂载 $DISK 到 $MNT 失败。\033[0m"
    exit 1
fi

sudo cp rksdfw.tag sd_boot_config.config sdupdate.img $MNT
if [ $? -ne 0 ]; then
    echo -e "\033[31m拷贝文件到 $MNT 失败。\033[0m"
    sudo umount $MNT
    exit 1
fi

sudo umount $MNT
if [ $? -ne 0 ]; then
    echo -e "\033[31m卸载 $MNT 失败。\033[0m"
    exit 1
fi

echo -e "\033[32m步骤 4 完成: 磁盘格式化并成功拷贝文件。\033[0m"

保存该脚本为 full_flash.sh,然后像之前一样赋予可执行权限:

chmod +x full_flash.sh

 

然后将要烧写的镜像拷贝到当前目录,并重命名为sdupdate.img 

最后使用以下命令拷贝制作必须的文件即可,其中第一个参数为TF卡的盘符,第二个为挂载目录,制作过程如下所示: 

 升级完成之后,会提升以下打印信息,拔掉TF卡重启就可以进入要烧写的系统了。

### 如何在 Ubuntu 系统 RK3588 镜像文件 #### 准备工作 为了成功RK3588开发板的镜像文件,在Ubuntu系统中需先安装必要的工具。通常情况下,`dd`命令用于执行低级复制操作,可以用来镜像到存储设备。 #### 安装依赖包 确保已安装所需的软件包: ```bash sudo apt-get update && sudo apt-get install -y gdisk unzip wget file ``` #### 下载镜像文件 前往官方或其他可信资源下载适用于RK3588的目标操作系统映像文件。保存该`.img`或压缩后的镜像文件至本地磁盘[^1]。 #### 连接目标介质 将要刷入系统的USB闪存驱动器或者其他可移动媒体连接到计算机,并通过终端确认其挂载点和名称(例如/dev/sdX)。注意这里的sdX代表具体的设备名,不是实际路径的一部分: ```bash lsblk ``` #### 解压镜像文件(如果适用) 对于ZIP格式的镜像文件,解压缩得到原始IMG文件: ```bash unzip rk3588_image.zip -d ./rk3588/ cd ./rk3588/ ``` #### 使用 `dd` 命令镜像 警告:此过程会擦除选定分区上的所有数据,请谨慎选择正确的设备! 假设已经知道确切的目的地为 `/dev/sdb` ,则运行如下指令来启动流程: ```bash sudo dd if=rk3588.img of=/dev/sdb bs=4M status=progress conv=fdatasync sync ``` 上述命令中的参数解释如下: - `if=`指定输入文件即源镜像; - `of=`定义输出位置也就是待刻录的目标硬件节点; - `bs=4M`设置每次读取/的块大小为4MB加快速度; - `status=progress`显示进度条便于跟踪状态; - `conv=fdatasync`强制同步刷新缓存区内的更改以提高可靠性;最后一条单独使用的`sync`语句是为了确保所有的缓冲都被出到了物理媒介之上。 完成以上步骤之后断开电源重新插拔即可使新固件生效。建议重启电脑后再尝试开机引导新的OS环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值