设为首页收藏本站

移动叔叔

搜索
查看: 84369|回复: 17

[SS][原创]2011年元旦首发MTK Android系统卡刷Update.zip刷机包制作教程15页PDF文档

  [复制链接]
发表于 2011-1-1 01:53:09 | 显示全部楼层 |阅读模式
应论坛兄弟的要求,2010年最后一天开始写这个教程,一直写到2011年第一天,完成了一个update.zip包从解压到编辑,压缩刷机的一个流程的教程。个人水平有限。难免有错误。兄弟们共同研究吧。

用5个机票竞拍中了t3333a的试玩,太高兴了,有机票的机油看着砸点过来吧,等着可以折腾t3333a了

MTK Android系统卡刷Update.zip刷机包制作教程15页PDF文档
游客,如果您要查看本帖隐藏内容请回复


教程中用到的unyaffs和java签名工具,bulid.sh脚本需要你自己编辑一下路径
游客,如果您要查看本帖隐藏内容请回复


摘录一下pdf里的内容

MTK Android系统卡刷Update.zip刷机包制作教程


by我不是春哥@移动叔叔


2010.12.31-2011.1.1 Ver1.0



a1.jpg

一 基础知识和工具准备
1 linux基础知识,文件目录权限知识
2 官方的ROM,制作卡刷就只需要两个文件boot.img和system.img
 以g6i最新的Android2.2官方ROM为例
官方编号:10HX1_HVGA_AND_V22_V01_101222_COM
-rw-r--r-- 1 spring spring 2.3M 2010-12-22 17:15 boot.img
-rw-r--r-- 1 spring spring  21K 2010-12-22 17:15 logo.bin
-rw-r--r-- 1 spring spring  164 2010-12-22 17:15 MT6516_Android_scatter.txt
-rw-r--r-- 1 spring spring  42K 2010-12-22 17:15 preloader_bird16_a10y.bin
-rw-r--r-- 1 spring spring 317K 2010-12-22 17:15 ramdisk.img
-rw-r--r-- 1 spring spring 551K 2010-12-22 17:15 ramdisk-recovery.img
-rw-r--r-- 1 spring spring 2.6M 2010-12-22 17:15 recovery.img
-rw-r--r-- 1 spring spring  29K 2010-12-22 17:15 secro.img
-rw-r--r-- 1 spring spring 112M 2010-12-22 17:15 system.img
-rw-r--r-- 1 spring spring 124K 2010-12-22 17:15 uboot_bird16_a10y.bin
-rw-r--r-- 1 spring spring 1.5M 2010-12-22 17:15 userdata.img

2.1 其中三个bin文件
-rw-r--r-- 1 spring spring  21K 2010-12-22 17:15 logo.bin
-rw-r--r-- 1 spring spring  42K 2010-12-22 17:15 preloader_bird16_a10y.bin
-rw-r--r-- 1 spring spring 124K 2010-12-22 17:15 uboot_bird16_a10y.bin

是需要通过刷机线才能升级的
2.2 剩下的img文件,Android刷机时用到就五个,这几个img文件都是可以是用MTK官方提供的刷机软件Flash_tool通过usb线直接刷机的
-rw-r--r-- 1 spring spring 2.3M 2010-12-22 17:15 boot.img
-rw-r--r-- 1 spring spring 2.6M 2010-12-22 17:15 recovery.img
-rw-r--r-- 1 spring spring  29K 2010-12-22 17:15 secro.img
-rw-r--r-- 1 spring spring 112M 2010-12-22 17:15 system.img
-rw-r--r-- 1 spring spring 1.5M 2010-12-22 17:15 userdata.img


2.3 这两个镜像其实是boot.img和recovery.img镜像的文件压缩部分,学名ramdisk。需要更加深入研究手机怎么引导的同学可以研究。
-rw-r--r-- 1 spring spring 317K 2010-12-22 17:15 ramdisk.img
-rw-r--r-- 1 spring spring 551K 2010-12-22 17:15 ramdisk-recovery.img

3 yaffs压缩格式解压工具unyaffs,
3.1 yaffs是什么格式?
  yaffs是第一个专门为NAND Flash存储器设计的嵌入式文件系统,适用于大容量的存储设备;并且是在GPL(General Public License)协议下发布的。

4  签名java jar包已经java环境。这个在mtk的机器上可以不用做,移动叔叔的Recovery已经绕过签名执行安装脚本了。

a2.jpg

二 工作环境的建立
1 建立一个自己的工作目录,如 ~/mobile/diy/g6i/diyrom, ~在linux系统中代表用户自己的目录。比如你的用户名是mobileuncle,那么~就代表/home/mobileuncle
2 把unyaffs复制到~/bin目录,这个bin是一个可以执行的目录,里面放一些你自己常用的命令或者脚本,赋予unyaffs可以执行权限chmod 755 ~/bin/unyaffs
3 再在~/mobile/diy/g6i/diyrom目录下建立一个zip目录,将你需要制作的boot.img复制到 ~/mobile/diy/g6i/diyrom/zip目录。
4 在~/mobile/diy/g6i/diyrom/zip/system目录下在建立一个system目录,将你需要制作的system.img复制到 ~/mobile/diy/g6i/diyrom/zip/system目录。
5 进入~/mobile/diy/g6i/diyrom/zip/system目录,执行 unyaffs system.img解开system的文件包
6 删除system.img
spring@ubuntu:~/mobile/diy/g6i/diyrom/zip/system$ unyaffs system.img
end of image
spring@ubuntu:~/mobile/diy/g6i/diyrom/zip/system$ ls -alh
总计 112M
drwxr-xr-x 12 spring spring 4.0K 2010-12-31 06:25 .
drwxr-xr-x  3 spring spring 4.0K 2010-12-31 06:24 ..
drwxr-xr-x  2 spring spring 4.0K 2010-12-31 06:25 app
drwxr-xr-x  2 spring spring 4.0K 2010-12-31 06:25 bin
-rw-r--r--  1 spring spring 3.4K 2010-12-31 06:25 build.prop
drwxr-xr-x  8 spring spring 4.0K 2010-12-31 06:25 etc
drwxr-xr-x  2 spring spring 4.0K 2010-12-31 06:25 fonts
drwxr-xr-x  2 spring spring 4.0K 2010-12-31 06:25 framework
drwxr-xr-x  5 spring spring  12K 2010-12-31 06:25 lib
drwxr-xr-x  4 spring spring 4.0K 2010-12-31 06:25 media
drwxr-xr-x  3 spring spring 4.0K 2010-12-31 06:25 res
-rw-r--r--  1 spring spring 112M 2010-12-31 06:24 system.img
drwxr-xr-x  6 spring spring 4.0K 2010-12-31 06:25 usr
drwxr-xr-x  2 spring spring 4.0K 2010-12-31 06:25 xbin
spring@ubuntu:~/mobile/diy/g6i/diyrom/zip/system$ rm system.img
spring@ubuntu:~/mobile/diy/g6i/diyrom/zip$ ls -al
总计 2352
drwxr-xr-x  3 spring spring    4096 2010-12-31 06:24 .
drwxr-xr-x  3 spring spring    4096 2010-12-31 06:19 ..
-rw-r--r--  1 spring spring 2394112 2010-12-31 06:24 boot.img
drwxr-xr-x 12 spring spring    4096 2010-12-31 06:26 system

7 到这一步update.zip的文件结构已经出来了,zip目录就是我们以后要刷机的目录了。现在就是增加刷机脚本了,在zip目录下建立一个META-INF/com/google/android/目录
mkdir -p META-INF/com/google/android
如图

8 在META-INF/com/google/android/目录下建立update-script脚本,可以从其他已经做好的rom里提取这个脚本来编辑。通过recovery卡刷系统的时候执行的就是这个脚本,做自己的android卡刷rom要做的通常就是编辑这个脚本和增减apk程序,移动叔叔的recovery已经把签名绕过了


三 ROM文件的自定义

 1 APK程序的自定义
  在system/app目录下就是ROM默认自带的apk应用程序,我们可以根据自己的需求来精简和添加我们的apk程序。
2 bin目录的软链删除
  由于我们是从官方的压缩包里提取的系统,在bin目录下有很多可以执行的软链接,用rm命令吧所有软链删除。rm date getevent ln...........
已经删除完事的bin目录
我们可以根据自己的需求来增加脚本或者扩展程序,比如busybox,然后在安装脚本里添加软链

四 update-script安装脚本的编写和修改
update-script是整个update.zip刷机包工作的起点,Recovery程序执行的就是这个脚本。需要我们来做添加一些我们自己的个性化rom安装脚本
参考代码如下:

会不会很迷茫,那么多命令,下面我们来总结一下脚本的语法

1 delete 分区:目标文件路径
   删除文件,如:
   delete DATA:data/com.android.vending
   delete SYSTEM:app/QQ.apk

2 copy_dir PACKAGE:目录 分区:
   从update包内复制文件到手机分区,如:
   copy_dir PACKAGE:system SYSTEM:

3 delete_recursive 分区:子目录路径
   删除目录,如:
   delete_recursive DATA:dalvik-cache

4 format 分区
   格式化分区,如
 format BOOT:
  
5 show_progreess x.x x  

  显示刷机进度,如
  show_progress 0.2 0

6 symlink 命令 分区:文件
 建立软链 如:
    symlink toolbox SYSTEM:bin/wipe

7 write_raw_image 刷img镜像

8 set_perm 设置权限

google的update-script脚本英文解析 
1 copy_dir
Syntax: copy_dir <src-dir> <dst-dir> [<times**p>]
Copy the contents of <src-dir> to  <dst-dir>. The original contents of <dst-dir> are preserved unless something in <src-dir> overwrote them.
Ex: copy_dir PACKAGE:system SYSTEM:

2 format
Syntax: format <root>
Format a partiti0n
Ex: format SYSTEM:, will format entire /system . Note: formatting erases data irreversibly.

3 delete
Syntax: delete <file1> [... <fileN>]
Delete  file.
EX: delete SYSTEM:app/Calculator.apk, will delete Calculator.apk from system/app directory.

4 delete_recursive
Syntax: delete_recursive <file-or-dir1> [... <file-or-dirN>]
Delete a file or directory with all of it’s contents recursively
Ex: delete_recursive DATA:dalvik-cache, will delete /data/dalvik-cache directory with all of it’s contents

5 run_program
Syntax: run_program <program-file> [<args> ...]
Run an external program included in the update package.
Ex: run_program PACKAGE:install_busybox.sh, will run install_busybox.sh script (shell command) included in the update package.

6 set_perm
Syntax: set_perm <uid> <gid> <mode> <path> [... <pathN>]
Set ownership and permission of single file or entire directory trees, like ‘chmod’, ‘chown’, and ‘chgrp’ all in one
Ex: set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh

7 set_perm_recursive
Syntax: set_perm_recursive <uid> <gid> <dir-mode> <file-moe> <path> [... <pathN>]
Set ownership and permission of a directory with all of it’s contents recursively
Ex: set_perm_recursive 0 0 0755 0644 SYSTEM:app

8 show_progress
Syntax: show_progress <fraction> <duration>
Use of the on-screen progress meter for the next operation, automatically advancing the meter over <duration> seconds (or more rapidly if the actual rate of progress can be determined).
Ex: show_progress 0.1 0

9 symlink
Syntax: symlink <link-target> <link-path>

Create a symlink (like ‘ln-s’). The <link-path> is in root:path format, but <link-target> is
for the target filesystem (and may be relative)

参考知识,MT6516,以g6i为例的分区
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00020000 "preloader"
mtd1: 00300000 00020000 "nvram"
mtd2: 00020000 00020000 "seccnfg"
mtd3: 00060000 00020000 "uboot"
mtd4: 00600000 00020000 "boot"
mtd5: 00600000 00020000 "recovery"
mtd6: 00120000 00020000 "secstatic"
mtd7: 00060000 00020000 "misc"
mtd8: 07800000 00020000 "system"
mtd9: 03c00000 00020000 "cache"
mtd10: 00300000 00020000 "logo"
mtd11: 000a0000 00020000 "expdb"
mtd12: 13740000 00020000 "userdata"


五 打包update.zip
在zip目录使用命令
zip -r ../my-update.zip .
将会把zip目录下的boot.img META-INF system 压缩到diyrom目录

命令结束会在zip的上一级目录生成我们自己制作的刷机包my-update.zip

可以看到有个build.sh,这个是春哥自己做的自动打包和签名脚本。里面是这样的
cd zip
zip -r ../my-update.zip .
cd ..
java -jar ~/tools/testsign.jar my-update.zip m44-update-signed.zip

最后一行是签名,这个没有研究过。可以绕过就是了。到这里刷机包就制作完成了

最后生成的my-update.signed.zip就可以放到sd卡刷机了

a3.jpg

四 刷机
1 刷移动叔叔的中文Recovery,现在的版本是0.9.1,进入Recovery模式


2 使用第一项U盘模式,把做好的my-update.signed.zip通过usb模式复制到sd卡上


3 选择从SD卡用?ZIP包刷机

4 等待几分钟,叔叔的Recovery会自动跳过签名执行刷机脚本的

5 用Recovery菜单的“重启手机”重启,这里要注意,如果不用这个菜单重启而是用别的方法手机重启后还是Recovery模式
6 刷机完成,因为只格式化了System分区,DATA分区没有动,所以用户数据没有丢失包括之前安装的软件都没丢
已有 4 人评分贡献 收起 理由
xeeyee + 10 不知道6575机型适用不。等回复。。
kandy + 5
mythyy + 5 强人~~我想要wm的方法~~
李伟 + 5 辛苦楼主。很感谢楼主的技术贴

总评分: 贡献 + 25   查看全部评分

发表于 2016-1-1 17:49:20 来自手机版 | 显示全部楼层
学习摇色子哦哦哦

 

回复

使用道具 举报

发表于 2016-1-3 16:32:01 | 显示全部楼层
下来看看咯

 

回复

使用道具 举报

发表于 2016-1-7 02:55:35 来自手机版 | 显示全部楼层
学习学习

 

回复

使用道具 举报

发表于 2016-1-28 20:43:12 | 显示全部楼层
感谢分享了,,,,,

 

回复

使用道具 举报

发表于 2016-2-26 18:11:48 | 显示全部楼层
顶顶顶顶顶

 

回复

使用道具 举报

发表于 2016-8-9 20:18:55 | 显示全部楼层
谢谢分享

 

回复

使用道具 举报

发表于 2016-9-26 11:24:27 | 显示全部楼层
急需制作update.zip的教程

 

回复

使用道具 举报

发表于 2016-10-18 23:49:48 | 显示全部楼层
支持!

 

回复

使用道具 举报

发表于 2016-11-18 12:16:54 来自手机版 | 显示全部楼层
看看怎么样

 

回复

使用道具 举报

发表于 2016-11-22 01:44:47 来自手机版 | 显示全部楼层
。。。。。。

 

回复

使用道具 举报

发表于 2016-11-22 01:45:04 来自手机版 | 显示全部楼层
。。。。哈哈哈

 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /1 下一条

© 2008-2024 移动叔叔. 版权所有,专业的网络售后平台 ( 闽ICP备18006692号-3 )

商务合作点击这里给我发消息|Email:service@mobileuncle.com|手机版|Archiver|移动叔叔     

GMT+8, 2024-4-17 03:26 , Processed in 0.203142 second(s), 15 queries , Gzip On, Memcache On.

返回顶部