Re-Partitionierung/Vergrößerung des internen Telefonspeichers bei MTK65xx

walter77

New Member
Hallo Ihr,

im Folgenden die grundsätzliche Frage, ob eine Umpartitionierung überhaupt notwendig ist.

Die c't schreibt Ende 2012 im Artikel "Das Problem der nutzlosen SD" über die Einbindung des internen und externen SD-Speichers bei Android. Link zum (Bezahl)-Artikel:
http://www.heise.de/artikel-archiv/ct/2012/23/170_Nutzlose-SD

Hier ein paar Stellen daraus, die ich zum 'späteren darauf beziehen' nummeriert habe:

1.) "Der Grund für die eingeschränkte Anbin-
dung der SD-Karte liegt in der Entste-
hungsgeschichte von Android. Die aller -
ersten Android-Geräte hatten nur einen
sehr kleinen Speicherbereich für Apps, der
im Dateisystem unter /data liegt. Wenn er
voll ist, kann man keine Anwendungen
mehr installieren. Für größere App-Samm-
lungen hat Google die Unterstützung für
eine SD-Karte eingebaut."

[...]

2.) "Als nun der eingebaute Speicher vieler
Smartphones ab Android 2.3 in die Giga -
bytes wuchs, sind die Hersteller nicht etwa
dazu übergegangen, die /data-Partition zu
vergrößern, sondern sie haben den inter-
nen Speicher zweigeteilt in eine kaum grö-
ßere /data- und eine riesige zweite Parti-
tion – mit Namen /mnt/sdcard. Diese Par-
tition wird genauso angesprochen wie vor-
mals die echte SD-Karte, einen anderen
Weg sieht Android nicht vor."

[...]

3.) "Es gibt sehr viele Apps, die gerade aufgrund
der beschränkten Größe der /data-Parti -
tion ihre umfangreichen Daten direkt auf
/mnt/sdcard schreiben – diese Parti tion
muss also vorhanden und ausreichend
groß sein, während eine größere /data-
Partition die Speicherknappheit gar nicht
komplett lösen würde.
Nachteil der Zweiteilung ist, dass die
/data-Partition immer noch schnell volllau-
fen kann, obwohl noch freier Speicher im
Gerät vorhanden ist, und dass der Anwen-
der die seltsame Aufgabe hat, Apps von
der einen internen Partition auf eine ande-
re zu schieben."

[...]

4.) "Bei Android 3 hat Google die Zweitei-
lung mit einem Trick überflüssig gemacht:
(Anmerkung: offenbar ist "ab Android 3" gemeint, es gilt also offenbar auch für Android 4)

/data/ und /mnt/sdcard zeigen auf densel-
ben Speicherbereich. Für beide ist nun der
gesamte interne Speicher nutzbar; das Ver-
schieben von Apps auf /mnt/sdcard bietet
Android 3 folgerichtig gar nicht mehr an."

[...]

5.) "Diese Geräte mit geteiltem oder wieder-
vereinigtem internen Speicher sind nun
die Problemkinder: Weil /mnt/sdcard
schon von internem Speicher belegt ist,
muss eine echte SD-Karte anders angebun-
den werden. Google sieht dafür allerdings
keinen einheitlichen Weg vor, sodass An-
droid keine Möglichkeit hat, dorthin bei-
spielsweise Apps auszulagern. Apps könn-
ten zwar einfach drauf zugreifen, doch
haben sie keine offizielle Möglichkeit, die
Karten zu finden.
Die Hersteller mounten die microSD
irgendwo in den Verzeichnisbaum, jeder an
anderer Stelle, manche nicht einmal für
jedes Modell an der gleichen (siehe Tabelle)."

[...]

6.) "Wie das eigene Gerät den Speicher verwal-
tet, ist gar nicht so einfach herauszufinden.
Einen Hinweis bekommt man unter Ein-
stellungen/Speicher (oder ähnlich)."

"Gibt es einen Punkt „Interner Speicher“
mit dem Unterpunkt „Gesamtspeicher“,
handelt es sich um eines der Geräte, wo
/data und /mnt/sdcard auf den gleichen Be-
reich zeigen. Steht darunter eine „SD-Karte“,
ist es eine der uneinheitlich angebundenen.

"Man erkennt sie auch daran, dass Android
nur den belegten Speicher angibt, aber an-
ders als bei den anderen Speicherorten
keine Aufteilung in Anwendungen, Bilder,
Videos, Audio und so weiter."
Mein UMI X2S (32GB/2GB) verfügt nach den Beschreibungen der c't (Einstellungen > Speicher) über diese Zusammenlegung von /data/ und /mnt/sdcard - sprich: sie zeigen auf denselben Speicherbereich (wenn ich das richtig sehe).

Meine Fragen:

1. Macht es demnach überhaupt Sinn, die hier diskutierte Vergrößerung der Partition /data zu Lasten von /mnt/sdcard durchzuführen?

2. Warum wird trotz dieser Zusammenlegung von /data/ und /mnt/sdcard unter "Einstellungen > Speicher" als Größe für "Interner Speicher > Gesamtspeicher" (für mein Verständnis ist das /data) 1,48 GB angezeigt? Wie ist diese Anzeige zu deuten? Läuft /data bei 1,48 GB voll oder nicht?

3. Wie kann man die Partitionierung des Speichers und auch die Verweise auf Speicherbereiche zweifelsfrei anzeigen?
 

N2k1

Well-Known Member
@walter77
Ich denke nicht, daß es bei Dir zusammengelegt wurde.
Zudem ist der Artikel so auch nicht (mehr) ganz richtig.
Google "verlangte" irgendwann, daß jedes Gerät über eine "interne SD-Karte" verfügen muß (und nebenbei wollte GOOGLE die externe SD-Karte (aus Sicherheitsgründen) komplett abschaffen)
Be NEXUS-Geräten gibt es daher auch keine externen SD-Karten mehr.
Beim SGN hatte Google mit dem Erscheinen von ANDROID 4 den Speicherbereich tatsächlich doppelt belegt (/data und /sdcard)
Bei den chinesischen Geräten sind es aber tatsächlich 2 getrennte Partitionen.

Demnach läuft bei Dir bei 1.48 GB der Speicher voll..

Und kritisch wird es dann bei ADROID 4.4 - hier darf auf die SD-Karte nichts mehr verschoben werden..
 

walter77

New Member
Danke N2k1 für den Beitrag und die Einschätzung.
Ich habe mal den Hinweis von Louis777 hier aus dem Thread verfolgt ->
http://chinamobiles.org/threads/re-partitionierung-vergroesserung-des-internen-telefonspeichers-bei-mtk65xx.34357/page-5#post-492998

und mir die Ausgaben für 'df' und 'cat /proc/partitions' und 'cat /proc/emmc' meines UMI X2S (Standard-ROM) angesehen. Hier die Ausgaben:

Code:
shell@android:/ $ df
df
Filesystem			 Size   Used   Free   Blksize
/dev				   984M	52K   984M   4096
/mnt/secure			984M	 0K   984M   4096
/mnt/asec			  984M	 0K   984M   4096
/mnt/obb			   984M	 0K   984M   4096
/system				640M   487M   152M   4096
/data					1G	84M	 1G   4096
/cache				 124M	 4M   119M   4096
/mnt/cd-rom			  1M	 1M	 0K   2048
/protect_f			   8M	 4M	 4M   4096
/protect_s			   8M	 4M	 4M   4096
/storage/sdcard1		26G   769M	26G   32768
/storage/sdcard0		58G	 3M	58G   32768
/mnt/secure/asec: Permission denied


shell@android:/ $ cat /proc/partitions
cat /proc/partitions
major minor  #blocks  name

   7		0	   1254 loop0
179		0   30512256 mmcblk0
179		1		  1 mmcblk0p1
179		2	  10240 mmcblk0p2
179		3	  10240 mmcblk0p3
179		4	   6144 mmcblk0p4
179		5	 665600 mmcblk0p5
179		6	 129024 mmcblk0p6
179		7	1572864 mmcblk0p7
179		8   28077696 mmcblk0p8
179	   64	   2048 mmcblk0boot1
179	   32	   2048 mmcblk0boot0
179	   96   61407232 mmcblk1
179	   97   61406208 mmcblk1p1


shell@android:/ $ cat /proc/emmc
cat /proc/emmc
partno:	start_sect   nr_sects  partition_name
emmc_p1: 00000400 00000002 "ebr1"
emmc_p2: 00006800 00005000 "protect_f"
emmc_p3: 0000b800 00005000 "protect_s"
emmc_p4: 00016c00 00003000 "sec_ro"
emmc_p5: 00020c00 00145000 "android"
emmc_p6: 00165c00 0003f000 "cache"
emmc_p7: 001a4c00 00300000 "usrdata"
emmc_p8: 004a4c00 0358dd00 "fat"

Demnach scheinen /data (App-Speicher) und /storage/sdcard1 (interner SD-Speicher) nicht "zusammengelegt" zu sein, sprich: nicht auf den selben Speicherbereich zu zeigen. Diese Ausgaben sehen für mich zumindest nicht danach aus.
Etwas Zweifel an diesen Ausgaben bleibt aber generell, da mittels 'df' /data nur mit 1GB angegeben wird, obwohl es 1,5GB sind. Die Ausgabe mit cat /proc/partitions scheint hier richtiger, da für 'mmcblk0p7' (hier "usrdata") exakt 1,5GB angegeben sind.

Was mir fehlt ist die Ausgabe von fdisk über die Partitionen. Ein 'fdisk -l' funktioniert aber leider nicht (BusyBox installiert, Zugriff über Terminal-Emulator oder ADB-Shell) - die Ausgabe wird nach Eingabe des Befehls beendet und wechselt in den Prompt.

Vielleicht hat hierzu jemand ein paar Gedanken. Was mir durch den Kopf geht: Wenn man denn schon mit seinem 'Handy' auf der Kommandozeile angekommen ist :), müsste man doch auch gleich auf der Kommandozeile umpartitionieren können. Wenn das mit fdisk auf herkömmlichem Weg ginge, wäre das doch der direkteste Weg und ein Tutorial ließe sich dafür evtl. auch schreiben. Für ein S3 hat das hier jemand gemacht - so 'ganz ohne' scheint das aber auch nicht zu sein:

http://www.pocketpc.ch/samsung-galaxy-s3-root-rom/170953-tutorial-partitionsgroessen-aendern.html

Traut sich hier jemand ran, könnte hier überhaupt ein generelles Tutorial (Hersteller-übergreifend) geschrieben werden?

Nun denn, sollten meine Gedanken wenig taugen, wähle ich den Weg des Thread-Starters und verneige mich vor blackbox und ora und den weiteren Beteiligten und bedanke mich für diese Lösung.

Grüße, walter77
 
Zuletzt bearbeitet:

Tzul

Member
Demnach scheinen /data (App-Speicher) und /storage/sdcard1 (interner SD-Speicher) nicht "zusammengelegt" zu sein, sprich: nicht auf den selben Speicherbereich zu zeigen. Diese Ausgaben sehen für mich zumindest nicht danach aus.
Ich glaube, bei Mediatek sind /data und /sdcard generell nicht zusammengelegt. Das Zusammenlegen ist übrigens auch als "DataMedia Layout" bekannt, weil die sdcard Partition auf die data Partition nach /data/media umgeleitet wird. Das hat die erwähnten Vorteile (dynamische Speicherteilung, wer sdcard nicht viel benutzt hat automatisch mehr Platz für Apps), aber den Nachteil, dass die USB-Verbindung mit dem PC nicht mehr den USB-Massenspeicher unterstützt, sondern nur noch MTP/PTP (Media/Picture Transfer Protocol). Denn die data Partition benutzt ja ext4 oder ein anderes Dateisystem, mit dem Windows-PCs nichts anfangen können.

Und ja, es macht Sinn bei Mediatek-Geräten die data Partition auf Kosten von sdcard zu vergrößern. Denn sdcard ist nicht gleich sdcard - /mnt/sdcard bzw. /storage/sdcard0 zeigt zwar normalerweise auf den internen Telefonspeicher, der verkleinert wird, aber die Verweise können ohne Probleme auf die echte externe SD-Karte umgebogen werden. Bei einigen Geräten ist das sogar die Standardeinstellung. Findet sich gelegentlich in den Systemeinstellungen -> Speicher als "Standardschreibdatenträger". Damit kann man dann selbst bestimmen, ob /sdcard auf den internen Telefonspeicher zeigt, oder die echte Karte. Und selbst wenn es die Einstellung nicht gibt, kann man das gleiche über ein Autostart-Skript erreichen.

Vielleicht hat hierzu jemand ein paar Gedanken. Was mir durch den Kopf geht: Wenn man denn schon mit seinem 'Handy' auf der Kommandozeile angekommen ist :), müsste man doch auch gleich auf der Kommandozeile umpartitionieren können. Wenn das mit fdisk auf herkömmlichem Weg ginge, wäre das doch der direkteste Weg und ein Tutorial ließe sich dafür evtl. auch schreiben.
Klar geht das, mache ich schon länger so. Ja, ich weiß, dabei wird die PMT (Partition Master Table) nicht mit den geändertern Werten aktualisiert, aber das spielt bei meiner Benutzung keine Rolle.

Die EBR-Sektoren sind per /dev/ebr1 und /dev/ebr2 zugreifbar. Mit einer Root-Shell (Befehl "su") kann man sie folgendermaßen auslesen und beschreiben/flashen:
Code:
echo Sichere original EBRs
dd if=/dev/ebr1 of=/sdcard/ebr1.bak bs=512 count=1
dd if=/dev/ebr2 of=/sdcard/ebr2.bak bs=512 count=1
echo Schreibe neue EBRs
dd if=/sdcard/ebr1.neu of=/dev/ebr1 bs=512 count=1
dd if=/sdcard/ebr2.neu of=/dev/ebr2 bs=512 count=1
echo Neustart...
reboot
"dd" ist der Befehlsname, "if" die Eingabedatei (input file), "of" die Ausgabedatei (output file), "bs" die Blockgröße (block size) und "count" die Anzahl der Blöcke. Die EBRs sind jeweils 512 Byte große Sektoren.

Eine herstellerübergreifende Anleitung zum Umpartitionieren kann es nicht geben, weil es eben nicht bei allen Herstellern gleich funktioniert.
 
Zuletzt bearbeitet:

Ora

®
Ihr dürft dabei nicht vergessen, dass man einem "normalen" Anwender vielleicht noch das Nutzen des SP Flashtool zumuten kann, nicht aber die komplette Linux shell Palette.
Und ohne PMT und Scatter Anpassung, dieser beim nächsten Flashversuch ratlos in die Röhre schaut.
Deshalb habe ich im Sammelthread versucht, max. Unterstützung auf Basis von noch beherrschbaren Werkzeugen zu geben.


mobil via X8
 

N2k1

Well-Known Member
Klar geht das, mache ich schon länger so. Ja, ich weiß, dabei wird die PMT (Partition Master Table) nicht mit den geändertern Werten aktualisiert, aber das spielt bei meiner Benutzung keine Rolle.
Dann vergleiche bei Dir mal /proc/emmc mit /proc/dumchar_info ..
Wirst feststellen, daß das System "verwirrt" ist.

emmc_p7: 001a4c00 00300000 "usrdata"
Hast es schon richtig erkannt, es sind 0x300000 * 0x200 = 0x60000000 = 1610612736 bytes = 1572864 kBytes = 1536 MBytes = 1,5 GBytes ..

@Ora Dein Einwand ist berechtigt - aber @mäusekino und @walter77 scheinen ja fit in der Shell und im HEX_Rechnen zu sein.
Ist dann zwar die Frage, ob das hier im Thread hilft - oder die Sache für "unbedarfte Leser" abschreckend ist (wobei das ja auch wieder hilft, weniger kaputt zu machen).. Aber wir sindohnehin auf Seite 7 .. vielleicht sollte man "am Ende" ein angepinnten TUT-Thread mit Sammlung machen?!

PS: Habe noch immer nicht gefunden, wie ich die PMT mit "Bordmitteln" schreiben kann und festgestellt, daß bei meinem Telefon der BMT-Pool mitten im FAT_Bereich lag, was definitiv nicht richtig sein kann.. (Also wissen die chinesischen Hersteller wohl selbst manchmal nicht so genau, was sie machen)
Lag am Ende der 8 GB - aber ich habe 16 GB.

@walter77 : dein Gerät hat intern 32 GB?!
 

adler123

Member
Ich denke unser Sammelthread ist noch nicht so "verdiskutiert" und hilft den Anfängern durch die Dienstleistung, die wir dort zur Verfügung stellen:)
hallo...ich stell hier noch einmal meine anfrage,da ich ich damit auf einen anderen board ignoriert wurde: ich besitze den s5 clown nr1 s7 oktacore. ist es möglich....und wie.....die partitionen zu löschen und nur eine patition des speichers im gerät zu erstellen, so daß, die externe sd-karte zum "telefonspeicher" wird?....genauso, wie beim galaxy s5..????
 

Baerbel

New Member
Hallo,

hab das ganze mal auf meinem Neken N6 1GB RAM / 16GB ROM durchgespielt, da hier sowohl /data als auch /system voll waren.
Zunächst Backup per Mtk Doid Tools und per CWM und dann bin ich den Schritten unter Post #1 gefolgt.
Für das Patchen habe ich mir ne Excel-Tabelle gezimmert. Geht super! Nur die neuen Größen eingeben und die geänderten Werte für Sektor-Nummer und Größe werden automatisch generiert.
Das hat auch ganz gut funktioniert, nur war dann die interne SD-Karte weg.
Nach dem Weg, wie das EBR2 zu patchen ist hab ich ne Weile gesucht. Hier bin ich fündig geworden http://www.android-hilfe.de/attachments/root-custom-roms-modding-fuer-wiko-darkmoon/279458d1390738352-darkmoon-partitionsgroesse-aendern-ebr-how-.pdf
Jetzt läufts!
Danke für die Anleitung!
 
  • Like
Wertungen: Ora

Ora

®
@Baerbel : Genauso berechne ich auf Wunsch das hier und stelle die erforderlichen gemoddeten EBR1,BBR1 und das angepasste Scatterfile zur Verfügung. Kannst gern Deine 3 Files da hin kopieren und ich nehme die für alle zugänglich in die Tabelle mit auf. Allerdings gibt s selten den Wunsch die Systempartition zu verändern, denn es ist unüblich das System zu erweitern bzw. Anwendungen dort einzufrieren.
 

Baerbel

New Member
@Ora: Na da hab ich wohl die wichtigsten Stellen in den Postings überlesen. Den Sammelthread hab ich vorher nicht entdeckt.
Bei mir hat es gereicht die gepatchten EBR1 und EBR2 zurück zu flashen. Was muss händisch beim Scatter-File angepasst werden?
Alle geänderten/verschobenen Speicherbereiche oder nur die Startaddr. der VFAT Partition?
Dann alle Sektionen mit dem neuen Scatterfile zurück flashen?
Dank und Gruß
Baerbel
 

Ora

®
@Baerbel :
Im Grunde genommen, musst Du die PMT neu schreiben, denn sonst gibt es Inkonsistenzen.
Als das Scatterfile muss mindesten ALLE veränderten Startadressen enthalten.
Der size wird nur genutzt ab Vers. 1.1.1.
Du hast doch auch die Systempartition geändert oder?
Stelle mal den SS des Blockmappings des MTK Droidtools hier rein oder die Inhalte von /proc/dumchar_info und /proc/partitions rein.
 

Baerbel

New Member
@Ora :
Anbei die Infos, die Daten sind nicht konsistent. :(
Die MtkDroidTool-Blockmap sieht aus wie die originale.
Code:
cat /proc/dumchar_info
Part_Name	   Size	StartAddr	   Type	MapTo
preloader	0x0000000000c00000   0x0000000000000000   2   /dev/misc-sd
mbr		  0x0000000000080000   0x0000000000000000   2   /dev/block/mmcblk0
ebr1		 0x0000000000080000   0x0000000000080000   2   /dev/block/mmcblk0p1
pmt		  0x0000000000400000   0x0000000000100000   2   /dev/block/mmcblk0
pro_info	 0x0000000000300000   0x0000000000500000   2   /dev/block/mmcblk0
nvram		0x0000000000500000   0x0000000000800000   2   /dev/block/mmcblk0
protect_f	0x0000000000a00000   0x0000000000d00000   2   /dev/block/mmcblk0p2
protect_s	0x0000000000a00000   0x0000000001700000   2   /dev/block/mmcblk0p3
seccfg	   0x0000000000020000   0x0000000002100000   2   /dev/block/mmcblk0
uboot		0x0000000000060000   0x0000000002120000   2   /dev/block/mmcblk0
bootimg	  0x0000000000600000   0x0000000002180000   2   /dev/block/mmcblk0
recovery	 0x0000000000600000   0x0000000002780000   2   /dev/block/mmcblk0
sec_ro	   0x0000000000600000   0x0000000002d80000   2   /dev/block/mmcblk0p4
misc		 0x0000000000080000   0x0000000003380000   2   /dev/block/mmcblk0
logo		 0x0000000000300000   0x0000000003400000   2   /dev/block/mmcblk0
ebr2		 0x0000000000080000   0x0000000003700000   2   /dev/block/mmcblk0
expdb		0x0000000000a00000   0x0000000003780000   2   /dev/block/mmcblk0
android	  0x0000000028a00000   0x0000000004180000   2   /dev/block/mmcblk0p5
cache		0x0000000007e00000   0x000000002cb80000   2   /dev/block/mmcblk0p6
usrdata	  0x0000000080000000   0x0000000034980000   2   /dev/block/mmcblk0p7
fat		  0x00000002f5200000   0x00000000b4980000   2   /dev/block/mmcblk0p8
bmtpool	  0x0000000001500000   0x00000000ff3f00a8   2   /dev/block/mmcblk0
Part_Name:Partition name you should open;
Size:size of partition
StartAddr:Start Address of partition;
Type:Type of partition(MTD=1,EMMC=2)
MapTo:actual device you operate
root@android:/ # cat /proc/partitions
cat /proc/partitions
major minor  #blocks  name

   7		0	   1254 loop0
   7		1	  18727 loop1
   7		2	   3135 loop2
   7		3	   3135 loop3
   7		4	  21846 loop4
179		0   15363584 mmcblk0
179		1		  1 mmcblk0p1
179		2	  10240 mmcblk0p2
179		3	  10240 mmcblk0p3
179		4	   6144 mmcblk0p4
179		5	1320960 mmcblk0p5
179		6	 129024 mmcblk0p6
179		7	3145728 mmcblk0p7
179		8   10700800 mmcblk0p8
179	   64	   4096 mmcblk0boot1
179	   32	   4096 mmcblk0boot0
179	   96   31166976 mmcblk1
179	   97   31165952 mmcblk1p1
254		0	  18727 dm-0
254		1	   3134 dm-1
254		2	   3134 dm-2
254		3	  21845 dm-3
root@android:/ #
 

Anhänge

gyogyszer

New Member
Hallo
Hat jemand eine Ahnung, wie ich an meinem Lenovo Tablet
Model No. lenovo-S6000, CPU eight 1,5G, Android version: 4.4.2, Baseband Version: MOLY.WR8.W1315.MD.WG.MP.V36.P27, 2014/10/30 14:20, Kernel version: 3.4.67, BuildNo.: S6000-(some chinese sighns)-MT6592, Custom build version, HK-S6000
Den Arbeitsspeicher aufkosten vom Telefonspeicher um 16 GB erweitern kann? Entweder mit Terminal Emulator oder sonst wie.
Wenn es geht bräuchte ich eine detailierte Anleitung.
Danke im Voraus, gyogyszer
 
Oben Unten