Lollipop on the Galaxy S2 – Stage 3/4 resizing /system

I had a freshly installed phone running pure CyanogenMod 12, but I also wanted the standard Google Apps so now what? Back to the forums to read about how Google Apps work on 3rd party ROMs. The main complication is the default flash layout in the Galaxy S2 only has 537MB for the /system partition, not enough for full Google Apps. There is also a fairly small /data partition which holds other apps but not user data.

More reading about this and I found out about PIT files (or Partition Information Table), which are a file containing information about how the flash should be laid out. I’m capable of using a partition table editor so messing about with PIT files and heimdall all looks a bit complex and unnecessary to me, granted I might have misunderstood what they do but there we go.

To change the flash layout I rebooted back into recovery and opened an adb shell and repartitioned the flash by hand, I also used a trick to make sure I had a record. I ran adb from screen with the -L flag so that screen records a log file to screenlog.0 by default.

screen -L adb shell

The next sections are picked out from my log of repartitioning, first of all print the current partitions before changing anything. You can see that /system which is labelled as FACTORYFS is only 512MiB

(parted) p
Model: MMC V3U00M (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  25.2MB  21.0MB  ext4         EFS
 2      25.2MB  26.5MB  1311kB               SBL1
 3      27.3MB  28.6MB  1311kB               SBL2
 4      29.4MB  37.7MB  8389kB               PARAM
 5      37.7MB  46.1MB  8389kB               KERNEL
 6      46.1MB  54.5MB  8389kB               RECOVERY
 7      54.5MB  159MB   105MB   ext4         CACHE
 8      159MB   176MB   16.8MB               MODEM
 9      176MB   713MB   537MB   ext4         FACTORYFS
10      713MB   5008MB  4295MB  ext4         DATAFS
11      5008MB  15.2GB  10.2GB               UMS
12      15.2GB  15.8GB  537MB   ext4         HIDDEN

Now to start making changes, delete the FACTORYFS, DATAFS and UMS partitions to clear space, this will remove all data you did a backup first right?

(parted) rm 9
(parted) rm 10
(parted) rm 11

Look again at the partitions, you can see that there is now empty space from 176MB to 15.2GB in the flash.

(parted) p
Model: MMC V3U00M (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  25.2MB  21.0MB  ext4         EFS
 2      25.2MB  26.5MB  1311kB               SBL1
 3      27.3MB  28.6MB  1311kB               SBL2
 4      29.4MB  37.7MB  8389kB               PARAM
 5      37.7MB  46.1MB  8389kB               KERNEL
 6      46.1MB  54.5MB  8389kB               RECOVERY
 7      54.5MB  159MB   105MB   ext4         CACHE
 8      159MB   176MB   16.8MB               MODEM
12      15.2GB  15.8GB  537MB   ext4         HIDDEN

Switch to units of bytes to make sure the layout is as exact as possible and create the new partitions, create the same 3 partitions but with 1GB for /system, 12.8GB for /data and a minimal 512MB for UMS or internal SD.

(parted) unit b

(parted) mkpart primary 176160768   1249902591
(parted) mkpart primary 1249902592  14680064511
(parted) mkpart primary 14680064512 15216934911

(parted) name 9  FACTORYFS
(parted) name 10 DATAFS
(parted) name 11 UMS

And finally a printout of the new layout, with 1G for /system, 12.8GB for /data and a minimal 512MB for the emulated SD card of UMS.

(parted) p
Model: MMC V3U00M (sd/mmc)
Disk /dev/block/mmcblk0: 15758000128B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags

1 4194304B 25165823B 20971520B ext4 EFS
2 25165824B 26476543B 1310720B SBL1
3 27262976B 28573695B 1310720B SBL2
4 29360128B 37748735B 8388608B PARAM
5 37748736B 46137343B 8388608B KERNEL
6 46137344B 54525951B 8388608B RECOVERY
7 54525952B 159383551B 104857600B ext4 CACHE
8 159383552B 176160767B 16777216B MODEM
9 176160768B 1249902591B 1073741824B ext4 FACTORYFS
10 1249902592B 14680064511B 13430161920B DATAFS
11 14680064512B 15216934911B 536870400B UMS
12 15216934912B 15753805823B 536870912B ext4 HIDDEN

At this stage you need to reboot back to recovery mode and either format all partitions and reinstall or if you are feeling brave use resize2fs to grow /system to fill the partition and just wipe /data. I reinstalled from scratch, and pushed Google Apps at the same time, but that’s the next blog post.

If you want to resize the /system filesystem use:

adb shell resize2fs /dev/block/mmcblk0p9