ROM Android: Melihat Partisi ROM

From OnnoWiki
Revision as of 19:25, 29 December 2014 by Onnowpurbo (talk | contribs)
Jump to navigation Jump to search

How To Gather Information About Partition Layouts Ameer Dawood edited this page on Jun 2, 2013 · 7 revisions


Clone this wiki locally

   Note: I have obtained the below information with great effort and difficulty. I value this information very much and thus am sharing this for other like minded developers to find.

Introduction

All Android devices use separate partitions for storing different parts of the entire system. The boot partition consists of the linux kernel, recovery partition contains the recovery binary, system partition contains the device's ROM, data partition contains all user data and cache partition contains some cache data including dalvik-cache. Partition layout files are used to determine where each specific partition, used for Android's internal tools and provide the data to tools like Online Nandroid. The linux kernel reveals this layout in different places at times, but not always. In some instances, if this layout is not revealed, Online Nandroid uses it's own manually created partition layout file at /system/partitionlayout4nandroid.

Contoh (/proc/partitions di Google Nexus 4):

major minor #blocks name
179  0 15388672 mmcblk0
179  1    65536 mmcblk0p1
179  2      512 mmcblk0p2
179  3      512 mmcblk0p3
179  4     2048 mmcblk0p4
179  5      512 mmcblk0p5
179  6    22528 mmcblk0p6
179  7    22528 mmcblk0p7
179  8      780 mmcblk0p8
179  9      780 mmcblk0p9
179 10      780 mmcblk0p10
179 11      512 mmcblk0p11
179 12      512 mmcblk0p12
179 13      512 mmcblk0p13
179 14     2048 mmcblk0p14
179 15      512 mmcblk0p15
179 16      512 mmcblk0p16
179 17      512 mmcblk0p17
179 18      512 mmcblk0p18
179 19    16384 mmcblk0p19
179 20    16384 mmcblk0p20
179 21   860160 mmcblk0p21
179 22   573440 mmcblk0p22
179 23 13798400 mmcblk0p23
179 24      512 mmcblk0p24
179 25      495 mmcblk0p25


Contoh (/proc/partitions di LG Optimus GPro dengan ROM Xiaomi)

major minor  #blocks  name

 179        0   30535680 mmcblk0
 179        1      65536 mmcblk0p1
 179        2        512 mmcblk0p2
 179        3        512 mmcblk0p3
 179        4       2048 mmcblk0p4
 179        5        512 mmcblk0p5
 179        6        512 mmcblk0p6
 179        7      24576 mmcblk0p7
 179        8        512 mmcblk0p8
 179        9          1 mmcblk0p9
 179       10       3072 mmcblk0p10
 179       11       3072 mmcblk0p11
 179       12        780 mmcblk0p12
 179       13        780 mmcblk0p13
 179       14        780 mmcblk0p14
 179       15       8192 mmcblk0p15
 179       16       8192 mmcblk0p16
 179       17          8 mmcblk0p17
 179       18      16384 mmcblk0p18
 179       19      16384 mmcblk0p19
 179       20       8192 mmcblk0p20
 179       21        512 mmcblk0p21
 179       22        512 mmcblk0p22
 179       23    2621440 mmcblk0p23
 179       24    1048576 mmcblk0p24
 179       25   24862720 mmcblk0p25
 179       26       8192 mmcblk0p26
 179       27     262144 mmcblk0p27
 179       28      24576 mmcblk0p28
 179       29       3072 mmcblk0p29
 179       30          8 mmcblk0p30
 179       31      32768 mmcblk0p31
 259        0      32768 mmcblk0p32
 259        1        512 mmcblk0p33
 259        2        512 mmcblk0p34
 259        3      16384 mmcblk0p35
 259        4          8 mmcblk0p36
 259        5          8 mmcblk0p37
 259        6      16384 mmcblk0p38
 259        7    1412063 mmcblk0p39
 179       32    3929088 mmcblk1
 179       33    3928064 mmcblk1p1


Menggunakan perintah

ls -l /dev/block/platform/msm_sdcc.1/by-name/

Kita dapat mengetahui fungsi dari masing-masing partisi, di LG Optimus GPro

lrwxrwxrwx root     root              1970-01-01 20:27 DDR -> /dev/block/mmcblk0p30
lrwxrwxrwx root     root              1970-01-01 20:27 aboot -> /dev/block/mmcblk0p5
lrwxrwxrwx root     root              1970-01-01 20:27 bnr -> /dev/block/mmcblk0p20
lrwxrwxrwx root     root              1970-01-01 20:27 boot -> /dev/block/mmcblk0p7
lrwxrwxrwx root     root              1970-01-01 20:27 cache -> /dev/block/mmcblk0p24
lrwxrwxrwx root     root              1970-01-01 20:27 drm -> /dev/block/mmcblk0p15
lrwxrwxrwx root     root              1970-01-01 20:27 eksst -> /dev/block/mmcblk0p22
lrwxrwxrwx root     root              1970-01-01 20:27 encrypt -> /dev/block/mmcblk0p21
lrwxrwxrwx root     root              1970-01-01 20:27 factory -> /dev/block/mmcblk0p19
lrwxrwxrwx root     root              1970-01-01 20:27 fota -> /dev/block/mmcblk0p31
lrwxrwxrwx root     root              1970-01-01 20:27 fsg -> /dev/block/mmcblk0p29
lrwxrwxrwx root     root              1970-01-01 20:27 grow -> /dev/block/mmcblk0p39 
lrwxrwxrwx root     root              1970-01-01 20:27 lcdlog -> /dev/block/mmcblk0p37
lrwxrwxrwx root     root              1970-01-01 20:27 m9kefs1 -> /dev/block/mmcblk0p12
lrwxrwxrwx root     root              1970-01-01 20:27 m9kefs2 -> /dev/block/mmcblk0p13
lrwxrwxrwx root     root              1970-01-01 20:27 m9kefs3 -> /dev/block/mmcblk0p14
lrwxrwxrwx root     root              1970-01-01 20:27 misc -> /dev/block/mmcblk0p18
lrwxrwxrwx root     root              1970-01-01 20:27 modem -> /dev/block/mmcblk0p1
lrwxrwxrwx root     root              1970-01-01 20:27 modemst1 -> /dev/block/mmcblk0p10
lrwxrwxrwx root     root              1970-01-01 20:27 modemst2 -> /dev/block/mmcblk0p11
lrwxrwxrwx root     root              1970-01-01 20:27 mpt -> /dev/block/mmcblk0p32
lrwxrwxrwx root     root              1970-01-01 20:27 pad -> /dev/block/mmcblk0p9
lrwxrwxrwx root     root              1970-01-01 20:27 persist -> /dev/block/mmcblk0p26
lrwxrwxrwx root     root              1970-01-01 20:27 rct -> /dev/block/mmcblk0p36
lrwxrwxrwx root     root              1970-01-01 20:27 recovery -> /dev/block/mmcblk0p28
lrwxrwxrwx root     root              1970-01-01 20:27 reserved -> /dev/block/mmcblk0p38
lrwxrwxrwx root     root              1970-01-01 20:27 rpm -> /dev/block/mmcblk0p6
lrwxrwxrwx root     root              1970-01-01 20:27 rpmbak -> /dev/block/mmcblk0p34
lrwxrwxrwx root     root              1970-01-01 20:27 sbl1 -> /dev/block/mmcblk0p2
lrwxrwxrwx root     root              1970-01-01 20:27 sbl2 -> /dev/block/mmcblk0p3
lrwxrwxrwx root     root              1970-01-01 20:27 sbl3 -> /dev/block/mmcblk0p4
lrwxrwxrwx root     root              1970-01-01 20:27 sns -> /dev/block/mmcblk0p16
lrwxrwxrwx root     root              1970-01-01 20:27 ssd -> /dev/block/mmcblk0p17
lrwxrwxrwx root     root              1970-01-01 20:27 system -> /dev/block/mmcblk0p23
lrwxrwxrwx root     root              1970-01-01 20:27 tombstones -> /dev/block/mmcblk0p27
lrwxrwxrwx root     root              1970-01-01 20:27 tz -> /dev/block/mmcblk0p8
lrwxrwxrwx root     root              1970-01-01 20:27 tzbak -> /dev/block/mmcblk0p33
lrwxrwxrwx root     root              1970-01-01 20:27 userdata -> /dev/block/mmcblk0p25
lrwxrwxrwx root     root              1970-01-01 20:27 ve -> /dev/block/mmcblk0p35


MTD Based Devices

MTD (Memory Technology Device) based devices have /proc/mtd populated with the partition layout, by the linux kernel. Thus, no specific partition layout file is required by Online Nandroid, on MTD based devices.

Example (/proc/mtd on a Sony Ericsson Xperia Pro):

dev:    size   erasesize  name
mtd0: 19000000 00020000 "system"
mtd1: 00600000 00020000 "appslog"
mtd2: 06580000 00020000 "cache"
mtd3: 1a400000 00020000 "userdata"
mtd4: 00c80000 00020000 "boot"

Note: Some buggy kernels may not populate /proc/mtd properly. In most such cases, the underlying MTD partitions would also not be revealed by the kernel, thus proving a workaround partition layout virtually useless.


EMMC Based Devices

Few EMMC (Embedded MultiMedia Card) based devices have /proc/emmc populated with the partition layout, by the linux kernel. In this case, no specific patch file is required by Online Nandroid. However, this practice is not followed in later devices. Thus, these require patch files. A partition layout file is very similar to /proc/mtd or /proc/emmc generated by linux kernel. It follows the same format and the same header.

Gathering information to produce a partition layout file is trivial. It is sometimes revealed somewhere under the /sys/devices by linux kernel. But this is not always the case. ROM and kernel developers, would, most of the time, figure this out and share this information in development threads on forums like XDA. Other times, it is easiest to obtain a copy of recovery.fstab used by stock, CWM, TWRP and other recoveries. This file is present in the recovery ramdisk and thus can be obtained from someone who has physical access to the device. Alternatively, this file is available at device repositories on Github and other places. A simple search on Google for android_device_oem_device, where oem is the name of device manufacturer such as samsung, sony, motorola, lge..., and device is the code name / technical name of the device such as mako for Google Nexus 4 and m0 for Samsung Galaxy S III. In addition a PIT file or a scatter file for the specific device can also be used for deducing the partition layout.

Example (Partition Layout file on an HTC Sensation XL):

dev:       size      erasesize  name
mmcblk0p1: 0001f4 000000 "unknown"
mmcblk0p2: 000040 000000 "unknown"
mmcblk0p3: 001194 000000 "unknown"
mmcblk0p4: 000001 000000 "unknown"
mmcblk0p5: 007530 000000 "unknown"
mmcblk0p6: 0030d4 000000 "unknown"
mmcblk0p7: 000800 000000 "unknown"
mmcblk0p8: 000c00 000000 "unknown"
mmcblk0p9: 000800 000000 "unknown"
mmcblk0p10: 000400 000000 "unknown"
mmcblk0p11: 000400 000000 "unknown"
mmcblk0p12: 00222f 000000 "unknown"
mmcblk0p13: 000c00 000000 "unknown"
mmcblk0p14: 000c00 000000 "unknown"
mmcblk0p15: 000400 000000 "unknown"
mmcblk0p16: 0022fd 000000 "unknown"
mmcblk0p17: 000100 000000 "unknown"
mmcblk0p18: 000400 000000 "unknown"
mmcblk0p19: 000800 000000 "unknown"
mmcblk0p20: 000500 000000 "unknown"
mmcblk0p21: 0021fd 000000 "recovery"
mmcblk0p22: 001000 000000 "boot"
mmcblk0p23: 000100 000000 "unknown"
mmcblk0p24: 007bff 000000 "unknown"
mmcblk0p25: 0fffff 000000 "unknown"
mmcblk0p26: 000c00 000000 "unknown"
mmcblk0p27: 000c00 000000 "unknown"
mmcblk0p28: 0067fe 000000 "misc"
mmcblk0p29: 407fff 000000 "userdata"
mmcblk0p30: 08ffff 000000 "cache"
mmcblk0p31: 007eff 000000 "unknown"
mmcblk0p32: 000103 000000 "unknown"
mmcblk0p33: 8e4ffc 000000 "emmc"


MTK Based Devices

On devices based on MTK (MediaTek) chipsets, a file at /proc/dumchar_info is populated with the partition layout, by the linux kernel. This file, however is not similar to /proc/mtd, /proc/emmc and partition layout files used by Online Nandroid. Since MTK devices use the uboot mechanism, partitions including boot and recovery, are not revealed as separate partitions, but rather accessed sequencially by size and start parameters. The dumchar_info file has this size and start parameters specified in it. This file has some other major differences in partition naming such as the boot partition is named bootimg instead of boot, data partition is named usrdata instead of userdata, system partition is named android instead of system and internal sd card is named fat instead emmc. Online Nandroid (since v8.0) has built-in support for MTK based devices, thus does not require separate partition layout files on MTK based devices.

Example (/proc/dumchar_info on a Star N9770 Dual Core - MT6577):

Part_Name    Size               StartAddr         Type   MapTo
preloader    0x0000000000040000 0x0000000000000000   2   /dev/misc-sd
dsp_bl       0x00000000005c0000 0x0000000000040000   2   /dev/misc-sd
mbr          0x0000000000004000 0x0000000000000000   2   /dev/block/mmcblk0
ebr1         0x0000000000004000 0x0000000000004000   2   /dev/block/mmcblk0p1
pmt          0x0000000000400000 0x0000000000008000   2   /dev/block/mmcblk0
nvram        0x0000000000500000 0x0000000000408000   2   /dev/block/mmcblk0
seccfg       0x0000000000020000 0x0000000000908000   2   /dev/block/mmcblk0
uboot        0x0000000000060000 0x0000000000928000   2   /dev/block/mmcblk0
bootimg      0x0000000000600000 0x0000000000988000   2   /dev/block/mmcblk0
recovery     0x0000000000600000 0x0000000000f88000   2   /dev/block/mmcblk0
sec_ro       0x0000000000600000 0x0000000001588000   2   /dev/block/mmcblk0p2
misc         0x0000000000060000 0x0000000001b88000   2   /dev/block/mmcblk0
logo         0x0000000000300000 0x0000000001be8000   2   /dev/block/mmcblk0
expdb        0x0000000000200000 0x0000000001ee8000   2   /dev/block/mmcblk0
android      0x0000000020100000 0x00000000020e8000   2   /dev/block/mmcblk0p3
cache        0x0000000020100000 0x00000000221e8000   2   /dev/block/mmcblk0p4
usrdata      0x0000000020100000 0x00000000422e8000   2   /dev/block/mmcblk0p5
fat          0x00000000854f8000 0x00000000623e8000   2   /dev/block/mmcblk0p6
bmtpool      0x0000000001500000 0x00000000ff9f00a8   2   /dev/block/mmcblk0
Part_Name:Partition name you should open;
Size:size of partition
StartAddr:Start Address of partition;
Type:Type of partition(MTD=1,EMMC=2)
MapTo:actual device you operate


Contoh /proc/dumchar_info dari Evercross Y2 A80A

Part_Name	Size	StartAddr	Type	MapTo	Region
preloader    0x0000000000040000   0x0000000000000000   2   /dev/misc-sd     BOOT_1
mbr          0x0000000000080000   0x0000000000000000   2   /dev/block/mmcblk0     USER
ebr1         0x0000000000080000   0x0000000000080000   2   /dev/block/mmcblk0p1   USER
pro_info     0x0000000000300000   0x0000000000100000   2   /dev/block/mmcblk0     USER
nvram        0x0000000000500000   0x0000000000400000   2   /dev/block/mmcblk0     USER
protect_f    0x0000000000a00000   0x0000000000900000   2   /dev/block/mmcblk0p2   USER
protect_s    0x0000000000a00000   0x0000000001300000   2   /dev/block/mmcblk0p3   USER
seccfg       0x0000000000040000   0x0000000001d00000   2   /dev/block/mmcblk0     USER
uboot        0x0000000000060000   0x0000000001d40000   2   /dev/block/mmcblk0     USER
bootimg      0x0000000000a00000   0x0000000001da0000   2   /dev/block/mmcblk0     USER
recovery     0x0000000000a00000   0x00000000027a0000   2   /dev/block/mmcblk0     USER
sec_ro       0x0000000000600000   0x00000000031a0000   2   /dev/block/mmcblk0p4   USER
misc         0x0000000000080000   0x00000000037a0000   2   /dev/block/mmcblk0     USER
logo         0x0000000000800000   0x0000000003820000   2   /dev/block/mmcblk0     USER
ebr2         0x0000000000080000   0x0000000004020000   2   /dev/block/mmcblk0     USER
expdb        0x0000000000f60000   0x00000000040a0000   2   /dev/block/mmcblk0     USER
android      0x0000000032000000   0x0000000005000000   2   /dev/block/mmcblk0p5   USER
cache        0x0000000008000000   0x0000000037000000   2   /dev/block/mmcblk0p6   USER
usrdata      0x00000001c0000000   0x000000003f000000   2   /dev/block/mmcblk0p7   USER
fat          0x00000001a3900000   0x00000001ff000000   2   /dev/block/mmcblk0p8   USER
bmtpool      0x0000000001500000   0x00000000ffff00a8   2   /dev/block/mmcblk0     USER
Part_Name:Partition name you should open;
Size:size of partition
StartAddr:Start Address of partition;
Type:Type of partition(MTD=1,EMMC=2)
MapTo:actual device you operate


Backup Partisi ke SDCARD

Di Evercoss A80A

Backup EBR1

dd if=/dev/block/mmcblk0p1 of=/sdcard/ebr1.img 

Backup android (atau di kenal juga sebagai system)

dd if=/dev/block/mmcblk0p5 of=/sdcard/android.img

Backup cache

dd if=/dev/block/mmcblk0p6 of=/sdcard/cache.img

Referensi