Caution
Before using the solution please make sure you understood the following:
- The proposed solution is only suitable for a clean install (a.k.a.
from scratch).
- The proposed solution modifies the patition table of the phone. You
are risking a bricked phone (especially if u edit other partitions
related to the bootloader). Also entering wrong numbers may lead to
a corrupt partition table.
- The proposed solution expects you to be familiar with CWM
(ClockWorkMod), TWRP (Team Win Recovery Project) and ADB (Android
Debug Bridge).
- The proposed solution expects having USB-Debugging on your phone
enabled.
- The proposed solution expects having CWM or TWRP installed. If you
do not know, how to do this, search for it. Basically it's using
adb
and fastboot
to unlock your device and flash a recovery image (like
TWRP) to your phone.
Solution
While searching for a solution I tried to figure out, what size the system partition has and what is left. I used TWRP, navigated to Wipe > Advanced Wipe > Select System > Repair or Change File System and discovered it beeing 590 MiB having some 100 MiB left. Obviously this was not enough. Because I had no idea how to solve it, I tried using the option Resize File System which didn't do anything to the partition size.
I was asking myself, if this phone has internal memory capacity of 4 GiB, would it be possible to swap space from another partition to system. While searching for a solution I discovered, that someone else had the same idea like me here on StackExchange. But unfortunately it uses custom build binaries (of parted
and gdisk
) for another phone which I wouldn't want to use here, because I would risk damaging my partition table. Also using resizepart
seemed error prone to me, because the version of parted
which my phone had installed didn't recognize ext4. Furthermore the whole description seemed like a lot of guessing to me.
My decision was to manually edit the partition table with the onboard tools of my phone, which I could've done with the command line from TWRP. Instead I plugged my phone into the USB port and used adb
from Debian Bullseye:
$ uname -a
Linux MACHINENAME 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux
$ adb --version
Android Debug Bridge version 1.0.41
Version 28.0.2-debian
Installed as /usr/lib/android-sdk/platform-tools/adb
First I checked for the partition numbers and sizes of system and data paths.
$ sudo adb shell df -h
Filesystem Size Used Available Use% Mounted on
tmpfs 322.6M 64.0K 322.5M 0% /dev
tmpfs 322.6M 212.0K 322.4M 0% /tmp
/dev/block/mmcblk0p7 9.8M 4.6M 5.2M 47% /efs
df: /mnt/.lfs: Function not implemented
/dev/block/mmcblk0p8 1.1G 1.1G 10.7M 99% /sdcard
/dev/block/mmcblk0p8 1.1G 1.1G 10.7M 99% /and-sec
/dev/block/mmcblk1p1 14.8G 1.6G 13.2G 11% /external_sd
/dev/block/mmcblk0p17
15.5M 10.5M 5.0M 67% /ramdisk
/dev/block/mmcblk0p3 602.4M 10.0M 592.3M 2% /system
/dev/block/mmcblk0p4 301.2M 5.0M 296.2M 2% /cache
/dev/block/mmcblk0p5 1.2G 21.4M 1.2G 2% /data
Then I unmounted those paths and used parted
to discover the partition's device /dev/block/mmcblk0
and its partition table.
$ sudo adb shell umount /data
$ sudo adb shell umount /system
$ sudo adb shell
~ # parted /dev/block/mmcblk0
GNU Parted 1.8.8.1.179-aef3
Using /dev/block/mmcblk0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
print free
Model: MMC SEM04G (sd/mmc)
Disk /dev/block/mmcblk0: 3959MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
17.4kB 524kB 507kB Free Space
10 524kB 1573kB 1049kB PIT
6 1573kB 3146kB 1573kB CSPSA FS
3146kB 4194kB 1049kB Free Space
7 4194kB 14.7MB 10.5MB ext4 EFS
2 14.7MB 31.5MB 16.8MB ext4 Modem FS
31.5MB 32.5MB 1049kB Free Space
14 32.5MB 34.6MB 2097kB SBL
16 34.6MB 36.7MB 2097kB SBL_2
1 36.7MB 53.5MB 16.8MB PARAM
12 53.5MB 55.6MB 2097kB IPL Modem
13 55.6MB 72.4MB 16.8MB Modem
15 72.4MB 89.1MB 16.8MB Kernel
17 89.1MB 106MB 16.8MB ext4 Kernel2
3 106MB 748MB 642MB ext4 SYSTEM
5 748MB 2056MB 1309MB ext4 DATAFS
4 2056MB 2377MB 321MB ext4 CACHEFS
9 2377MB 2713MB 336MB ext4 HIDDEN
11 2713MB 2765MB 52.4MB Fota
8 2765MB 3949MB 1184MB fat32 UMS
3949MB 3959MB 10.5MB Free Space
(parted) unit B
unit B
(parted) print free
print free
Model: MMC SEM04G (sd/mmc)
Disk /dev/block/mmcblk0: 3959422976B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
17408B 524287B 506880B Free Space
10 524288B 1572863B 1048576B PIT
6 1572864B 3145727B 1572864B CSPSA FS
3145728B 4194303B 1048576B Free Space
7 4194304B 14680063B 10485760B ext4 EFS
2 14680064B 31457279B 16777216B ext4 Modem FS
31457280B 32505855B 1048576B Free Space
14 32505856B 34603007B 2097152B SBL
16 34603008B 36700159B 2097152B SBL_2
1 36700160B 53477375B 16777216B PARAM
12 53477376B 55574527B 2097152B IPL Modem
13 55574528B 72351743B 16777216B Modem
15 72351744B 89128959B 16777216B Kernel
17 89128960B 105906175B 16777216B ext4 Kernel2
3 105906176B 747634687B 641728512B ext4 SYSTEM
5 747634688B 2056257535B 1308622848B ext4 DATAFS
4 2056257536B 2377121791B 320864256B ext4 CACHEFS
9 2377121792B 2712666111B 335544320B ext4 HIDDEN
11 2712666112B 2765094911B 52428800B Fota
8 2765094912B 3948937215B 1183842304B fat32 UMS
18 3948937216B 3950000127B 1062912B
3950000128B 3959406079B 9405952B Free Space
As you can see the partitions of system and data border to each other. In the next steps I will move the border between them, which will reduce the size of data and give additional space to system.
First I deleted partition 5 (data), recreated it and moved the starting point from 747634688B to 947634688B (while keeping the same end) which would make it lose around 200 MiB at the beginning.
(parted) rm 5
rm 5
(parted) mkpart
mkpart
Partition name? []?
File system type? [ext2]?
Start? 947634688B
947634688B
End? 2056257535B
2056257535B
(parted) name 5 DATAFS
name 5 DATAFS
After that I deleted partition 3 (system), recreated it and moved the ending point from 747634687B to 947634687B (while keeping the same start) which would make it gain around 200 MiB at the end.
(parted) rm 3
rm 3
(parted) mkpart
mkpart
Partition name? []?
File system type? [ext2]?
Start? 105906176B
105906176B
End? 947634687B
947634687B
(parted) name 3 SYSTEM
name 3 SYSTEM
I then quit parted
and back in the shell of adb
I formatted these partitions with ext4.
(parted) quit
quit
~ #make_ext4fs /dev/block/mmcblk0p5
~ #make_ext4fs /dev/block/mmcblk0p3
As a last step I checked the partition table again.
~ # parted /dev/block/mmcblk0
(parted) unit B
unit B
(parted) print free
print free
Model: MMC SEM04G (sd/mmc)
Disk /dev/block/mmcblk0: 3959422976B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
17408B 524287B 506880B Free Space
10 524288B 1572863B 1048576B PIT
6 1572864B 3145727B 1572864B CSPSA FS
3145728B 4194303B 1048576B Free Space
7 4194304B 14680063B 10485760B ext4 EFS
2 14680064B 31457279B 16777216B ext4 Modem FS
31457280B 32505855B 1048576B Free Space
14 32505856B 34603007B 2097152B SBL
16 34603008B 36700159B 2097152B SBL_2
1 36700160B 53477375B 16777216B PARAM
12 53477376B 55574527B 2097152B IPL Modem
13 55574528B 72351743B 16777216B Modem
15 72351744B 89128959B 16777216B Kernel
17 89128960B 105906175B 16777216B ext4 Kernel2
3 105906176B 947634687B 841728512B ext4 SYSTEM
5 947634688B 2056257535B 1108622848B ext4 DATAFS
4 2056257536B 2377121791B 320864256B ext4 CACHEFS
9 2377121792B 2712666111B 335544320B ext4 HIDDEN
11 2712666112B 2765094911B 52428800B Fota
8 2765094912B 3948937215B 1183842304B fat32 UMS
18 3948937216B 3957000191B 8062976B ext4 TEST
3957000192B 3959406079B 2405888B Free Space
After that I rebooted into recovery to make sure TWRP is detecting it and having all mount points set correctly. I installed the above mentioned archives (first lineage13.0-20180914-UNOFFICIAL-codina_SergeyL.zip
and second open_gapps-arm-6.0-pico-20220215.zip
), which now went fine and wiped the Dalvik/Art-Cache. After a reboot to the system and a couple of minutes waiting finally Cyanogenmod / LineageOS 13 with GApps was installed.
I configured my phone and installed Signal through Google Play Store plus F-Droid and some other apps. The GBoard (with Swype gestures) was installed by default. The phone is running fine and everything works as expected (Wifi, 3G, hotspot, bluetooth, mail, alarm clock, browsing, dialing, sms, contacts, camera, etc.). But due to the matter of low storage I couldn't install another webbrowser like Firefox. So I need to stick to the onboard browser, which is okay.