自行打包 update.img 的方法

自行打包 update.img 的方法

  • 作者:吴思含(Witheart)
  • 更新时间:20250621

概要:本文介绍了如何在 Linux 环境下通过 Android SDK 的工具自行打包 update.img 文件。详细说明了工具目录、脚本选择方法、变量配置方式,以及打包流程和注意事项。


1. 打包环境准备

一般都是在 Linux 环境 下进行打包。

进入 Android SDK 源码目录后,打包工具位于以下路径:

复制代码
RKTools/linux/Linux_Pack_Firmware/rockdev

该目录下包含多个脚本文件,需根据具体的版型选择合适的脚本进行打包。

图片示例:


2. 如何选择正确的打包脚本

如果不确定使用哪个脚本,可以查阅 SDK 根目录下的 build.sh 中关于 make updateimg 部分的代码逻辑:

sh 复制代码
if [ "$BUILD_UPDATE_IMG" = true ] ; then
    cp logo-img/nk-logo.img $IMAGE_PATH/	
    mkdir -p $PACK_TOOL_DIR/rockdev/Image/
    cp -f $IMAGE_PATH/* $PACK_TOOL_DIR/rockdev/Image/

    echo "Make update.img"
    if [[ $TARGET_PRODUCT =~ "PX30" ]]; then
	cd $PACK_TOOL_DIR/rockdev && ./mkupdate_px30.sh
    elif [[ $TARGET_PRODUCT =~ "rk356x_box" ]]; then
	if [ "$BUILD_AB_IMAGE" = true ] ; then
		cd $PACK_TOOL_DIR/rockdev && ./mkupdate_ab_$TARGET_PRODUCT.sh
	else
		cd $PACK_TOOL_DIR/rockdev && ./mkupdate_$TARGET_PRODUCT.sh
	fi
    else
	if [ "$BUILD_AB_IMAGE" = true ] ; then
		cd $PACK_TOOL_DIR/rockdev && ./mkupdate_"$TARGET_BOARD_PLATFORM"_ab.sh
	else
		cd $PACK_TOOL_DIR/rockdev && ./mkupdate_$TARGET_BOARD_PLATFORM.sh
	fi
    fi

    if [ $? -eq 0 ]; then
        echo "Make update image ok!"
    else
        echo "Make update image failed!"
        exit 1
    fi
    cd -
    mv $PACK_TOOL_DIR/rockdev/update.img $IMAGE_PATH/ -f
    rm $PACK_TOOL_DIR/rockdev/Image -rf
fi

变量说明

  • $TARGET_PRODUCT:产品型号
  • $TARGET_BOARD_PLATFORM:平台型号

可以通过在终端中使用 echo 命令查看这两个变量的值:

sh 复制代码
echo $TARGET_PRODUCT
echo $TARGET_BOARD_PLATFORM

3. 打包前的准备工作

在使用打包工具之前,需要完成以下准备:

  1. 在 RKTools/linux/Linux_Pack_Firmware/rockdev 目录下创建 Image 文件夹:

    sh 复制代码
    mkdir -p RKTools/linux/Linux_Pack_Firmware/rockdev/Image
  2. 将所有需要打包的镜像文件和分区表文件(如 boot.img、system.img、parameter.txt 等)放入该目录中。

    这些文件通常位于 rockdev 目录中,是平时生成的镜像文件。


4. 执行打包命令

根据平台执行相应脚本,例如:

sh 复制代码
./RKTools/linux/Linux_Pack_Firmware/rockdev/mkupdate_rk356x.sh

执行后将在以下两个位置生成 update.img:

  • ./RKTools/linux/Linux_Pack_Firmware/rockdev/Image/update.img
  • ./RKTools/linux/Linux_Pack_Firmware/rockdev/update.img

刷写时请使用后者,因为前者未包含 MiniLoaderAll.bin,烧录工具无法识别。

相关推荐
易点云徐源10 小时前
HP 暗影精灵 PRO 16 安装双系统后,开机直接进入 Windows,按 F9 才能进入 Ubuntu:GRUB 菜单不显示的处理方法
linux·运维·ubuntu
Sayai15 小时前
Ubuntu 开发环境搭建避坑(一):网卡 EEE 致 60% 周期性丢包,Realtek RTL8125 网络黑洞排查与修复
linux·运维·网络·ubuntu·性能优化
牢姐与蒯15 小时前
WSL2 迁移教程:把Ubuntu+WSL2从C盘挪到别的盘
linux·运维·服务器·网络·ubuntu·1024程序员节
小菜要扣篮17 小时前
Ubuntu 下使用 vscode 打开 C++ 项目后,无法通过 F12 定位到定义问题解决
c++·vscode·ubuntu
hhhjhl2 天前
Undici 跨端三方库仓颉适配全流程
java·开发语言·ubuntu
~城南花已开~2 天前
Intel E810 SR-IOV VF Spoofcheck 防伪造测试-KVM3
服务器·网络·笔记·学习·ubuntu·etl工程师
十年磨一剑~2 天前
APT 仓库包查看方法文档
linux·ubuntu
技术小事3 天前
Surface 装 Ubuntu 双系统
linux·运维·ubuntu
五块钱的方便面3 天前
ubuntu下networkmanager不让管理解决办法
linux·运维·ubuntu
根目录下的猫3 天前
ArkTS 代码中如何添加作者信息
linux·运维·ubuntu