[How-To] Flash-Partitionen von Supertoast anpassen

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:
Code:
mtdparts=msm_nand:5M@0x3200000(boot),5M@0x37C0000(recovery),1280k(misc),384k(splash),186M(system),63M(cache),-(userdata)
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


  1. Ganz wichtig! Immer erst mal mit CWM ein Backup machen.
  2. 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.
  3. 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.
  4. Nun bootet man mittels advanced->Reboot Recovery in das neu installierte CWM
  5. 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.
  6. 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


  1. 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.
  2. Mittels advanced->Reboot Recovery in das neu installierte CWM booten.
  3. Ü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.
  4. 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.
  5. 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

  • screenshot-1329180679583.png
    screenshot-1329180679583.png
    10,4 KB · Aufrufe: 864
  • screenshot-1329180711429.png
    screenshot-1329180711429.png
    11,9 KB · Aufrufe: 879
Zuletzt bearbeitet:
  • Danke
Reaktionen: Shadow_Fighter, MegaTheLance, xaboren und 13 andere
Super Sache!!!! Vielen Dank!!
 
Endlich! fuchsteufel du bist echt ein Gott. Wie lange habe ich da drauf schon gewartet. :scared:

Interessiert wäre ich auch an der Anleitung dann wie man /system verkleinern kann. Vor allem löscht man da doch einige Systemapps raus die man nicht braucht.

Sind eigentlich die 63MB /cache sinnvoll? Und kann man das auch zugunsten für /data verkleinern.

PS. Was ist steckt gleich wieder in /userdata. Ist doch /data oder?

Edit: Ist es möglich, dass man durch falsche Größenanpassungen nen Fullbrick bekommt? Also dass man dann gar nicht mehr ins Recovery kommt usw.


Vote for sticky
 
Zuletzt bearbeitet:
Funktioniert prima!!
Vielen Dank

Gruß
ElTonno
 
Funktioniert 1A! Klasse und danke!
 
@MorphX: Kaputt machen kann man das Handy dabei nicht. Sollte man sich irgendwie die Recovery-Partition zerschießen kann man die über Fastboot jederzeit wieder neu schreiben. Den Bootloader selbst, also Fastboot, kann man nicht löschen. Und ja, userdata ist /data.
 
Wunderbar. Danke dir für die schnelle Rückmeldung. Die Anleitung funktioniert ja auch für andere Custom-/Stock-ROMs oder. :)
 
MorphX schrieb:
Wunderbar. Danke dir für die schnelle Rückmeldung. Die Anleitung funktioniert ja auch für andere Custom-/Stock-ROMs oder. :)
Im Prinzip schon im Detail dann aber doch nicht. Das Boot-Image muss zum ROM passen, in den dort enthaltenen init-Scripten sollten alle Zugriffe auf die gelöschten Partitionen entfernt sein.
Bei Custom-ROMs die auf dem Stock-Rom beruhen kommt noch hinzu das einige Apps von Huawei diese Partitionen bzw die Daten darin benötigen.
Das kann man natürlich alles fixen wenn man will ;) aber man wird schon pro ROM ein eigenes Boot-Image benötigen.
 
Aber diese .zip müsste ja mit jeder CM7 basierenden ROM funktionieren. Der Kernel ansich ist ja gleich. Nur bei der Stock-ROM gabs ja Probleme mit dem flashen der boot.img. Aber da haste uns ja auch eine selbst kompilierte zur Verfügung gestellt. Hatte eigentlich mal vor, die teammat3 CM7 testweise zu flashen.
 
@fuchsteufel:
Wie kommts, dass ich vorher 108 MiB von 160 MiB belegt hatte, nach dem flashen hab ich nun 200 MiB Speicher, aber 122 MiB sind belegt.....habe aber keine weiteren Apps installiert!?
Oder ist das normal?
 
Naja, du kannst es gerne mal probieren. Die Unterschiede in den Init-Scripten von Supertoast und benru sind nicht so groß. Bei dem von teammat3 weiß ich nicht ob er da auch Änderungen dran vorgenommen hat.
Versuch macht gluch würde ich sagen :D
 
Alles klar, muss ich wieder Versuchskaninchen spielen. ^^

Kann ich eigentlich die "install_new_partition_layout.zip" entpacken, die boot.img und die recovery.img und die Partitionsgrößen mit nem Hex-Editor editieren und dann wieder zusammenpacken; die Größen stehen ja bei beiden Dateien ziemlich am Anfang. Oder funktioniert das nicht? :sleep:
 
Alaska schrieb:
@fuchsteufel:
Wie kommts, dass ich vorher 108 MiB von 160 MiB belegt hatte, nach dem flashen hab ich nun 200 MiB Speicher, aber 122 MiB sind belegt.....habe aber keine weiteren Apps installiert!?
Oder ist das normal?
Ich weis leider nicht mehr wie viel bei mir vorher belegt waren. Allerdings schwangt die Anzeige unter "Anwendungen verwalten" bei mir auch. Mal sind 105MB belegt mal sind es 116MB. Zuverlässiger scheint es da auf der Konsole oder im Terminal-Emulator
Code:
du -sh /data
einzugeben. Das zeigt bei mir zuverlässig 110MB an.
 
MorphX schrieb:
Alles klar, muss ich wieder Versuchskaninchen spielen. ^^

Kann ich eigentlich die "install_new_partition_layout.zip" entpacken, die boot.img und die recovery.img und die Partitionsgrößen mit nem Hex-Editor editieren und dann wieder zusammenpacken; die Größen stehen ja bei beiden Dateien ziemlich am Anfang. Oder funktioniert das nicht? :sleep:
Habe ich noch nicht probiert, könnte sein das der Header der Images mit einer Prüfsumme gesichert ist.
Beim ändern der Größen musst du darauf achten das die neue Größe durch 128k teilbar ist, was bei der Einheit Megabyte aber immer der Fall ist. Splash und Misc wirst du ja sicher nicht ändern wollen.
Und du musst beachten das sich immer alle Nachfolgenden Partitionen mit verschieben. Wenn du also system verkleinerst musst du system, cache und userdata einzeln restoren.
 
So eben nach dem Flashen mit der Teammat3 CM7 ausprobiert funktioniert 1a.

Habe einfach die Schritte 1-3 ausgeführt und dann neu gebootet.
Ich habe nicht übers Backup irgendwas wiederherstellen lassen. :smile:

morphx-albums-screens-rom-picture2002-screenshot-2012-02-14-21-28-35.png
 
Zuletzt bearbeitet:
@MorphX
gut zu wissen xD

----
wie viel sollte man minimal noch beim /system an speicher als puffer freihalten?
...gibts da ne ungefähre richtlinie...;-)
 
Gute Frage. Habe jetzt über 70 MB auf /system frei. Die wären für /data schon praktisch. Will nicht jedes mal Anwendungen auf /system verschieben, Permissions setzen usw...
 
MorphX schrieb:
So eben nach dem Flashen mit der Teammat3 CM7 ausprobiert funktioniert 1a.

Habe einfach die Schritte 1-3 ausgeführt und dann neu gebootet.
Ich habe nicht übers Backup irgendwas wiederherstellen lassen. :smile:

Mit welcher version? der ICS DE version?
 
Also editieren der img-Files mit einem Hex-Editor funktioniert problemlos. Habe mal die system-Partition auf 150 Megabyte verkleinert. Weitere Details stehen im Eröffnungspost.
 

Anhänge

  • screenshot-1329261759492.png
    screenshot-1329261759492.png
    12 KB · Aufrufe: 479
  • Danke
Reaktionen: Andy

Ähnliche Themen

DerWissen
Antworten
8
Aufrufe
4.642
DerWissen
DerWissen
Luxu5
Antworten
1
Aufrufe
1.333
Andy
Andy
F
Antworten
1
Aufrufe
2.449
Andy
Andy
Zurück
Oben Unten