doc:appunti:hardware:android_partitions
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
doc:appunti:hardware:android_partitions [2020/01/17 07:40] – [/proc/partitions] niccolo | doc:appunti:hardware:android_partitions [2020/01/17 10:24] – [sgdisk] niccolo | ||
---|---|---|---|
Line 8: | Line 8: | ||
**eMMC Flash** combines NAND memory with a built-in controller, that handles most of the things you have to take care of when dealing with NAND flash. | **eMMC Flash** combines NAND memory with a built-in controller, that handles most of the things you have to take care of when dealing with NAND flash. | ||
+ | ===== The Scatter File ===== | ||
===== EMMC Regions ===== | ===== EMMC Regions ===== | ||
- | **EMMC_BOOT_1** and **EMMC_USER** | + | **Embedded Multi-Media Controller** (eMMC) refers to a package consisting of both flash memory and a flash memory controller integrated into a single on-board chip. Device supports several hardware partitions, it is on-board and thus non removable. |
- | ===== cat / | + | |
+ | * **BOOT** - one or more small partitions intended for boot firmware; eMMC 4.3 spec requires 2 boot partitions. | ||
+ | * **RPMB** - Replay Protected Memory Block - intended to store secure data (ie DRM content protection keys); eMMC 4.4 spec adds the requirement of an RPMB partition. | ||
+ | * **USER** - a large partition intended for general storage; eMMC 4.3 spec requires 1 user partition. | ||
+ | |||
+ | Into a **scatter file** you can see references to **region** labeled | ||
+ | ===== Inspecting partitions on the command line ===== | ||
+ | |||
+ | The following commands were executed on a **ZTE Blade A610**, running **Android 6.0**, via the **adb shell** command line. The phone was rooted so that the **su** command was available. | ||
+ | |||
+ | ==== cat / | ||
< | < | ||
Line 49: | Line 60: | ||
</ | </ | ||
- | ===== sgdisk | + | The **mmcblk0** partition is actually the eMMC **USER** region, sized 15388672 blocks (15028 Mb). It is in turn partitioned in 23 partitions. The **boot0**, **boot1** and **rpmb** partitions have a size of 4096 blocks each, i.e. **4194304 (0x400000) bytes**. |
+ | ==== sgdisk ==== | ||
The **/ | The **/ | ||
< | < | ||
- | sgdisk --print / | + | sgdisk --print / |
Disk / | Disk / | ||
Logical sector size: 512 bytes | Logical sector size: 512 bytes | ||
Line 88: | Line 100: | ||
23 30743552 | 23 30743552 | ||
</ | </ | ||
+ | |||
+ | Doing the math, you can see that the 23 partitions existing in **mmcblk0** leave some space: One is at the begin, sized 1024 sectors or **524288 (0x80000) bytes**. The other unpartitioned space is at the end, the size can be calculated by the difference of size shown by '' | ||
+ | ==== / | ||
+ | |||
+ | The partition **/ | ||
+ | |||
+ | The actual Linux device content starts with the characters **EMMC_BOOT**. It seems that it is an header of **2048 (0x800) bytes** and the actual preloader follows that header. FIXME Some stock ROMs include the preloader image, without that header. But if you readback the preloader partition using **SP Flash Tool**, you get an image with that heder included. | ||
===== Web References ===== | ===== Web References ===== | ||
- | * **[[http:// | + | * **[[http:// |
* **[[http:// | * **[[http:// | ||
+ | * **[[http:// |