Mountpunkt tauschen interner-Speicher/SDcard

H

handyworm

Neues Mitglied
0
Hi, hat jemand Erfahrung damit, wie man bei einem gerooteten Move den Mountpunkt von internem Speicher und SD-Karte tauscht? Konnte bisher leider keine fstab mit Mountpunkten finden. Würde gern aufgrund von Platzproblemen, da die Google Apps immer größer werden und sich nicht mehr updaten lassen den internen Speicher meiden und alles auf SD-Karte ablegen.
 
Ich hab das Phone jetzt nicht zur Hand aber im Kernel müsste doch in der init.rc die mountpoints auch zu setzen sein oder?
 
Hi,

ja da sollten sie auch zu finden sein, aber wenn ich richtig informiert bin müsste ich dafür die Kernel Ramdisk entpacken, Parameter ändern, neu kompilieren und zurückflashen.

Dies wollte ich vermeiden da ich so vertraut nicht mit dem kompilieren bin.

Diese beiden Ansätze sehen vielversprechend aus um init.d support zu aktivieren.

[MOD] Enable init.d scripts support on stock… | Sony Ericsson Xperia Neo, Pro | XDA Forums

[MOD] EZ InitD - init.d the EZ way !! | HTC One S | XDA Forums

dann liesse sich beim boot ein ummount-script ausführen oder direkt mounts2sd nutzen.
 
Das ist kein kompilieren ;) das ist mehr so ein entpacken und wieder zippen :D
Wenn es dich interessiert google mal nach den scripten unpackbootimg.pl und repackbootimg.pl ( darauf basieren die meisten tools, wenn nicht alle)
Hier ist z.b. was recht anwenderfreundliches: [TOOL] Boot.img tools [unpack, repack, ramdi… | Android Development and Hacking | XDA Forums

Das Problem beim init.d support - die scripte dort werden so gut wie zuletzt in der Startroutine ausgeführt - zu diesem Zeitpunkt ist die /data Partition aber schon aktiv und es könnte code von dort geladen worden sein. Wenn du von der internen /data Partition dann auf die "externe" umleitest könnte es zu Fehlern kommen da ja was anderes im Speicher geladen ist als auf der Platte geschrieben.
 
Hi Cynob,

danke für die Links.
Das packen und entpacken der ramdisk sieht mithilfe dieser Skripte auf den ersten Blick gar nicht so schwer aus.
Das könnte ich eventuell hinbekommen.

Hast du das schonmal gemacht?
Die /data und /system Partition von intern auf eine (2048mb)ext2 Partition auf der SD-Karte gemountet? Hab die ext2 Partition ganz am Ende angelegt hinter der fat32 Partition.

Ich vermute mal wenn das mounten nicht hinhaut oder die geänderte ramdisk nicht lesbar ist, habe ich nen Häufchen Elektroschrott?

Macht es Sinn (wegen Platzmangel) noch weitere Partitionen/Folder umzumounten auf SD-Karte?
 
Ja hab ich schon öfters als 1x gemacht :D

Bei der FAT Partition hast du ganz recht - die muss am Anfang auf der SDKarte liegen sonst findet Android sie nicht.
Wenn du am Kernel arbeitest nim entweder Notepad++ oder gleich n Linux - Windows hat n anderen Zeilenumbruch, das zerschiesst dir sonst alles ;) ( merkt man auch daran das alles im Windows Texteditor in einer langen schlange dargestellt wird).

Mach vorher mit nem Custom recovery einfach ein Backup von deinem boot.img - falls das Gerät nichtmehr starten sollte ( aus welchen Gründen auch immer) kannst du das dann über das recovery zurückspielen - also Elektroschrott wirds so schnell nicht geben ;)

Aber das /system würde ich dort lassen wo es ist und nur /data umziehen lassen. Weil: der Stromverbrauch wird beim dauernden benutzen der SDKarte in die höhe schnellen! - und da das /system eigentlich dauernd am rödeln ist wirst du so nicht wirklich freude daran haben.
 
Hi,

dann wäre das vorgehen quasi:

1. im cwm backup von boot.img erstellen
2. ramdisk aus einem cwm full backup extrahieren
3. ramdisk mit skripten entpacken
4. mountpunkte in entpackter ramdisk ändern zu /dev/block/vold/179:2
5. ramdisk mit skripten packen

6. neue ramdisk über cwm flashen und hoffen das alles klappt :)

Probleme:
5.1 kopieren der /data Partition auf die sd-karte
(hab ich weder mit tar noch über normales kopieren hinbekommen, da jede menge symlinks dort liegen und sogar welche zur sd-karte und somit quasi die ganze sd-karte mit kopiert wird)
Wie hast du das hinbekommen? Kann man die partitionen mit cwm sichern und auf die neue sd-karten partition resized zurückspielen?


Danke für den Tipp die System-Partition nicht zu verschieben, aber ich denke da habe ich keine Wahl. Gerade die riesigen Google Apps nisten sich gern in /System ein.
 
Ich würd schauen wo der mountpoint des boot.img liegt.
Dann mit:

dd if=/dev/block/mmcblk0p01 of=/sdcard/boot.img

Das boot.img extrahieren. Daraufhin alles entpacken mit den Scripten/Tools und bearbeiten. Danach wieder alles packen > das boot.img wieder auf die SDKarte des Handys und mit:

dd if=/sdcard/newboot.img of=/dev/block/mmcblk0p01

zurück auf die Partition schreiben.

Mit diesem dd befehl lässt sich auch ne bitweise Kopie von /data erstellen. Macht halt ne 1:1 Kopie der Partition - wenn danach auf der SDKarte die /data Partition zu klein ist - unter Linux gibts gparted (kp. obs da auch was für Windows gibt, aber mit diesem lässt sich die Partition wieder resizen wenns nötig ist.
 
Hi Cynob,

ich glaube das habe ich soweit hinbekommen.
Beim sichern der boot.img userdata.img und system.img bin ich recht zuversichtlich das es geklappt hat.

Aber beim dden der Images auf die SD-Karte bin ich da nicht so sicher.

Meine SD-Karte:
1.Partition fat32 (mmcblk0p1)
2.Partition ext2 (mmcblk0p2)
3.Partition ext2 (mmcblk0p3)

Ausgeführt habe ich:

dd if=/sdcard/userdata.img of=/dev/block/mmcblk0p2
dd if=/sdcard/system.img of=/dev/block/mmcblk0p3
Wurde ohne Fehler ausgeführt, hat auch 90 und 120 sec gedauert

Nun schaffe ich es aber nicht diese neuen Partitionen auf mmcblk0p2 und mmcblk0p3 zu mounten.

Am PC werden die neuen Partitionen mit ursprünglicher Größe(der erstellten ext2) und unbekanntem Filesystem angezeigt.

Haben die neuen Partitionen yaffs Dateisystem und werden deshalb am PC nicht korrekt angeuzeigt?
 
Also du hast auf der SD Karte ne ext Partition - das kann windows nicht lesen. Deswegen wirds als unbekannt dort dargestellt. Kannst du die neuen Partitionen auf dem androiden mounten indem du einen leeren Ordner in /mount oder /mnt erzeugst und die neuen Partitionen dorthin einbindest?
 
Hi Cynob,

die mit dem dd userdata.img überschriebene ext2 Partition habe ich hinterher natürlich nicht versucht an einem Windows Rechner zu lesen.

Ich habe es mit dem Ubuntu Partionseditor versucht. Basiert wohl auf gparted.

Zuvor konnte ich die leeren ext2 Partitionen dort auch mounten und sie wurden korrekt erkannt.

Nach dem DD userdata.img flash auf die ext2 Partition kann ich diese allerdings nicht mehr mounten und der Partition Editor erkennt die Partition mit unbekanntem Dateisystem nicht mehr als ext2.

Die in die userdata.img gesicherte userdata Partition war nen yaffs2 Dateisystem, vermutlich ist beim dden der userdata.img auf die ext2 diese in yaffs2 umgewandelt worden.
Wie hast du dieses Problem gelöst?
 
Hi Cynob,

glaube ich habe das kopieren der Partitionen endlich hinbekommen.

Habe ein altes cwm Image von data und system gefunden welches mit unyaffs zu entpacken war.


Nun muss ich wohl mit den Perl Skripten noch die boot.img entpacken.
Mal schauen was ich dort vorfinde.
 
Hi Cynob,

ich habe denk ich alles soweit hinbekommen, hab mir auch direkt init.d support mit eingerichtet.

Beim neu packen des boot.img mit mkbootimg habe ich Daten des original boot.img verwendet:

original:
PAGE SIZE: 2048
BASE ADDRESS: 0x10200000
RAMDISK ADDRESS: 0x11200000
CMDLINE: 'console=ttyDCC0 androidboot.hardware=huawei'

neu-gepackt:
PAGE SIZE: 2048
BASE ADDRESS: 0x10200000
RAMDISK ADDRESS: 0x11200000
CMDLINE: 'console=ttyDCC0 androidboot.hardware=huawei'

Das nun fertig gepackte Image ist allerdings erheblich kleiner als das original.

Müsste es nicht eigentlich etwas größer sein?
Ich habe doch einige Zeilen in der init.rc hinzugefügt.

original ca 5mb
neu-gepackt ca 3,2mb

War dies bei dir auch so?
 
Ja das liegt daran das wenn du ein image von der boot Partition machst du auch die 0en mitnimmst ( also der leere Platz auf der Partition wird mitkopiert)
 
habs hinbekommen flashen hat wie gewünscht funktioniert.

Hab nun reichlich Platz unter /data und /system

Mal schauen ob man aus dem brachliegenden internen Speicher eine große Ramdisk machen kann.

Danke für deine Hilfe
 

Ähnliche Themen

K
Antworten
131
Aufrufe
24.180
andro-eddi
andro-eddi
K
Antworten
1
Aufrufe
2.476
medianer
M
No_User_Manual
Antworten
4
Aufrufe
2.287
antaril
antaril
Zurück
Oben Unten