F
fuchsteufel
Fortgeschrittenes Mitglied
- 246
Hallo zusammen,
was mich schon seit längerem nervt ist die Verschwendung von kostbarem Flash-Speicher für die Partitionen cust und userdata2. Die haben bei Custom-ROMs, vor allem bei denen die auf CyanogenMod basieren, ziemlich begrenzten Nutzen. Was liegt also näher als diesen Speicher der Partition userdata hinzuzufügen um mehr Platz für Apps zu haben.
Diese Anleitung richtet sich an den erfahrenen Nutzer der sich schon etwas mit der Materie auskennt und weis was er tut. Kenntnisse über ADB und fastboot sind zwar nicht zwingend erforderlich könnten aber hilfreich sein falls etwas schief geht.
Erstmal etwas zur Theorie
Der Flash wird durch den MTD-Treiber im Linux-Kernel verwaltet. Ich vermute das er vom Bootloader das Layout für die Partitionen übermittelt bekommt, ganz sicher bin ich mir da aber nicht. Wie dem auch sei, man kann dieses Layout überschreiben indem man in der Kernel-Command-Line sein eigenes angibt.
Die Kernel-Command-Line enthält im Prinzip die Aufrufparameter des Kernels und sieht dann so aus:
Das bedeutet dann das zuerst eine fünf Megabyte große Partition bei Offset 0x3200000 mit dem Namen boot angelegt wird, danach kommt eine fünf Megabyte große Partition mit dem Namen recovery bei Offset 0x37C0000. Wer jetzt nachrechnet wird feststellen das 0x37C0000-0x3200000 mehr als 5 Megabyte ist, genau 768k mehr was 6 Flash-Sektoren entspricht. Warum das so gemacht wurde weis ich nicht aber ich gehe davon aus das man es nicht ändern sollte.
Dann kommen die restlichen Partitionen, diesmal ohne irgendwelche Offsets, die schließen sich also immer nahtlos an die jeweils vorhergehende an. Der Strich vor der Letzten Partition besagt das ihre Größe den restlichen verfügbaren Flash-Speicher einnimmt. Im Orginal-Layout kämen nach userdata noch cust und userdata2, dieser Speicher kommt nun userdata zu gute.
So wirds gemacht
Und so wird es rückgängig gemacht
Da geht noch was ...
Wem die zusätzlichen vierzig Megabyte nicht reichen kann noch weiteren Speicher gewinnen in dem er zum Beispiel die Partition system und/oder cache verkleinert. Dazu entpackt man die Datei install_new_partition_layout.zip auf seinem Rechner und bearbeitet mit einem Hex-Editor die Dateien recovery.img und boot.img. Gleich am Anfang der Dateien steht die Kernel-Command-Line, dort kann man dann zum Beispiel aus den 186M für die Partition system 150M machen. Dann kann man entweder die beiden Dateien wieder in das zip-File packen und es vom CWM aus installieren oder man flasht sie gleich per fastboot.
So, noch ein paar Tipps:
was mich schon seit längerem nervt ist die Verschwendung von kostbarem Flash-Speicher für die Partitionen cust und userdata2. Die haben bei Custom-ROMs, vor allem bei denen die auf CyanogenMod basieren, ziemlich begrenzten Nutzen. Was liegt also näher als diesen Speicher der Partition userdata hinzuzufügen um mehr Platz für Apps zu haben.
Diese Anleitung richtet sich an den erfahrenen Nutzer der sich schon etwas mit der Materie auskennt und weis was er tut. Kenntnisse über ADB und fastboot sind zwar nicht zwingend erforderlich könnten aber hilfreich sein falls etwas schief geht.
Erstmal etwas zur Theorie
Der Flash wird durch den MTD-Treiber im Linux-Kernel verwaltet. Ich vermute das er vom Bootloader das Layout für die Partitionen übermittelt bekommt, ganz sicher bin ich mir da aber nicht. Wie dem auch sei, man kann dieses Layout überschreiben indem man in der Kernel-Command-Line sein eigenes angibt.
Die Kernel-Command-Line enthält im Prinzip die Aufrufparameter des Kernels und sieht dann so aus:
Code:
mtdparts=msm_nand:5M@0x3200000(boot),5M@0x37C0000(recovery),1280k(misc),384k(splash),186M(system),63M(cache),-(userdata)
Dann kommen die restlichen Partitionen, diesmal ohne irgendwelche Offsets, die schließen sich also immer nahtlos an die jeweils vorhergehende an. Der Strich vor der Letzten Partition besagt das ihre Größe den restlichen verfügbaren Flash-Speicher einnimmt. Im Orginal-Layout kämen nach userdata noch cust und userdata2, dieser Speicher kommt nun userdata zu gute.
So wirds gemacht
- Ganz wichtig! Immer erst mal mit CWM ein Backup machen.
- backup_partitons.zip herunter laden und im CWM über "Install zip from sd-card" ausführen. Dabei werden die beiden Partitionen cust und userdata2 gesichert, was das Standard-Backup von CWM ja nicht macht. Danach sollten sich auf der SDCard die zwei Dateien cust_backup.tar und userdata2_backup.tar befinden.
- Jetzt die Datei install_new_partition_layout.zip ausführen. Dabei wird ein neues Boot- und Recovery-Image installiert, denn in beiden muss die neue Kernel-Command-Line enthalten sein. Auserdem wird noch der Volume-Daemon(/system/bin/vold) und seine Konfigurationsdatei /system/etc/vold.fstab ersetzt da es ja dann ein paar Volumes weniger zu mounten gibt.
- Nun bootet man mittels advanced->Reboot Recovery in das neu installierte CWM
- Dort stellt man über backup and restore -> advanced restore -> Restore data die Datenpartition aus dem vorherigen Backup wieder her. Ich bin mir nicht ganz sicher ob dieser Schritt wirklich notwendig ist aber es kann auf jeden Fall nicht schaden die nun vergrößerte Daten-Partition dadurch zu Formatieren und neu beschreiben zu lassen.
- Anschließen kann man das System booten und hat hoffentlich, wie in den Bildern zu sehen, mehr Speicher zur Verfügung.
Und so wird es rückgängig gemacht
- Im CWM diese Datei restore_old_partition_layout.zip über "Install zip from sd-card" ausführen. Dabei werden das alte Boot- und Recovery-Image sowie der alte vold samt Konfiguration installiert.
- Mittels advanced->Reboot Recovery in das neu installierte CWM booten.
- Über backup and restore -> advanced restore -> Restore data die Datenpartition aus einem vorherigen Backup wieder herstellen. Dabei sollte man aufpassen das es auch in die nun wieder verkleinerte Partition passt, also eventuell vorher ein paar Apps deinstallieren.
- Jetzt noch die Datei restore_partitons.zip ausführen um die Daten in den beiden Partitionen cust und userdata2 wieder herzustellen. Das setzt voraus das sich die beiden Dateien mit dem Backup auch noch auf der SDCard befinden.
- Jetzt kann man das System booten und es ist hoffentlich wieder alles beim alten
Da geht noch was ...
Wem die zusätzlichen vierzig Megabyte nicht reichen kann noch weiteren Speicher gewinnen in dem er zum Beispiel die Partition system und/oder cache verkleinert. Dazu entpackt man die Datei install_new_partition_layout.zip auf seinem Rechner und bearbeitet mit einem Hex-Editor die Dateien recovery.img und boot.img. Gleich am Anfang der Dateien steht die Kernel-Command-Line, dort kann man dann zum Beispiel aus den 186M für die Partition system 150M machen. Dann kann man entweder die beiden Dateien wieder in das zip-File packen und es vom CWM aus installieren oder man flasht sie gleich per fastboot.
So, noch ein paar Tipps:
- Ganz wichtig! Die Größen der Partitonen müssen immer ein vielfaches von 128k sein, das ist die Größe eines einzelnen Flash-Sektors. Solange man in der Einheit Megabyte bleibt ist das kein Problem weil 1M = 8*128k = 8 Sektoren.
- Zur Sicherheit sollte man dann zuerst in das neu geflashte CWM booten und dort manuell die Partitionen system, cache und userdata aus einem Backup wiederherstellen und dann erst das System booten.
- Sollte man später Probleme beim bereitstellen der SDCard über USB haben hat man eventuell ein Backup von system wiederhergestellt in dem noch der alte vold drin ist, dann sollte man ihn durch den aus dem zip-File ersetzen.
- Man sollte die Größen der Partitionen nicht zu knapp kalkulieren damit man noch etwas Reserve hat falls doch mal ein Flash-Sektor defekt ist oder man noch eine Datei ändern oder nachinstallieren muss.
Anhänge
Zuletzt bearbeitet: