Internal Memory Repartition
Hey guys, after a very long time I show you the way to repartition your internal memory (EMMC).
You can modify partitions as you want, increase data partition to install more apps, increase internal storage for media files...
It's based on a little Linux binary called Parted, it's a part of CWM/TWRP recovery ramdisk.
This means that you can repartition in any recovery of any 4.2/4.3/4.4 ROM.
==========WARNING==========
Operations on EMMC partitions could be EXTREMELY DANGEROUS if you don't understand well what you do.
If you touch wrong partitions (CSPSA, EFS, SBLs...) you can lose your IMEI or hardbrick your device (in this case only JTAG can save you) so...
READ CAREFULLY!!!!!
Responsibility is all yours, but if you follow well this guide you will not risk anything.
Stock partition table is designed to be used in stock ROM, since it uses preload partition to store some system apps and needs bigger system (ROM is heavier than CM-based ones) and bigger cache partitions (more system apps=more dalvik-cache).
This mod is compatible with any ROM except stock and stock-based.
This is the stock partition table:
You can touch ONLY:
Kernel2
SYSTEM
DATAFS
CACHEFS
HIDDEN
FOTA
UMS
Kernel2 is the backup of stock kernel, we don't need it.
SYSTEM is the /system partition (where the ROM is installed/stored).
DATAFS is /data partition (default 1.97 GB where are stored installed apps, Android settings, contacts, messages... User data).
CACHEFS is /cache partition (art/dalvik-cache is stored here, together with recovery logs/temporary files. In stock ROM here is stored also CSC. If you repartition to the minimum (at least 5 MB needed for recovery) you need to put dalvik.vm.dexopt.data-only=1 flag in system/build.prop
HIDDEN is /preload partition (some Samsung TouchWiz system apps are stored here and symlinked with /system/app. This is a swap partition on MIUI v5, CM10.2 and all CM11/Omni 4.4 builds (these 4.4 before 15 June), also every custom ROM based on Canjica device tree 4.3/4.4 (always before 15 June), resize it to the minimum (128 KB to format it as EXT2).
FOTA is Firmware Over The Air, so is needed to get OTA updates while on stock ROM, can be directly deleted.
UMS is the internal storage (3.96 GB one), you can repartition this to have less/more space, or repartition to the minimum (8 MB or less, you will need to swap internal/external storages).
Parted commands useful for us:
rm (to delete a partition)
mkpart primary (to make a partition)
format (to format a partition, only in ext2)
name (to rename a partition)
For an extended list/explanation of commands, type "help" without quotes
Let's go!
First make a nandroid backup of your current ROM, to be restored after repartition
If you touch UMS you will lose all the content of /sdcard (internal storage), so make a backup first!
You need a Linux distro or Windows with ADB configured.
Reboot device in recovery and connect to USB, then open ADB and write:
You can choose to display partitions as Gigabytes, Megabytes, Kilobytes (suggested), or Bytes by "unit **" command, where ** can be gb/mb/kb or b
Now type "print" to display partition table.
Parted create new partitions by following "Number", for example SYSTEM is 3, CACHEFS is 4 and DATAFS is 5 (for other partitions is the same), so when you create new partitions, you need to make them in order!! For example:
SYSTEM is 3 and its size is from 105906KB to 747635KB
CACHEFS is 4 and its size is from 2895118KB to 3215983KB
DATAFS is 5 and its size is from 747635KB to 2895118KB
The "end" of a partition is the "start" of the next partition
As you can see, DATAFS is between SYSTEM and CACHEFS. This means that after you create SYSTEM, you need to calculate new DATAFS size that you want and then first create CACHEFS (at the end of calculated DATAFS size) then create DATAFS from the end of SYSTEM to the start of CACHEFS.
To understand more:
We will resize now CACHEFS from 320864 KB to 5000 KB gaining 315864 KB for DATAFS:
Unmount /cache from recovery first!
Basically the method is this, you can apply it to partitions listed above.
Remember to reboot recovery, go in Mounts and storage then (depending on what partitions you touched in Parted, excluding /preload) do the appropriate formats after repartition. Now you're ready to restore your nandroid backup (needs to have less size than new partitions) or install a ROM.
I suggest an useful program to check partition size on Android, Partition Table
If you touch HIDDEN partition and you are on 4.2 ROM or 4.4 builds after 15 June:
If you repartition UMS to the minimum, you will need to swap internal and external storages (MicroSD card will be the new internal storage):
On 4.2 open system/etc/vold.fstab and replace the content with this:
On 4.3 ROMs open system/build.prop and add these lines at the end of the file:
On 4.4 ROMs just open NovaThor Settings and enable "Swap Storages"
To restore original partition table flash stock ROM through Odin with "Repartition" enabled and correct PIT file for your model, in attachment (extract zip), soon CHN pits too
I know that it's difficult to understand well the first times, but think at me that I developed this method, a lot of testing and bricks on bricks
If you found this useful, you can support me at least by pressing "Thanks" or considering to offer me a beer, a coffee... Any kind of support will be very appreciated
Hey guys, after a very long time I show you the way to repartition your internal memory (EMMC).
You can modify partitions as you want, increase data partition to install more apps, increase internal storage for media files...
It's based on a little Linux binary called Parted, it's a part of CWM/TWRP recovery ramdisk.
This means that you can repartition in any recovery of any 4.2/4.3/4.4 ROM.
==========WARNING==========
Operations on EMMC partitions could be EXTREMELY DANGEROUS if you don't understand well what you do.
If you touch wrong partitions (CSPSA, EFS, SBLs...) you can lose your IMEI or hardbrick your device (in this case only JTAG can save you) so...
READ CAREFULLY!!!!!
Responsibility is all yours, but if you follow well this guide you will not risk anything.
Stock partition table is designed to be used in stock ROM, since it uses preload partition to store some system apps and needs bigger system (ROM is heavier than CM-based ones) and bigger cache partitions (more system apps=more dalvik-cache).
This mod is compatible with any ROM except stock and stock-based.
This is the stock partition table:

You can touch ONLY:
Kernel2
SYSTEM
DATAFS
CACHEFS
HIDDEN
FOTA
UMS
Kernel2 is the backup of stock kernel, we don't need it.
SYSTEM is the /system partition (where the ROM is installed/stored).
DATAFS is /data partition (default 1.97 GB where are stored installed apps, Android settings, contacts, messages... User data).
CACHEFS is /cache partition (art/dalvik-cache is stored here, together with recovery logs/temporary files. In stock ROM here is stored also CSC. If you repartition to the minimum (at least 5 MB needed for recovery) you need to put dalvik.vm.dexopt.data-only=1 flag in system/build.prop
HIDDEN is /preload partition (some Samsung TouchWiz system apps are stored here and symlinked with /system/app. This is a swap partition on MIUI v5, CM10.2 and all CM11/Omni 4.4 builds (these 4.4 before 15 June), also every custom ROM based on Canjica device tree 4.3/4.4 (always before 15 June), resize it to the minimum (128 KB to format it as EXT2).
FOTA is Firmware Over The Air, so is needed to get OTA updates while on stock ROM, can be directly deleted.
UMS is the internal storage (3.96 GB one), you can repartition this to have less/more space, or repartition to the minimum (8 MB or less, you will need to swap internal/external storages).
Parted commands useful for us:
rm (to delete a partition)
mkpart primary (to make a partition)
format (to format a partition, only in ext2)
name (to rename a partition)
For an extended list/explanation of commands, type "help" without quotes
Let's go!
First make a nandroid backup of your current ROM, to be restored after repartition
If you touch UMS you will lose all the content of /sdcard (internal storage), so make a backup first!
You need a Linux distro or Windows with ADB configured.
Reboot device in recovery and connect to USB, then open ADB and write:
Code:
adb shell
parted /dev/block/mmcblk0
You can choose to display partitions as Gigabytes, Megabytes, Kilobytes (suggested), or Bytes by "unit **" command, where ** can be gb/mb/kb or b
Now type "print" to display partition table.
Parted create new partitions by following "Number", for example SYSTEM is 3, CACHEFS is 4 and DATAFS is 5 (for other partitions is the same), so when you create new partitions, you need to make them in order!! For example:
SYSTEM is 3 and its size is from 105906KB to 747635KB
CACHEFS is 4 and its size is from 2895118KB to 3215983KB
DATAFS is 5 and its size is from 747635KB to 2895118KB
The "end" of a partition is the "start" of the next partition
As you can see, DATAFS is between SYSTEM and CACHEFS. This means that after you create SYSTEM, you need to calculate new DATAFS size that you want and then first create CACHEFS (at the end of calculated DATAFS size) then create DATAFS from the end of SYSTEM to the start of CACHEFS.
To understand more:
We will resize now CACHEFS from 320864 KB to 5000 KB gaining 315864 KB for DATAFS:
Unmount /cache from recovery first!
Code:
rm 4 (to delete CACHEFS)
rm 5 (to delete DATAFS)
calculate now the new size of DATAFS, in this case add 315864 KB to DATAFS end: 2895118+315864=3210982 KB
calculate now the new end of CACHEFS, in this case add 5000 KB to 3210982 KB: 3210982+5000=3260982 KB
mkpart primary 3210982 (end of DATAFS and start of CACHEFS) 3260982 (end of CACHEFS, start of the next partition)
Now we made a new partition, its number is 4. Do: name 4 CACHEFS
It's time to make new DATAFS partition: from the end of SYSTEM to the start of CACHEFS
mkpart primary 747635 (end of SYSTEM and start of DATAFS) 3210982 (end of DATAFS and start of CACHEFS)
New partition has number 5, name it DATAFS by name 5 DATAFS
Basically the method is this, you can apply it to partitions listed above.
Remember to reboot recovery, go in Mounts and storage then (depending on what partitions you touched in Parted, excluding /preload) do the appropriate formats after repartition. Now you're ready to restore your nandroid backup (needs to have less size than new partitions) or install a ROM.
I suggest an useful program to check partition size on Android, Partition Table
If you touch HIDDEN partition and you are on 4.2 ROM or 4.4 builds after 15 June:
Code:
format
y
9
ext2
If you repartition UMS to the minimum, you will need to swap internal and external storages (MicroSD card will be the new internal storage):
On 4.2 open system/etc/vold.fstab and replace the content with this:
Code:
# MicroSD as internal storage
dev_mount sdcard0 /storage/sdcard0 auto /devices/sdi0/mmc_host/mmc1/mmc1
# UMS as external storage
dev_mount sdcard1 /storage/sdcard1 8 /devices/sdi2/mmc_host/mmc0/mmc0 nonremovable,encryptable
# usbdisk
dev_mount usbdisk0 /storage/usbdisk0 auto /devices/platform/msm_hsusb_host.0
On 4.3 ROMs open system/build.prop and add these lines at the end of the file:
Code:
persist.sys.vold.switchexternal=1
ro.vold.switchablepair=/storage/sdcard0,/storage/sdcard1
On 4.4 ROMs just open NovaThor Settings and enable "Swap Storages"
To restore original partition table flash stock ROM through Odin with "Repartition" enabled and correct PIT file for your model, in attachment (extract zip), soon CHN pits too
I know that it's difficult to understand well the first times, but think at me that I developed this method, a lot of testing and bricks on bricks
If you found this useful, you can support me at least by pressing "Thanks" or considering to offer me a beer, a coffee... Any kind of support will be very appreciated
Attachments
Last edited: