7. 修改rootfs.img镜像内部的文件¶
有时候我们需要修改rootfs里的内容,又不想从头构建根文件系统,就可以使用野火发布的镜像,直接修改rootfs分区中的文件。
这种方法只适用于修改量较小,且对根文件系统文件结构较为熟悉的开发人员使用。
这里以RK3568-LUBANCAT2-N_DEBIAN_BUSTER_DESKTOP_20220928_Update镜像为例进行说明,具体步骤如下
注意
通用镜像 必须在Linux下,使用Linux_Pack_Firmware工具进行打包、解包,否则打包出来的镜像无法正常使用。 专用镜像 在windows和linux下都可以正常打包、解包。
7.1. RKDevTool解包、修改、打包(Windows)¶
1.使用RKDevTool将update.img完整镜像进行解包,得到单独的根文件系统镜像rootfs.img
2.解包得到的rootfs.img镜像保存在RKDevTool_Release_v2.92\Output\Android\Image
3.将rootfs.img复制到Linux PC或虚拟机中,挂载镜像。
1 2 3 4 5 6 7 8 | # 创建目录用来挂载rootfs.img
mkdir rootfs
# 挂载
sudo mount rootfs.img rootfs/
# 查看是否挂载成功
df -h
|
4.进入挂载目录修改文件
这里我们修改etc/hostname文件,将原本的lubancat修改为embedfire。
也可以根据需求修改其他的配置文件、新建或删除文件。
修改完成后我们取消挂载。
1 | sudo umount rootfs/
|
使用RKDevTool_Release_v2.92中的打包工具重新打包成完整镜像。
打开RKDevTool_Release_v2.92\rockdev,并将之前解包的Output\Android下的所有文件复制到rockdev目录里。
然后用修改过的rootfs.img文件替换现在rockdev\Image目录下的rootfs.img文件
双击rk356x-mkupdate.bat开始打包镜像
烧录重新打包的镜像
7.2. Linux_Pack_Firmware解包、修改、打包(Linux)¶
1.将从网盘获取的镜像解压成.img格式并重命名为update.img,也可以直接使用SDK生成的update.img镜像。
将镜像update.img并复制到Linux_Pack_Firmware/rockdev目录下
2.运行unpack.sh脚本进行解包
1 | unpack.sh
|
解包后的文件保存在output目录中,文件内容与RKDevTool解包后的内容相同。
output目录中有一个文件一个文件夹
package-file:分区与分区镜像名的对应关系
Image:firmware.img展开后的内容,也就是解包后的分区镜像。
进入Image目录,根据不同操作系统镜像,有以下三类文件
分区表:parameter.txt
loader文件:MiniLoaderAll.bin
分区镜像:boot.img、uboot.img等以img结尾的分区镜像文件
3.将生成的rootfs.img挂载并按需修改内容
1 2 3 4 5 | #将根文件系统挂载到/mnt
sudo mount Image/rootfs.img /mnt
#修改完成后进行卸载
sudo umount /mnt
|
4.打包
在前面的解包过程中,我们得到了output文件夹的内容。
首先我们将rockdev/output目录下的内容复制到rockdev目录下,删除之前用于解包的update.img镜像
如果我们对某一分区镜像文件做出了改变,在打包时要注意镜像文件名正确,与package-file文件中的命名及路径一致。
LubanCat-1、2、Zero都使用了rk356x主芯片,运行对应的打包脚本。
打包完成后,当前文件夹内出现了update.img文件,这就是打包后的完整镜像文件
我们使用烧录工具,将打包好的镜像烧录到板卡中,可以正常启动。