MTK Android系统卡刷Update.zip刷机包制作
教程
人力资源管理pdf成真迷上我教程下载西门子数控教程protel99se入门教程fi6130z安装使用教程
by我不是春哥@移动叔叔
2010.12.31-2011.1.1 Ver1.0
一 基础知识和工具准备
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
已经绕过签名执行安装脚本了。
二 工作环境的建立
1 建立一个自己的工作目录,如 ~/mobile/diy/g6i/diyrom, ~在linux系统中代
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
用户自己
的目录。比如你的用户名是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安装脚本
参考代码如下:
show_progress 0.1 0
#modify by m44 for g6i 2.2
format SYSTEM:
format CACHE:
copy_dir PACKAGE:system SYSTEM:
copy_dir PACKAGE:data SYSTEM:
symlink toolbox SYSTEM:bin/cat
symlink toolbox SYSTEM:bin/chmod
symlink toolbox SYSTEM:bin/chown
symlink toolbox SYSTEM:bin/cmp
symlink toolbox SYSTEM:bin/date
symlink toolbox SYSTEM:bin/dd
symlink toolbox SYSTEM:bin/df
symlink toolbox SYSTEM:bin/dmesg
symlink toolbox SYSTEM:bin/fb2bmp
symlink toolbox SYSTEM:bin/getevent
symlink toolbox SYSTEM:bin/getprop
symlink toolbox SYSTEM:bin/hd
symlink toolbox SYSTEM:bin/id
symlink toolbox SYSTEM:bin/ifconfig
symlink toolbox SYSTEM:bin/iftop
symlink toolbox SYSTEM:bin/insmod
symlink toolbox SYSTEM:bin/ioctl
symlink toolbox SYSTEM:bin/ionice
symlink toolbox SYSTEM:bin/kill
symlink toolbox SYSTEM:bin/ln
symlink toolbox SYSTEM:bin/log
symlink toolbox SYSTEM:bin/ls
symlink toolbox SYSTEM:bin/lsmod
symlink toolbox SYSTEM:bin/mkdir
symlink toolbox SYSTEM:bin/mount
symlink toolbox SYSTEM:bin/mv
symlink toolbox SYSTEM:bin/nandread
symlink toolbox SYSTEM:bin/netstat
symlink toolbox SYSTEM:bin/newfs_msdos
symlink toolbox SYSTEM:bin/notify
symlink toolbox SYSTEM:bin/printenv
symlink toolbox SYSTEM:bin/ps
symlink toolbox SYSTEM:bin/reboot
symlink toolbox SYSTEM:bin/renice
symlink toolbox SYSTEM:bin/rm
symlink toolbox SYSTEM:bin/rmdir
symlink toolbox SYSTEM:bin/rmmod
symlink toolbox SYSTEM:bin/route
symlink toolbox SYSTEM:bin/schedtop
symlink toolbox SYSTEM:bin/sendevent
symlink toolbox SYSTEM:bin/setconsole
symlink toolbox SYSTEM:bin/setprop
symlink toolbox SYSTEM:bin/sleep
symlink toolbox SYSTEM:bin/smd
symlink toolbox SYSTEM:bin/start
symlink toolbox SYSTEM:bin/stop
symlink toolbox SYSTEM:bin/sync
symlink toolbox SYSTEM:bin/top
symlink toolbox SYSTEM:bin/umount
symlink toolbox SYSTEM:bin/vmstat
symlink toolbox SYSTEM:bin/watchprops
symlink toolbox SYSTEM:bin/wipe
set_perm_recursive 0 0 0755 0644 SYSTEM:
set_perm_recursive 0 2000 0755 0755 SYSTEM:bin
set_perm 0 3003 02755 SYSTEM:bin/netcfg
set_perm 0 3004 02755 SYSTEM:bin/ping
set_perm 0 2000 06755 SYSTEM:bin/reboot
set_perm_recursive 0 2000 0755 0755 SYSTEM:etc/ppp
set_perm 1002 1002 0440 SYSTEM:etc/dbus.conf
set_perm 1014 2000 0550 SYSTEM:etc/dhcpcd/dhcpcd-run-hooks
set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh
set_perm 0 0 04755 SYSTEM:xbin/su
symlink /system/xbin/su SYSTEM:bin/su
show_progress 0.1 10
show_progress 0.2 0
format BOOT:
write_raw_image PACKAGE:boot.img BOOT:
show_progress 0.2 10
会不会很迷茫,那么多命令,下面我们来总结一下脚本的语法
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
[]
Copy the contents of to . The original contents of are
preserved unless something in overwrote them.
Ex: copy_dir PACKAGE:system SYSTEM:
2 format
Syntax: format
Format a partiti0n
Ex: format SYSTEM:, will format entire /system . Note: formatting erases data
irreversibly.
3 delete
Syntax: delete [... ]
Delete file.
EX: delete SYSTEM:app/Calculator.apk, will delete Calculator.apk from system/app
directory.
4 delete_recursive
Syntax: delete_recursive [... ]
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 [ ...]
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 [... ]
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 [... ]
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
Use of the on-screen progress meter for the next operation, automatically advancing the
meter over seconds (or more rapidly if the actual rate of progress can be
determined).
Ex: show_progress 0.1 0
9 symlink
Syntax: symlink
Create a symlink (like ʻln-sʼ). The is in root:path format, but 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卡刷机了
四 刷机
1 刷移动叔叔的中文Recovery,现在的版本是0.9.1,进入Recovery模式
2 使用第一项U盘模式,把做好的my-
update.signed.zip通过usb模式复制到sd卡上
3 选择从SD卡用?ZIP包刷机
4 等待几分钟,叔叔的Recovery会自动跳过签名
执行刷机脚本的
5 用Recovery菜单的“重启手机”重启,这里要注
意,如果不用这个菜单重启而是用别的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
手机
重启后还是Recovery模式
6 刷机完成,因为只格式化了System分区,
DATA分区没有动,所以用户数据没有丢失包括
之前安装的软件都没丢