分类 RTD298x系SoC分析 下的文章

part_targetM=4096 #定义闪存总大小,单位为M 只有1024/2048/4096/8192/16384这些选项可选
part = system /system ext4 package4/system.emmc.tar 891289600 #system分区
part = data /data ext4 package4/data.tar.bz2 2411724800 #data分区
part = cache /cache ext4 null 536870912 #cache分区
part = tvcustomer /tvcustomer ext4 haierdir.tar.bz2 16777216 #厂商分区
part = res /res ext4 otares.tar.bz2 16777216 #recovery分区

分区定义标识符 挂载点 文件系统 文件内容 分区大小
分区大小,单位为b(字节)

如果需要修改分区大小
请先求出总分区大小

891289600(OLD/system)+2411724800(OLD/data)+536870912(/cache)+16777216(/cust)+16777216(/recovery)=3873439744(bytes)

比如我想修改/system分区为512MB,然后把多出来的空间分给/data分区
512MB转换为bytes为536870912,那就先把差求出来

891289600(原分区大小)-536870912(想修改的大小)=354418688(bytes)

接下来把得到的空间修改给/data分区

2411724800(原分区大小)+354418688(/system分区中提取的大小)=2766143488(bytes)

好,现在差不多修改完成了,为了保险,校验一下

536870912(NEW/system)+2766143488(NEW/data)+536870912(/cache)+16777216(/cust)+16777216(/recovery)=3873439744(bytes)

好,修改rt298x分区的教程到此结束!

start_customer=y
# Package Information
company="" #公司名
description="" #介绍
modelname="" #型号
version="" #版本号
releaseDate="" #编译时间
signature="" #签名
kernel_version="" #内核版本
audio_version="" #音频解码器固件版本
video_version="" #屏幕固件版本
kcpu_version="" #节能CPU固件版本
# Package Configuration
bootcode=y #是否更新Bootloader,y/n
factory=y #是否更新Factory区(屏幕固件/校准数据),y/n
customer_delay=0 #未知
kill_000=y #更新时杀掉0进程,y/n
update_etc=y #更新其他,y/n
install_avfile_count=1 #安装屏幕固件定义符,0/1
install_avfile_audio_size=1536 #音频固件大小
install_avfile_video_size=2560 #屏幕固件大小
reboot_delay=5 #重启延迟,给按键进入升级模式提供的时间
ifcmd0 = "cd ../../;cp -rpf tmp/install_factory/* tmp/factory/;chmod 777 tmp/factory;" #factory分区安装指令
ifcmd1 = "rm -rf /tmp/factory/recovery;" #删除tmp的recovery Linux程序
secure_boot=0 #安全启动选项
fw = linuxKernel package4/vmlinux.develop.android.kk.KKTV_K43.emmc.bin 0x108000 #Linux内核闪存位置
fw = audioKernel package4/bluecore.audio 0x81700000 #音频解码器固件闪存位置
fw = videoKernel package4/video_firmware.bin 0x81a00000 #屏幕固件闪存位置
fw = ecpuKernel package4/ecpu.bin 0x00004000 #节能处理器固件闪存位置
fw = audioFile package4/bootfile.audio 0xdeaddead #第一次开机启动音乐闪存位置
fw = videoFile package4/bootfile.image 0xdeaddead #开机第一屏闪存位置

以下是分区配置,下文详细介绍
part_targetM=4096
part = system /system ext4 package4/system.emmc.tar 891289600
part = data /data ext4 package4/data.tar.bz2 2411724800
part = cache /cache ext4 null 536870912
part = tvcustomer /tvcustomer ext4 haierdir.tar.bz2 16777216
part = res /res ext4 otares.tar.bz2 16777216

上文说道,我们解包成功了
RTDPkg_InsidePackage
RTDPkg_InsidePackage4
接下来说下更新包内各个文件的作用
/0.vmlinux.rescue.bin 救援用Linux核心,zImage格式
/config.txt 分区以及产品信息(如需修改,请打开此文)
/customer 未知文件
/font.ttf 刷机进度条&状态指示的字体
/FW_VERSION 软件版本
/install_a 整个刷机包的解包程序
/mm 未知文件
/otares.tar.bz2 Recovery资源
/postprocess.sh 为/data分区设定各种权限的sh脚本
/package4/bluecore.audio 音频解码器固件
/package4/bootfile.audio 首次开机的启动音乐 mp3-layer2格式
/package4/bootfile.image 开机第一屏 24Bit色PNG
/package4/bootloader.tar 顾名思义,引导加载程序
/package4/data.tar.bz2 /data分区,如需预载入APK,请重新打包这个bz2
/package4/ecpu.bin 嵌入式控制器固件
/package4/factory.tar 各种工厂校准文件和屏幕固件包
/package4/system.emmc.tar /system分区,需要保留权限打包!
/package4/video_firmware.bin 屏幕固件
/package4/vmlinux.develop.android.kk.KKTV_K43.emmc.bin Android内核,非标准打包方法,不要尝试解包修改后打包刷入!

家里有一台YunOS(其实是Android 4.4.2)的KKTV K43,Yunos这个坑,相信众人皆知,我搞到了固件包,一开始发现是个奇怪的IMG,用了十六进制编辑器和Binwalk。最后成功分析出来解包的方法。
准备:
1.Linux
2.固件包

分析过程有空再写,本文仅为解包方法
步骤:
1.重命名文件名中的.img扩展名为.tar
修改前:RTDPkg_OrigName
修改后:RTDPkg_NewName
2.打开终端,输入tar -pxvf 文件名.tar
RTDPkg_TerminalExtract

tar命令分析 p:保留源权限 x:解压 v:显示解压过程 f:使用档名

3.接下来你就得到了一堆文件+一个文件夹
RTDPkg_InsidePackage
package4文件夹内内容:
RTDPkg_InsidePackage4
具体对于各个文件的详细分析,请看额外文章
4.接下来我们打开package4文件夹
发现了一个叫system.emmc.tar的文件
RTDPkg_SystemFile
我们先拿归档管理器看一下文件内容
RTDPkg_SystemTarInside
果然是system分区!
我们继续使用tar -pxvf system.emmc.tar这个命令来解压它
接着就是正常安卓刷机包的修改方法了,这个机子的Bootloader并不验证签名(不排除部分其他OEM会验证),所以可以随意修改
RT299x/RT298x都是这个解包方法,不过注意RT299x容易刷死,而且需要用走VGA口的串口线缆才可以救砖,RT298x则因为有SOS模式不容易刷死,我曾经搞乱分区都没死。(当然如果你真的作死搞砖了RT298x,把刷机包文件名改成allupgrade_2984_sos.img再放入小于4GB的FAT32的U盘,插入电视,不需任何操作即可自动进行USB Update)