[How_To] Ext. SD Card mit Root besser nutzen! - Sony Tablet S

obicom

obicom

Stammgast
202
Das Problem:
Wir kennen ja alles das Problem mit der externen SD Karte unter Honeycomb, (/mnt/sdcard2) also das dort abgelegte Medien Dateien nicht gescannt werden und somit nicht in den Sony Musik und Video Player Bibliotheken angezeigt werden. Sony nutzt hierfür das Transfer Tool. Warum verstehe ich bis heute nicht. :cursing:

Die Idee:
Wenn ich die Ordner Fotos/Video/Music unter '/mnt/sdcard2' anlegen würde, und den Inhalt der Ordner in die korrespondierenden Ordner auf der externen SD Karte, nach jedem Neustart, automatisch mounten könnte, dann wäre das oben beschriebenen Problem gelöst und der Transfer Prozess wäre überflüssig. :drool:

Vorteile dieser Änderung:
1. Alle Bilder, Videos und Musik auf der externen SD Karte sind sofort in den Playern verfügbar
2. Der Transfer Prozess wird überflüssig
3. Bei einer USB Verbindung zum PC habe ich nun über den Ordner externel_sd zugriff auf die externe SD Karte. Ohne diesen Mod nur auf die interne Karte
4. Mir stehen jetzt die vollen 32Gb meiner Class10 SD Karte für Medien zur Verfügung und der interne Speicher kann nun komplett für Spiele und andere Dinge genutzt werden (DRM Videos z.B.)
5. Ich hab wieder viel gelernt und bin glücklich. ;-)

Eins vorweg !!!
Ich bin für keinerlei Schäden oder sonstiges haftbar zu machen, wenn ich euer Gerät brickt oder sonst wie zerstört! Alles geschieht auf eure eigene Gefahr. Folgt bitte der Anleitung hier ->
https://www.android-hilfe.de/forum/...or-dem-rooten-lesen-sony-tablet-s.203862.html
und schützt euch auf dem dort beschriebenen Weg !!

Die Lösung:
Zuerst mal habe ich mir überlegt, wie man das mit dem mounten lösen könnte. Dieser Schritt war recht einfach. Man erstellt halt ein Skript für eine App wie "Scripter" oder gibt den Befehl halt per adb oder einem Terminal Emulator ein. Dies ist dann nach jedem Neustart zu wiederholen. Der benötigte mount Befehl dazu lautet:

mount -o bind /mnt/sdcard2/xxx /mnt/sdcard/xxx
Das war aber erst mal nur die halbe Miete. Ich wollte ja, dass das automatisch bei jedem Neustart erfolgt und keinen manuellen Aufwand benötigt. Also musste ein Weg gefunden werden, ein Skript bei jedem Reboot als "Autostart" ausgeführt wird. Dafür gibt es unter Linux den init.d Ordner, aber das wurde auf dem Tablet S leider nicht unterstützt. :mad:

Dann bin ich hierauf aufmerksam geworden:

[ADDON] Startup scripts support (init.d support) for Stock ROM/Kernel - xda-developers

Da unser Tablet das Ausführen einer Update.zip über das Recovery nicht unterstützt, musste ich erst mal den Inhalt analysieren und manuell über adb "step by step" ausführen. Wer sich ein bisschen auskennt, sollte das auch hinbekommen.

Ich habe dazu mal ein eigenes [HOW_TO] geschrieben, das ihr hier finden könnt:
https://www.android-hilfe.de/forum/...-use-init-d-support-sony-tablet-s.205375.html

Als der Schritt mit "init.d" lief, war der Rest recht einfach.
Hab jetzt ein "AutoMount Skript" im "init.d" Ordner, das bei jedem Neustart ausgeführt wird.

Hier nun den Inhalt meines "10automount" Skripts im init.d Ordner:

Habe jetzt also drei Ordner auf der ext. SD Karte Angelegt: Fotos/Video/Music
Dann habe ich alle Dateien aus den korrespondierenden Ordner der internen SD Karte, in die Ordner auf der externen Sd Karte verschoben, so das diese danach auf der internen leer waren.

Dann habe ich das '10automount' entsprechend erstellt:


#!/system/bin/sh
sleep 75
mount -o bind /mnt/sdcard2/Music /mnt/sdcard/Music
mount -o bind /mnt/sdcard2/Fotos /mnt/sdcard/Pictures
mount -o bind /mnt/sdcard2/Video /mnt/sdcard/VIDEO
Ich hoffe, ihr habt teilweise verstanden, was ich hier erzähle. :rolleyes2:
Wer etwas firm in der Materie ist, sollte mein Vorgehen nachvollziehen können. Ansonsten halt hier fragen. :confused2:
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: mikajo, seekape und obiwan
Hallo obicom,

ich habs mal versucht
cd /mnt/sdcard
ln -s /mnt/sdcard2 sdcard2

funktioniert nicht.
Fehlermeldung: link failed Operation not supported on transport endpoint

Gruß Jan
 
  • Danke
Reaktionen: obicom
hmmm ... ok, danke ...
die Fehlermeldung ist mir zwar nicht ganz klar, wird aber wohl am FAT32 liegen, wie oben vermutet. Es können wohl keine sym. links von FAT32 gesetzt werden. :-(

Was meinst du, könnte das über ein "ummounten" funktionieren, in dem man /mnt/sdcard2 unmountet und dann einen Ordner /mnt/sdcard/sd-ext/ erstellt und das Device dort hin mountet?

-- Edit --

Hier mal der Inhalt der vold.fstab:

## Vold 2.0 fstab for nbx03

#######################
## Regular device mount
##
## Format: dev_mount <label> <mount_point> <part> <sysfs_path1...>
## label - Label for the volume
## mount_point - Where the volume will be mounted
## part - Partition # (1 based), or 'auto' for first usable partition.
## <sysfs_path> - List of sysfs paths to source devices
######################
#dev_mount sdcard /mnt/sdcard2 auto /devices/platform/sdhci-tegra.2/mmc_host/mmc1
#dev_mount usbdrive /mnt/usbdrive auto /devices/platform/tegra-ehci.2/usb2
# Mounts the first usable partition of the specified device
dev_mount sdcard /mnt/sdcard 11 /devices/platform/sdhci-tegra.3/mmc_host/mmc0

-- Edit2 --

Ich glaub, jetzt hab ich die richtige Idee, ich hab die Datei svold.fstab gefunden, in der steht:

## SVold 1.0

#######################
## Regular device mount
##
## Format: edev_mount <label> <mount_point> <dtype> <part> <sysfs_path1...>
## label - Label for the volume
## mount_point - Where the volume will be mounted
## dtype - Device type
## part - Partition # (1 based), or 'auto' for first usable partition.
## <sysfs_path> - List of sysfs paths to source devices
######################

edev_mount sdcard2 /mnt/sdcard2 sd auto /devices/platform/sdhci-tegra.2/mmc_host/mmc1
edev_mount usbdisk1 /mnt/usbdisk1 usb auto /devices/platform/tegra-ehci
edev_mount usbdisk2 /mnt/usbdisk2 usb auto /devices/platform/tegra-ehci
edev_mount usbdisk3 /mnt/usbdisk3 usb auto /devices/platform/tegra-ehci
edev_mount usbdisk4 /mnt/usbdisk4 usb auto /devices/platform/tegra-ehci
edev_mount usbdisk5 /mnt/usbdisk5 usb auto /devices/platform/tegra-ehci
edev_mount usbdisk6 /mnt/usbdisk6 usb auto /devices/platform/tegra-ehci
edev_mount usbdisk7 /mnt/usbdisk7 usb auto /devices/platform/tegra-ehci
edev_mount usbdisk8 /mnt/usbdisk8 usb auto /devices/platform/tegra-ehci

Aus meiner Sicht müsste man hier doch nur die erste Zeile ändern auf:

edev_mount sdcard2 /mnt/sdcard/external_sd sd auto /devices/platform/sdhci-tegra.2/mmc_host/mmc1

wenn man vorher unter /mnt/sdcard den Ordner ./external_sd angelegt hat.

Sehe ich das richtig und was kann im schlimmsten Fall passieren?
 
Zuletzt bearbeitet:
Ich hab jetzt stundenlang versucht über adb die ext. Sd Karte mit unmount vom System zu trennen um sie dann wieder mit mount unter /mnt/sdcrad/external_sd einzuhängen, leider ohne Erfolg, was aber bestimmt daran liegt, das ich mich mit Linux nicht wirklich so gut auskenne. Raus bekommen hab ich, das das Device wohl mmcblk1p1 ist. Trotzdem bekomme ich bei jedem Unmount Versuch ein unmount failed zurück. Apps wie "Drive Mount" schaffen das, aber leider kann man da keinen Pfad vorgeben, so das es mit der App immer unter /mnt/mmcblk1p1 gemountet wird.

Wer kennt sich aus und kann mir mal ein paar Vorschläge machen, ich ich das beschriebene hin bekommen könnte?
 
Also ich hab ne 50% Lösung erreicht ...

mit folgendem Befehl über die adb shell konnte ich das Ziel, das ich am Anfang des Threads beschrieben hatte, erreichen:

#su
#mkdir -p /mnt/sdcard/external_sd
#mount -o bind /mnt/sdcard2 /mnt/sdcard/external_sd
Mit dem Befehl wurde mir der Inhalt der externen SD in das Verzeichnis /mnt/sdcard(external_sd gemountet und steht somit als Inhalt der internen SD Karte zur Verfügung.

Somit erkennt nun der Musik- und Video Player die Dateien, die auf der ext. Karte liegen und nimmt diese in seine Bibliothek mit auf.

Das ganze ist halt nur noch nicht permanent, also nach einem Reboot der Tablets wieder weg und muss dann über adb shell erneut eingegeben werden.

Jetzt könnte man z.B. mit der App Skripter das auch ohne PC und adb erledigen. Noch besser wäre natürlich, man könnte das in eine Datei wie /ect/init.d schreiben, nur die scheint es auf dem Tablet S nicht zu geben.

Der Inhalt des Scripter Skripts sieht dann so aus: (Ordner /mnt/sdcard/external_sd muss schon existieren)

mount -o bind /mnt/sdcard2 /mnt/sdcard/external_sd
Leider fehlt der App Scripter die Funktion, das er das Skript gleich beim booten ausführt, ansonsten funktioniert das aber schon mal soweit. Die App ScriptManager bekomme ich leider nicht ans Laufen auf dem Tablet S. Habt ihr ne Idee welche App das sonst kann, mit dem Ausführen beim booten? Ich wag mich nicht so recht daran, so was in die init.rc einzutragen, da ich momentan noch keinen weg kenne, wie man im schlimmsten Fall aus einem Boot Loop wieder raus kommt. Da ich mein Tablet aber sehr selten neu starte, ist das momentan aber auch kein echtes Problem. Nach einem Reboot ist das ganze in wenigen Minuten wieder, auf Knopfdruck, hergestellt.
 
Zuletzt bearbeitet:
Falschen link im zwischenspeicher gehabt. ;)
Vorteil dieser App: deinstallieren und alles bleibt beim Alten, im prinzip nach jedem werksreset.
 
Auch schon auf dem Tablet S ausprobiert? Ich hab die gestern mehrfach versucht auf dem Sony Tablet zum Laufen zu bekommen, leider ohne Erfolg. Egal wie oft ich neu gestartet hatte, es wurde nie nach Root Rechten gefragt. Habe auch den Entwickler angeschrieben, aber auch er konnte mir nicht helfen.

Hast du sie auf deinem Sony Tablet zum Laufen bekommen?
Das wäre wirklich interessant.
 
Neee, habs nur gerade gelesen und deswegen geschrieben. Hab doch noch nichtmal rootrechte. Aber gut zu wissen das die App nicht funzt. Sony machts uns aber auch nicht leicht.

Edit: Hab auch keinen init.d Ordner oder eine rc.local gefunden, wenn mir was auffällt schreib ich es hier.
 
Zuletzt bearbeitet:
Heute habe ich noch einige Dinge ausprobiert um eine "autostart" Lösung zu finden, aber leider ohne Erfolg:

- App "autostart (root)" läuft nicht auf dem Tablet S
- Änderung in der "svold.fstab" benötigt noch einem Reboot einen "rein/raus" der SD Karte damit diese an die gewünschte Stelle gemountet wird
- Änderung in der "vold.fstab" benötigt noch einem Reboot einen "rein/raus" der SD Karte damit diese an die gewünschte Stelle gemountet wird
- Hinzufügen des mount Befehls in die "init.goldfish.sh" tuts auch nicht
- Startup script tweaks kann es nicht tun, da es die "/system/bin/playlogosnow" auf dem Tablet S nicht gibt
([REF] Startup script speed tweaks - xda-developers)

Noch jemand eine Idee um einen Autostart mount Befehls, nach einem reboot zu erreichen?
confused.gif


-- Edit --

Heute hab ich noch mal ein bisschen mit der "install-recovery.sh" herumprobiert...

habe einfach mal ein "mkdir -p /mnt/sdcard/test" eingetragen, aber der rdner wurde nach einem Reboot leider nicht angelegt. Daher muss ich davon ausgehen, das das Script (leider) nicht ausgeführt wird....
frown.gif
 
Zuletzt bearbeitet:
kurzes Update:

Ich habe nun, aufgrund eines Artikels im XDA Forum, eine Möglichkeit gefunden, Skripte automatisch starten zu lassen. Hierfür wurde das Tablet S so modifiziert, das nun der "Linux übliche" '/system/etc/init.d' Prozess funktioniert. Hierzu werde ich in Kürze einen HowTo verfassen. Leider konnte ich aber das eigentliche Problem damit (noch) nicht lösen können. Es scheint ein (ekeliges) Timing Problem zu sein. Ich bleib aber dran .. versprochen.
 
In wiefern ein Timing Problem? Bau in das Script "sleep zahl", wobei zahl gleich Sekunden sind, ein. Dann wird das script gestartet aber der mountbefehl wird erst ausgeführt wenn alle Dienste gestartet wurden.

Grüße
 
Hi obiwan, danke für den Tipp, aber das habe ich schon alles probiert. Hab auch zwei "while" schleifen eingebaut, die warten bis die interne und externe sd Karte gemounted wurden .. danach noch einen sleep 50 .. aber immer noch ohne Erfolg. Ich kann es mir langsam auch nicht mehr erklären, warum es immer noch nicht funktioniert.

Wenn das Tablet durchgestartet ist und ich das gleiche Skript von Hand starte, läuft alles einwandfrei. Ich habe auch eine Zeile eingeführt, die zum Test eine Datei anlegt, damit ich sicher sein kann, das das Skript überhaupt gestartet wird. Diese wird auch schön brav angelegt. Ich werde mich am WE aber weiter mit dem Thema auseinander setzen und hoffentlich noch den Fehler finden bzw. das Problem lösen.

-- Edit --
Ok, die magische Grenze liegt bei meinem System bei 'sleep 75'.
Mit dem Wert geht es bei mir, denke aber das der von System zu System schwanken kann.
Mit den 75 Sekunden kan ich mir auch die zwei 'while' Schleifen sparen.
Auch der Rescan der SD Karte funktioniert damit. Somit ist "mein" Problem nun zu 100% gelöst.
Frage mich jetzt nur noch, wie euch erklären soll, ich ich das geschafft habe. ;-)
 
Zuletzt bearbeitet:
Schon mal die init.rc probiert? so wie die aussieht werden dort alle mountpoints erstellt
 
obicom schrieb:
natürlich, aber jede Veränderung in den*.rc Dateien wir nach einem Neustart vom Kernel wieder überschrieben.

Da wird es wohl Zeit für ein Customs Kernel. Ich habe mit DoomLords Kernel auf dem Xperia Play das wohl schnellste Sony Handy mit ständigen 1600MHZ und CWM, sowas brauchen wir auch für unser Tablet !
Ich hoffe wirklich das alles mit ICS besser wird. :blink:

Derzeit mounte ich meine Sdcard2 immer per Hand, lästig aber funktioniert ...
 
Hab das Problem nun für mich lösen können, weiß aber nicht ob meine Erklärung (ersten Post dieses freds angepasst) für euch nachvollziehbar ist.

Feedback ausdrücklich erwünscht.

P.S.: Anbei noch ein Screenshot vom Verzeichnis im Root-Explorer.
Schaut mal oben links, in die Ecke, wieviel freien Speicher mein 16GB Tablet S jetzt für Medien usw. hat. :flapper:
 

Anhänge

  • screen_20120218_0104.png
    screen_20120218_0104.png
    21,2 KB · Aufrufe: 2.106
Zuletzt bearbeitet:
Mit welchen Programm hast die die mount.zip komprimiert.
ich versuche es mit 7-zip zu entpacken da kommt aber eine Meldung das kompressions- verfahren wird nicht unterstützt.
 
Mit 7-zip ...
lässt sich bei mir problemlos öffnen, mit 7-zip und auch dem Windows Explorer.
Ich habe mittlerweile aber meine "Taktik" geändert.
Ich habe wieder die original vold.fstab und svold.fstab genutzt und nur noch sie Ordner "umgemountet". Das hat verschieden Gründe gehabt.

1. Andere Player wie z.B. PlayerPro und original Android Musik Player hatten Probleme, wenn die MP3 Dateien nicht im Ordner '/sdcard/Music' lagen.

2. DRM geschützte Dateien müssen dort liegen, wohin sie heruntergeladen wurden. heißt konnte auch die nicht einfach nach '/sdcard/external_sd/Video' verschieben.

Habe jetzt also drei Ordner auf der ext. SD Karte Angelegt: Fotos/Video/Music
Dann habe ich alle Dateien aus den korrespondierenden Ordner der internen SD Karte, in die Ordner auf der externen Sd Karte verschoben, so das diese danach auf der internen leer waren.

Dann habe ich das '10automount' entsprechend angepasst:
#!/system/bin/sh
sleep 75
mount -o bind /mnt/sdcard2/Music /mnt/sdcard/Music
mount -o bind /mnt/sdcard2/Fotos /mnt/sdcard/Fotos
mount -o bind /mnt/sdcard2/Video /mnt/sdcard/VIDEO
mount -o bind /mnt/sdcard2 /mnt/sdcard/external_sd

-- Edit --
Hab jetzt mal den ersten Post entsprechend angepasst.
 
Zuletzt bearbeitet:

Ähnliche Themen

obicom
Antworten
4
Aufrufe
10.505
obicom
obicom
obicom
Antworten
28
Aufrufe
8.610
schrammi
schrammi
obicom
Antworten
8
Aufrufe
13.373
Andyvantastic
Andyvantastic
Zurück
Oben Unten