[TUTORIAL] How to resize system partition on Galaxy S3 for larger GAPPS

Jan 16, 2021
On newer Android versions, the system occupies more of the system partition and with GAPPS upgrades, larger GAPPS packages (such as stock and mini) cannot fit on the system partition of the 2012 Galaxy S3. You can just use pico or nano, but sometimes you want the full GAPPS, the real deal. This is also necessary for upcoming ROMs that come with GAPPS preinstalled, such as Pixel Experience. To do this, you must resize the system partition. You can do this by taking some of the space from the cache partition and giving it to the system partition.

PLEASE NOTE: This process is not risk-free! If you do not know what you are doing, I strongly advise against this procedure. I am not responsible for any bricked devices or issues you may face. You have been warned.


  • A Samsung Galaxy S3. I have the i9300 model, where I have tested it.
  • parted, downloadable from here. If it downloads as a txt file, delete the extension by renaming it without the txt.
  • TWRP installed on your device (available for i9300 from here.)
  • A computer with ADB installed and relevant drivers.
First of all, you must boot TWRP. Once booted, wipe all partitions in TWRP, including system. Reboot back into recovery. Then go into mount and deselect all devices, and uncheck the box saying "Mount system partition as read-only"

Secondly, connect your S3 and send parted to the device with the following command:

adb push <path_to_parted> /
Thirdly, enter the ADB shell with the following command:

adb shell
Now, give executable permission to the parted file with the following command:

chmod +x parted
Now run:

./parted /dev/block/mmcblk0
Run the print command and you will get a list of partitions. It should look something like:

Model: MMC VTU00M (sd/mmc)
Disk /dev/block/mmcblk0: 15.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name      Flags
1      4194kB  8389kB  4194kB               BOTA0
2      8389kB  12.6MB  4194kB               BOTA1
3      12.6MB  33.6MB  21.0MB  ext4         EFS
4      33.6MB  41.9MB  8389kB               PARAM
5      41.9MB  50.3MB  8389kB               BOOT
6      50.3MB  58.7MB  8389kB               RECOVERY
7      58.7MB  92.3MB  33.6MB               RADIO
8      92.3MB  1166MB  1074MB  ext4         CACHE
9      1166MB  2777MB  1611MB  ext4         SYSTEM
10      2777MB  3364MB  587MB   ext4         HIDDEN
11      3364MB  3372MB  8389kB               OTA
12      3372MB  15.8GB  12.4GB  ext4         USERDATA
Make a note of the Start and End points for partitions 8 and 9 (CACHE and SYSTEM). In my case, the start and end points for partition 8 are 92.3 and 1166 and the start and end points for partition 9 are 1166 and 2777.

What we're going to do is delete these two partitions, then recreate them, but make the new partition 8 (Cache) smaller and allocate the space left to partition 9 (System).

Remove them with the following commands in parted:

./parted /dev/block/mmcblk0 rm 8
./parted /dev/block/mmcblk0 rm 9
Now recreate them with the following commands:

./parted /dev/block/mmcblk0 mkpart primary <cache_start> <cache_start+200>
./parted /dev/block/mmcblk0 mkpart primary <cache_end>  <system_end>
Replace <cache_start> with the start of the former cache petition. In my case, it would be:

./parted /dev/block/mmcblk0 mkpart primary 92.3 292
./parted /dev/block/mmcblk0 mkpart primary 292 2777
Now name the partitions.

./parted /dev/block/mmcblk0 name 8 CACHE
./parted /dev/block/mmcblk0 name 9 SYSTEM
Then format them as ext4:

mke2fs -T ext4 /dev/block/mmcblk0p8
mke2fs -T ext4 /dev/block/mmcblk0p9
Run ./parted, followed by print, to check if the changes have been applied. If so, well done! You have successfully enlarged the system partition. Exit parted with the quit command.

Now configure and exit:

mount -a
Reboot back into recovery and install any ROM of your choice. Once you've installed the ROM, reboot into recovery once again, and navigate to wipe --> advanced wipe, select system, tap repair or change filesystem, then resize.

You can now install any GAPPS of your choice. I've gotten LineageOS 16.0 working with mini gapps (Google Play Store + some Google apps) and it is working fine. You could make the system partition bigger by borrowing some more MB from the cache partition, or experimenting further by taking some from the HIDDEN partition. Remember, I am NOT responsible for any damage done when doing this. You assume full responsibility for any problems with the device. I hope this tutorial did help you, feel free to post here if it did or ask for help if you need it.
  • Like
Reactions: barbe31


Senior Member
Jul 20, 2015
Did you experiment this process for a long time ? With so small a cache what could be the consequences ?
A finally do you know what is the use of HIDDEN partition ?
Great tutorial anyway.
Jan 16, 2021
Did you experiment this process for a long time ? With so small a cache what could be the consequences ?
Newer Android versions don't use up as much in the cache partition. If you're on say stock ICS or JB you may encounter some issues but if you're using LOS 15 or 16 it should work fine. I've used LOS 16 with GAPPS using this method for a while on my S3 and it's been fine.