-
Notifications
You must be signed in to change notification settings - Fork 59
/
README
executable file
·105 lines (76 loc) · 3.88 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
= Galaxy S2 Kernel Packing/Repacking Tools =
Use cygwin you must install lzop and OpenSSL binary.
arm-linux-androideabi-4.4.3-windows.tar.gz compiler: http://d-h.st/Tqj
To unpack:
$ ./unpack.sh [original_zImage] [unpack_output_dir]
Modify files in unpack output dir as necessary.
To repack:
a) Generate ramfs output.cpio from unpack output dir:
$ ./gen_initramfs.sh -o [output.cpio] -u 0 -g 0 [unpack_output_dir]
b) Ensure your toolchain binaries are on your path
c) Set COMPILER_LIB environment variable to your toolchain gcc lib directory
d) Repack ramfs output.cpio and kernel from original zImage to new zImage
$ ./repack.sh [original_zImage] [output.cpio] [new_zImage]
e) Resize new zImage to size of original zImage
$ dd if=[new_zImage] of=[new_zImage_resized] bs=[original_zImage_size] conv=sync
= Original Documentation =
Please edit repack.sh:
# you should point where your cross-compiler is
COMPILER=/home/xiaolu/bin/android-toolchain-eabi/bin/arm-eabi-
COMPILER_LIB=/home/xiaolu/bin/android-toolchain-eabi/lib/gcc/arm-eabi/4.5.4
Unpack zImage,Usage:
./unpack.sh zImagesy267 sy267
Repack zImage,Usage:
./repack.sh zImagesy267 initramfs.cpio new_zImage
or
./repack.sh zImagesy267 sy267 new_zImage
Padding sufile to new_zImage offset=7000000,Example:
./repack.sh zImagesm189 sm189.cpio new_zImage su
post-int.sh(init.rc services):
dd if=/dev/block/mmcblk0p5 of=/system/bin/su skip=7000000 seek=0 bs=1 count=26336
dd if=/dev/block/mmcblk0p5 of=/system/app/Superuser.apk skip=7026336 seek=0 bs=1 count=196640
Use tar.xz In the end of the new_zImage:
./repack.sh zImagesy262 initramfs.cpio new_zImage payload
how to use,pls read initramfs-sample/sbin/script/post-init.sh & recovery.sh
recovery.tar.xz and boot.tar.xz in resources directory,you can customize.
In recovery.sh:
cd /
eval $(read_boot_headers /dev/block/mmcblk0p5)
load_offset=$recovery_offset
load_len=$recovery_len
dd bs=512 if=/dev/block/mmcblk0p5 skip=$load_offset count=$load_len | xzcat | tar x
Custom zImage compression type:
./repack.sh zImagesy267 initramfs.cpio new_zImage gzip
or
./repack.sh zImagesy267 initramfs.cpio new_zImage payload gzip
中文版:
修改repack.sh开头的编译器路径和库文件路径,改为你自己的:
COMPILER=/home/xiaolu/bin/android-toolchain-eabi/bin/arm-eabi-
COMPILER_LIB=/home/xiaolu/bin/android-toolchain-eabi/lib/gcc/arm-eabi/4.5.4
解包zImage,例如:
./unpack.sh zImagesy267 sy267
重新打包编译zImage:
格式:
./repack.sh 原始zImage initramfs(目录或者cpio文件) 新zImage名
例如:
./repack.sh zImagesy267 initramfs.cpio new_zImage
or
./repack.sh zImagesy267 sy267 new_zImage
对于超出大小的initramfs,可以使用下边两种办法来打包:
1.把2进制的su文件和Superuser.apk文件放在新zImage的7000000字节偏移处,命令:
./repack.sh zImagesm189 sm189.cpio new_zImage su
如何在启动的时候调用su和Superuser.apk,请在root脚本里添加如下:
dd if=/dev/block/mmcblk0p5 of=/system/bin/su skip=7000000 seek=0 bs=1 count=26336
dd if=/dev/block/mmcblk0p5 of=/system/app/Superuser.apk skip=7026336 seek=0 bs=1 count=196640
2.使用把一些大文件打包成tar.xz放在zImage末尾,启动需要用到的时候读取压缩包偏移量,用DD复制出来解压到rootfs相应位置。
./repack.sh zImagesy262 initramfs.cpio new_zImage payload
上边的命令是打包的同时把recovery.tar.xz和boot.tar.xz放在zImage末尾,下边说一下如何使用,以启动recovery(recovery.sh)为例子:
cd /
eval $(read_boot_headers /dev/block/mmcblk0p5)
load_offset=$recovery_offset
load_len=$recovery_len
dd bs=512 if=/dev/block/mmcblk0p5 skip=$load_offset count=$load_len | xzcat | tar x
自定义zImage压缩类型:
./repack.sh zImagesy267 initramfs.cpio new_zImage gzip
或者
./repack.sh zImagesy267 initramfs.cpio new_zImage payload gzip