mojo
Fortgeschrittenes Mitglied
- 66
Howto Apps2SD auf Milestone 2.0/2.0.1/2.1
Bentötigt wird ein Milestone mit Speicherkarte, root Zugriff, funktionierendem adb und busybox (bei mir in /data/busybox).
Ich empfehle vorher ein nandroid Backup und Geduld bei den Befehlen.
1) Die Datei aus dem Anhang dieses Posts entpacken und zusammen mit der ext2.ko aus dem Anhang von newtons Post auf die Speicherkarte kopieren.
https://www.android-hilfe.de/forum/...artition-nutzen.15044-page-2.html#post-178776
2) Alle Dateien der Speicherkarte sichern (auch das nandroid-backup)
Speicherkarte vorbereiten, so dass nachher in /dev/block/mmcblk0p1 eine formatierte Fat Partition ist
und in /dev/block/mmcblk0p2 eine ebenfalls formatierte ext2. Wer das alleine kann, kann diesen Abschnitt überspringen,
ansonsten hier eine Anleitung für die man keinen Kartenleser braucht, dafür aber Linux (oder Cygwin...)
2.1) Milestone an den PC anschliessen, mit USB Modus "Verwaltung der Speicherkarte"
Speicherkarte unmounten, falls sie automatisch vom PC gemountet wurde.
Ich gehe im Folgenden davon aus, dass die Speicherkarte in /dev/sdb liegt.
Jetzt die Partitionen anlegen mit (am lokalen PC als root eingeben): fdisk /dev/sdb
Hier meine Befehle mit kurzen Erklärungen, immer mit Enter bestätigen:
(Alte Partition löschen)
d
(Neue Partition anlegen)
n
p
1
enter
+7000M (so groß wird nachher die normale SD Partition, wer eine 16 GB Karte hat, kann hier natürlich einen größeren Wert eingeben)
(Als FAT deklarieren)
t
b
(Neue Linux Partition anlegen (sie belegt den Rest der Karte), da liegen nachher die apps drauf)
n
p
2
enter
enter
Bei Problemen kann man sich mit m die Befehle ausgeben lassen.
Jetzt mit p die Partitionen anzeigen lassen, bei mir sieht das Ganze so aus:
Dann mit w schreiben und beenden
Jetzt muss alles Formatiert werden (auch am PC eingeben):
Soweit so gut, jetzt das Milestone wider auf USB Verbindung "Keine" stellen.
Am Milestone sollte die Speicherkarte wieder erkannt werden, ohne dass irgendwas formatiert werden muss.
Die SD ist leer, und etwas kleiner als vorher (ich hab jetzt 7485MB frei).
Jetzt können wir den Inhalt unserer Sicherung der SD wieder zurück spielen (auf dem PC nicht löschen, Backups sind immer gut)
Das können wir aber auch später machen.
3) [Jetzt gemacht wird: Linux Partition mounten, Programme verschieben, Symlinks setzten]
Ab jetzt werden alle Befehle auf dem Gerät ausgeführt.
Dafür am PC mit adb auf das Milestone verbinden und Root rechte erlangen:
Jetzt das ext2 Kernelmodul laden (natürlich vorher auf die SD kopieren, falls noch nicht alles zurück gespielt wurde),
dann einen neuen Ordner erstellen, und die Linux Partition dort hin mounten:
Jetzt alle apps auf die neue Partiton kopieren und löschen.
Achtung: Es kann vorkommen, dass die Apps beim ersten Kopieren aus irgendeinem Grund nicht auf der SD Karte bleiben und nach einem Neustart weg sind.
Daher besser zusätzlich nochmal auf die FAT Partition der SD kopieren.
Einmal aus und neu einhängen:
Es sollten keine Programme mehr auf dem Milestone startbar sein.
Es kann sein, dass einige Programme auf dem Milestone crashen, das war zu erwarten.
Jetzt den Symlink setzen, vorher prüfen, ob die Apps auf der SD sind:
Testen und siehe da: alle Programme starten wieder. Von der SD.
Soweit so gut, jetzt könnte man es benutzen.
Wer das Milestone jetzt neu startet wird sehen, dass er bis zum Desktop kommt, da nach aber lauter Fehler sehen.
Das kann man auch ausprobieren, da passiert nix.
Damit alles wieder geht, müssen diese Befehle auf dem Gerät ausgeführt werden, die ab jetzt bei jedem Start ausgeführt werden müssen:
4) Die Befehle automatisch starten lassen.
Dafür /system beschreibbar machen, mot_boot_mode umbenennen, und das das Script aus dem Anhang dieses Posts
nach /system/bin kopieren (vorher natürlich auf die SD, Rechte vergeben:
6) Neustarten und ausprobieren.
Die Widgets werden anfangs nicht richtig laden, und auch das Startmenü braucht etwas länger.
Die fehlerhaften Widgets müssen entfernt und nochmal von Hand hinzugefügt werden,
ab dann gehen sie auch beim nächsten Start.
Programme können normal vom Market installiert oder gelöscht werden, sie landen auf der SD.
Wenn ihr ab jetzt den USB Modus auf "Verwaltung der Speicherkarte" stellt, könnten Apps crashen.
Apropos Crashen: Ein Paar Apps starten nicht mehr.
Nach meinen Erfahrungen alle, die GPS und/oder Internetzugriff brauchen.
Bis jetzt konnte ich das Problem bei allen Apps durch Löschen und Neuinstallieren beheben,
aber vielleicht kennt jemand von euch noch einen besseren Weg.
7) Wenn alle Programme auf einmal weg sind oder nicht mehr starten keine Angst,
wenn man einen normalen /data/app Ordner erstellt und die Apps wieder reinkopiert geht alles wieder.
Wer will, kann auch erstmal alles von /data/app auf die SD sichern und auf den PC kopieren.
Wenn das Milestone nicht mehr startet, arbeitet der Wrapper nicht richtig.
Dann entweder ein nandroid-backup zurückspielen und alles nochmal machen,
oder mittels ADBRecovery über adb auf das Gerät zugreifen, /system mounten,
den Wrapper /system/bin/mot_boot_mode löschen und die alte Datei zürck umbenennen:
mv /system/bin/mot_boot_mode.bin /system/bin/mot/boot_mode
Dann startet er wieder.
Ich bitte diejenigen, die die Befehle kennen und wissen was passiert,
das Howto auszuprobieren und mir Feedback zu geben.
Ich habe momentan nicht so viel Zeit, kann also bei Problemen nur bedingt helfen.
Für diejenigen, die hier noch keinen Account haben,
hier der Inhalt des Scripts aus dem Anhang:
Übrigends:
nandroid-mobile.sh wird die apps-Partition auf der SD Karte nicht von alleine Backupen.
Um diese muss man sich also selbst kümmern.
Nach dem Ausführen von 'nandroid-mobile.sh --backup' kann man die apps-Partition so sichern:
Damit wird die ganze Partition in eine Datei auf den normalen Bereich der SD kopiert,
diese kann man normal auf den PC kopieren, so wie den nandroid-Backup Ordner auch.
Das kann mehrere Minuten dauern und es muss auf der SD noch genup Platz für die apps-Partition sein, nicht nur für den dort belegten Speicher!
Zum Zurückspielen erst 'nandroid-mobile.sh --restore' und dann:
Achtung: der dd-Befehlt ist ziemlich 'grob'.
'if' ist das input-file und 'of' das output-file.
Das Output File wird einfach überschrieben, egal was da vorher war,
und egal ob da überhaupt genug Platz ist.
Es ist also nicht möglich, ein apps2sd.img wiederherzustellen,
wenn man nach dem Sichern die SD nochmal neu partitioniert und die Apps Partition verkleinert hat!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Teil 2 - Apps2SD wider rückgängig machen.
Wer Apps2SD (zum Beispiel vor dem Update auf 2.1) wieder loswerden möchte,
kann dieser Anleitung folgen.
Ich gehe im Folgenden davon aus, dass Apps2SD mit den obigen Befehlen
eingerichtet wurde. Wer oben von der Anleitung abgewichen ist
muss auch jetzt seine Befehle anpassen.
1) Wrapper entfernen
Jetzt muss das Shellscript angezeigt werden.
Wenn jetzt Datenmüll kommt nicht weitermachen!
2) Apps wieder auf den internen Speicher kopieren:
In der Zeile die jetzt erscheint muss sichtbar sein, dass /data/app ein Link ist.
Am Ende sollte also etwas in der Art "app -> /data/sdapp" stehen.
Wenn das nicht da steht nicht weitermachen!
Jetzt kontrollieren ob intern genug Platz frei ist.
In der Zeile für /data (Spalte: Mounted on) muss bei dem freien Speicher mindestens so viel Platz angzeigt werden,
wie auf der apps-Partition (auf der SD) belegt ist.
Wenn das erfüllt ist, geht es weiter, sonst müssen Programme gelöscht werden.
Also weiter:
Milestone neu starten.
Ab jetzt werden die Programme wieder vom internen Speicher geladen.
Dabei kann es wieder zu Abstürzen und Widget Problemen kommen,
neu Installation der betroffenen Apps behebt auch hier das Problem.
Da das System nicht mehr auf den /data/sdapp-Ordner zugreift,
können wir diesen der Ordnung halber löschen.
Nachfolgender Befehl sollte ohne Probleme gehen,
da die SD-Partition nicht mehr gemountet wird.
Wenn nicht, ist möglicherweise der Wrapper noch aktiv,
oder es wurden von Hand Dateien in den Ordner kopiert.
Jetzt könnten wir ein Update installieren und da nach, ohne die Speicherkarte neu
partitionieren zu müssen, Apps2SD wieder installieren.
Wer die SD wieder auf den alten Stand haben will,
kopiert erst alles auf den PC und geht dann auf
Einstellungen -> SD Karte -> SD-Karte entnehmen , SD-Karte formatieren.
Dabei wird meiner Erfahrung nach die ursprüngliche Partitionstabelle wieder angelegt.
Bentötigt wird ein Milestone mit Speicherkarte, root Zugriff, funktionierendem adb und busybox (bei mir in /data/busybox).
Ich empfehle vorher ein nandroid Backup und Geduld bei den Befehlen.
1) Die Datei aus dem Anhang dieses Posts entpacken und zusammen mit der ext2.ko aus dem Anhang von newtons Post auf die Speicherkarte kopieren.
https://www.android-hilfe.de/forum/...artition-nutzen.15044-page-2.html#post-178776
2) Alle Dateien der Speicherkarte sichern (auch das nandroid-backup)
Speicherkarte vorbereiten, so dass nachher in /dev/block/mmcblk0p1 eine formatierte Fat Partition ist
und in /dev/block/mmcblk0p2 eine ebenfalls formatierte ext2. Wer das alleine kann, kann diesen Abschnitt überspringen,
ansonsten hier eine Anleitung für die man keinen Kartenleser braucht, dafür aber Linux (oder Cygwin...)
2.1) Milestone an den PC anschliessen, mit USB Modus "Verwaltung der Speicherkarte"
Speicherkarte unmounten, falls sie automatisch vom PC gemountet wurde.
Ich gehe im Folgenden davon aus, dass die Speicherkarte in /dev/sdb liegt.
Jetzt die Partitionen anlegen mit (am lokalen PC als root eingeben): fdisk /dev/sdb
Hier meine Befehle mit kurzen Erklärungen, immer mit Enter bestätigen:
(Alte Partition löschen)
d
(Neue Partition anlegen)
n
p
1
enter
+7000M (so groß wird nachher die normale SD Partition, wer eine 16 GB Karte hat, kann hier natürlich einen größeren Wert eingeben)
(Als FAT deklarieren)
t
b
(Neue Linux Partition anlegen (sie belegt den Rest der Karte), da liegen nachher die apps drauf)
n
p
2
enter
enter
Bei Problemen kann man sich mit m die Befehle ausgeben lassen.
Jetzt mit p die Partitionen anzeigen lassen, bei mir sieht das Ganze so aus:
Dann mit w schreiben und beenden
Code:
Command (m for help): p
Disk mmcblk0: 7948 MB, 7948206080 bytes
96 heads, 22 sectors/track, 7350 cylinders
Units = cylinders of 2112 * 512 = 1081344 bytes
Device Boot Start End Blocks Id System
mmcblk0p1 1 7001 7393045 b Win95 FAT32
mmcblk0p2 7002 7350 368544 83 Linux
Code:
mkfs.msdos /dev/sdb1
mkfs.ext2 /dev/sdb2
tune2fs -c 0 /dev/sdb2
Am Milestone sollte die Speicherkarte wieder erkannt werden, ohne dass irgendwas formatiert werden muss.
Die SD ist leer, und etwas kleiner als vorher (ich hab jetzt 7485MB frei).
Jetzt können wir den Inhalt unserer Sicherung der SD wieder zurück spielen (auf dem PC nicht löschen, Backups sind immer gut)
Das können wir aber auch später machen.
3) [Jetzt gemacht wird: Linux Partition mounten, Programme verschieben, Symlinks setzten]
Ab jetzt werden alle Befehle auf dem Gerät ausgeführt.
Dafür am PC mit adb auf das Milestone verbinden und Root rechte erlangen:
Code:
adb shell
su
dann einen neuen Ordner erstellen, und die Linux Partition dort hin mounten:
Code:
cp /sdcard/ext2.ko /data/ext2.ko
insmod /data/ext2.ko
mkdir /data/sdapp
mount -t ext2 /dev/block/mmcblk0p2 /data/sdapp
Achtung: Es kann vorkommen, dass die Apps beim ersten Kopieren aus irgendeinem Grund nicht auf der SD Karte bleiben und nach einem Neustart weg sind.
Daher besser zusätzlich nochmal auf die FAT Partition der SD kopieren.
Code:
cp /data/app/* /data/sdapp/
mkdir /sdcard/sicherung
cp /data/app/* /sdcard/sicherung
rm -r /data/app
Code:
umount /data/sdapp
mount -t ext2 /dev/block/mmcblk0p2 /data/sdapp
Es kann sein, dass einige Programme auf dem Milestone crashen, das war zu erwarten.
Jetzt den Symlink setzen, vorher prüfen, ob die Apps auf der SD sind:
Code:
ls /data/sdapp
ln -s /data/sdapp /data/app
chmod 644 /data/sdapp/*
/data/busybox/chown -h 1000:1000 /data/app
/data/busybox/chown 1000:1000 /data/sdapp/*
/data/busybox/chown 1000:1000 /data/sdapp
Soweit so gut, jetzt könnte man es benutzen.
Wer das Milestone jetzt neu startet wird sehen, dass er bis zum Desktop kommt, da nach aber lauter Fehler sehen.
Das kann man auch ausprobieren, da passiert nix.
Damit alles wieder geht, müssen diese Befehle auf dem Gerät ausgeführt werden, die ab jetzt bei jedem Start ausgeführt werden müssen:
Code:
insmod /data/ext2.ko
mount -t ext2 /dev/block/mmcblk0p2 /data/sdapp
Dafür /system beschreibbar machen, mot_boot_mode umbenennen, und das das Script aus dem Anhang dieses Posts
nach /system/bin kopieren (vorher natürlich auf die SD, Rechte vergeben:
Code:
mount -o remount,rw / /system
mv /system/bin/mot_boot_mode /system/bin/mot_boot_mode.bin
cp /sdcard/mot_boot_mode_script /system/bin/mot_boot_mode
chmod 755 /system/bin/mot_boot_mode
Die Widgets werden anfangs nicht richtig laden, und auch das Startmenü braucht etwas länger.
Die fehlerhaften Widgets müssen entfernt und nochmal von Hand hinzugefügt werden,
ab dann gehen sie auch beim nächsten Start.
Programme können normal vom Market installiert oder gelöscht werden, sie landen auf der SD.
Wenn ihr ab jetzt den USB Modus auf "Verwaltung der Speicherkarte" stellt, könnten Apps crashen.
Apropos Crashen: Ein Paar Apps starten nicht mehr.
Nach meinen Erfahrungen alle, die GPS und/oder Internetzugriff brauchen.
Bis jetzt konnte ich das Problem bei allen Apps durch Löschen und Neuinstallieren beheben,
aber vielleicht kennt jemand von euch noch einen besseren Weg.
7) Wenn alle Programme auf einmal weg sind oder nicht mehr starten keine Angst,
wenn man einen normalen /data/app Ordner erstellt und die Apps wieder reinkopiert geht alles wieder.
Wer will, kann auch erstmal alles von /data/app auf die SD sichern und auf den PC kopieren.
Wenn das Milestone nicht mehr startet, arbeitet der Wrapper nicht richtig.
Dann entweder ein nandroid-backup zurückspielen und alles nochmal machen,
oder mittels ADBRecovery über adb auf das Gerät zugreifen, /system mounten,
den Wrapper /system/bin/mot_boot_mode löschen und die alte Datei zürck umbenennen:
mv /system/bin/mot_boot_mode.bin /system/bin/mot/boot_mode
Dann startet er wieder.
Ich bitte diejenigen, die die Befehle kennen und wissen was passiert,
das Howto auszuprobieren und mir Feedback zu geben.
Ich habe momentan nicht so viel Zeit, kann also bei Problemen nur bedingt helfen.
Für diejenigen, die hier noch keinen Account haben,
hier der Inhalt des Scripts aus dem Anhang:
Code:
#!/system/bin/sh
export PATH=/system/bin:$PATH
mot_boot_mode.bin
insmod /data/ext2.ko
mount -t ext2 /dev/block/mmcblk0p2 /data/sdapp
nandroid-mobile.sh wird die apps-Partition auf der SD Karte nicht von alleine Backupen.
Um diese muss man sich also selbst kümmern.
Nach dem Ausführen von 'nandroid-mobile.sh --backup' kann man die apps-Partition so sichern:
Code:
mount /sdcard
dd if=/dev/block/mmcblk0p2 of=/sdcard/apps2sd.img
diese kann man normal auf den PC kopieren, so wie den nandroid-Backup Ordner auch.
Das kann mehrere Minuten dauern und es muss auf der SD noch genup Platz für die apps-Partition sein, nicht nur für den dort belegten Speicher!
Zum Zurückspielen erst 'nandroid-mobile.sh --restore' und dann:
Code:
mount /sdcard
dd if=/sdcard/apps2sd.img of=/dev/block/mmcblk0p2
'if' ist das input-file und 'of' das output-file.
Das Output File wird einfach überschrieben, egal was da vorher war,
und egal ob da überhaupt genug Platz ist.
Es ist also nicht möglich, ein apps2sd.img wiederherzustellen,
wenn man nach dem Sichern die SD nochmal neu partitioniert und die Apps Partition verkleinert hat!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Teil 2 - Apps2SD wider rückgängig machen.
Wer Apps2SD (zum Beispiel vor dem Update auf 2.1) wieder loswerden möchte,
kann dieser Anleitung folgen.
Ich gehe im Folgenden davon aus, dass Apps2SD mit den obigen Befehlen
eingerichtet wurde. Wer oben von der Anleitung abgewichen ist
muss auch jetzt seine Befehle anpassen.
1) Wrapper entfernen
Code:
adb shell
su
mount -o remount,rw / /system
cat /system/bin/mot_boot_mode
Wenn jetzt Datenmüll kommt nicht weitermachen!
Code:
rm /system/bin/mot_boot_mode
mv /system/bin/mot_boot_mode.bin /system/bin/mot_boot_mode
Code:
ls -l /data/app
Am Ende sollte also etwas in der Art "app -> /data/sdapp" stehen.
Wenn das nicht da steht nicht weitermachen!
Code:
rm /data/app
mkdir /data/app
Code:
df -h
wie auf der apps-Partition (auf der SD) belegt ist.
Wenn das erfüllt ist, geht es weiter, sonst müssen Programme gelöscht werden.
Also weiter:
Code:
cp /data/sdapp/* /data/app
chmod 644 /data/app/*
/data/busybox/chown 1000:1000 /data/app/*
/data/busybox/chown 1000:1000 /data/app
Ab jetzt werden die Programme wieder vom internen Speicher geladen.
Dabei kann es wieder zu Abstürzen und Widget Problemen kommen,
neu Installation der betroffenen Apps behebt auch hier das Problem.
Da das System nicht mehr auf den /data/sdapp-Ordner zugreift,
können wir diesen der Ordnung halber löschen.
Nachfolgender Befehl sollte ohne Probleme gehen,
da die SD-Partition nicht mehr gemountet wird.
Wenn nicht, ist möglicherweise der Wrapper noch aktiv,
oder es wurden von Hand Dateien in den Ordner kopiert.
Code:
rmdir /data/sdapp
partitionieren zu müssen, Apps2SD wieder installieren.
Wer die SD wieder auf den alten Stand haben will,
kopiert erst alles auf den PC und geht dann auf
Einstellungen -> SD Karte -> SD-Karte entnehmen , SD-Karte formatieren.
Dabei wird meiner Erfahrung nach die ursprüngliche Partitionstabelle wieder angelegt.
Anhänge
Zuletzt bearbeitet: