Enter the machine using adb shell
Run cat /proc/partitions
# Path Purpose Size
0 /dev/block/mmcblk0 7761920
1 /dev/block/mmcblk0p1 data 6085631
2 /dev/block/mmcblk0p2 bootloader 16384
3 /dev/block/mmcblk0p3 1
5 /dev/block/mmcblk0p5 uboot 16384
6 /dev/block/mmcblk0p6 kernel 16384
7 /dev/block/mmcblk0p7 system 786432
8 /dev/block/mmcblk0p8 misc 16384
9 /dev/block/mmcblk0p9 recovery 32768
10 /dev/block/mmcblk0p10 sysrecovery 16384
11 /dev/block/mmcblk0p11 private 16384
12 /dev/block/mmcblk0p12 Reserve0 16384
13 /dev/block/mmcblk0p13 klog 32768
14 /dev/block/mmcblk0p14 Reserve1 16384
15 /dev/block/mmcblk0p15 Reserve2 655360
Dump the partition to a file using dd
dd if=/dev/block/mmcblk0p6 of=/data/kernel_ramfs.img
Extract it to your linux system adb pull /data/kernel_ramfs.img
Run sudo apt-get install abootimg
Run abootimg -i kernel_ramfs.img
. It need to show
Android Boot Image Info:
* file name = kernel_ramfs.img
* image size = 16777216 bytes (16.00 MB)
page size = 2048 bytes
* Boot Name = ""
* kernel size = 9797076 bytes (9.34 MB)
ramdisk size = 2017625 bytes (1.92 MB)
* load addresses:
kernel: 0x40008000
ramdisk: 0x41000000
tags: 0x40000100
* empty cmdline
* id = 0x7c37c0d4 0xcefde745 0xe81b85ba 0xf05275ba 0xbe7de0ad 0x00000000 0x00000000 0x00000000
That means you dump the correct kernel+ramfs
abootimg -x kernel_ramfs.img
It will extract zImage
and also initrd.img
mkdir initrd
cd initrd
cat ../initrd.img | gunzip | cpio -vid
Modify the ramdisk accordingly (e.g. you modify init.rc or add another additonal files) Then repack accordingly
cd initrd
find . | cpio --create --format='newc' | gzip > ../myinitrd.img
abootimg --create myboot.img -f bootimg.cfg -k zImage -r myinitrd.img
adb push myboot.img /data/myboot.img
adb shell dd if=mybootimg of=/dev/block/mmcblk0p6
Reboot - And pray for the best
I did the same, and yeah, resulting images differ in two places.
In my case old Tolino Tab 7 at address 0x240:
and second at 0x400:
Generated boot image has 0x00 in those places.
Seems like abootimg is not aware about this extra info. Not sure if this is static or some generated content, like checksum etc.
Seems like second is some sort signing key maybe...