Gameloft-Spiele auf externer SD?

  • 8 Antworten
  • Neuster Beitrag
Lenoid

Lenoid

Experte
Threadstarter
Da auch 12 GB auf der internen SD irgendwann mal etwas eng werden, wenn man mal das ein oder andere Gameloft-Spiel installiert hat, möchte ich die heruntergeladenen Daten auf die externe SD auslagern oder noch besser bei neuen Spielen die Daten gleich auf die Externe SD runterladen.

Ich habe schon mehrere Ansätze:

1. GL to SD
Nettes Tool. hat bei mir aber nicht zuverlässig funktioniert. Teilweise sind sogar Spielstände verloren gegangen. Ist mir doch zu heikel.
Hier noch ein kleines Tutorial.

2. Auto_Patch_APK_for_Samsung_by_Duero__include_Java
Habe einige APKs gepatcht, allerdings konnten diese dann nicht mehr installiert werden. Erst recht, wenn ich noch den Pfad der Externen SD innerhalb der APKs auf das A1 angepasst habe.

3. Script Manager
Für mich das bisher die Möglichkeit, die bisher am meisten Erfolg versprechend ist. Root wird benötigt! Ich habe folgendes Script aus dem Internet versucht (der Pfad der externen SD wurde angepasst):
Code:
#!/system/bin/sh
sleep 60
mount --bind /sdcard/removable_sdcard/gameloft/ /sdcard/gameloft/
Als Root ausgeführt soll nach 60 Sekunden das vorher von mir manuell auf die externe SD verschobene Gameloft-Verzeichnis in die interne gemountet werden. Wenn ich dieses Script allerdings ausführe (mit Rootrechten versehen) bekomme ich die Fehlermeldung:
/mnt/sdcard/SD-Hack.sh: permission denied
Ich habe mit Linux noch nicht viel zu tun gehabt, deshalb kann ich nicht einschätzen, warum ich keine Berechtigung bekommen habe.
Kann mir jemand erklären wo der Fehler liegt bzw. wie ich das Verzeichnis auf der externen SD am besten in die interne SD gemountet bekomme?
Das Skript habe ich von hier.


Generell bin ich natürlich auch an anderen Möglichkeiten interessiert, GL-Spiele auf die externe SD zu bekommen, die auch auf dem A1 funktionieren. :smile:
 
Skelli

Skelli

Fortgeschrittenes Mitglied
Warum die Meldung 'permission denied' kommt, weiß ich jetzt auch nicht, aber es deutet darauf hin, daß du entweder keine root Rechte hast, oder die Datei nicht als executable deklariert ist (chmod +x <DATEI>).

Deine Befehlszeile:
Code:
mount --bind /sdcard/removable_sdcard/gameloft/ /sdcard/gameloft/
kann aber auch so nicht funktionieren, weil man mit 'mount --bind' nur einen schon bestehenden Mountpoint noch zusätzlich in ein anderes Verzeichnis mounten kann.
Schaue dir einfach mal die Ausgabe von dem Befehl 'mount' an, dann siehst du, welche devices in welche Mountpoints gemountet sind.
Das ist z.B. ein Mountpoint: /mnt/sdcard/, aber bestimmt nicht "/sdcard/removable_sdcard/gameloft/ "
Was soll eigentlich die Zeile "sleep 60" bezwecken? Willst du vorher noch schnell einen Kaffee kochen?
 
Lenoid

Lenoid

Experte
Threadstarter
Hi Skelli,
das mit den fehlenden Rootrechten habe ich mir auch schon gedacht, allerdings haben sowohl Script Manager als auch das Skript selbst Rootrechte haben.
Ich habe jetzt nochmals etwas rumprobiert und u.a. Script Manager in Droidwall freigegeben. Jetzt habe ich schon mal keine Berechtigungsprobleme mehr. Ob es an Droidwall lag? Keine Ahnung.

Wenn ich jetzt mein Skript ausführe kommt folgende Meldung:
Code:
unknown option -- -mount: invalid option --
Liegt wohl an "--bind". Wenn ich dieses entferne, kommt folgende Meldung:
Code:
Usage: mount [-r] [-w] [-o options] [-t type] device directory
Wenn ich einfach nur "mount" eingebe, bekomme ich haufenweise Codeschnipsel.

"sleep 60" ist deswegen, weil das Skript automatisch beim Systemstart ("Boot" im Script Manager) ausgeführt werden soll. Da die externe SD während der Ausführung des Skripts eventuell noch nicht bereit ist, soll mit dem Skript eine Minute gewartet werden.

Mit Linux bin ich eigentlich totaler Anfänger. Ich habe mich gerade zum Thema mounten informiert, allerdings ist das doch recht komplex. Auch mit den Mountpoints (mkdir) habe ich noch nicht so richtig den Durchblick.

Kannst du mir sagen wie das Skript genau auszusehen hat?
Was es machen soll ist folgendes:
Der Ordner "Gameloft" samt Unterordnern auf der ext. SD (/sdcard/removable_sdcard/gameloft/) soll auf der internen SD (/sdcard/gameloft/) verfügbar gemacht werden ohne ihn auf diese zu kopieren.
-> Die Gameloft-Spiele sollen einfach nur ihre Daten auf /sdcard/gameloft/ finden, obwohl sie eigentlich auf /sdcard/removable_sdcard/gameloft/ liegen.
 
Skelli

Skelli

Fortgeschrittenes Mitglied
lenoid schrieb:
Hi Skelli,
das mit den fehlenden Rootrechten habe ich mir auch schon gedacht, allerdings haben sowohl Script Manager als auch das Skript selbst Rootrechte haben.
Ich habe jetzt nochmals etwas rumprobiert und u.a. Script Manager in Droidwall freigegeben. Jetzt habe ich schon mal keine Berechtigungsprobleme mehr. Ob es an Droidwall lag? Keine Ahnung.

Wenn ich jetzt mein Skript ausführe kommt folgende Meldung:
Code:
unknown option -- -mount: invalid option --
Liegt wohl an "--bind". Wenn ich dieses entferne, kommt folgende Meldung:
Code:
Usage: mount [-r] [-w] [-o options] [-t type] device directory
Probiere es mal mit 'mount -o r ....'

lenoid schrieb:
Wenn ich einfach nur "mount" eingebe, bekomme ich haufenweise Codeschnipsel.
Diese "Codeschnipsel" sind eigentlich sehr interessant, wenn man sich mal die Mühe macht, diese zu deuten. Genauso wie z.B. die Ausgabe von 'df -h', oder 'free'

lenoid schrieb:
"sleep 60" ist deswegen, weil das Skript automatisch beim Systemstart ("Boot" im Script Manager) ausgeführt werden soll. Da die externe SD während der Ausführung des Skripts eventuell noch nicht bereit ist, soll mit dem Skript eine Minute gewartet werden.
Wenn dein "Script Manager" ausgeführt wird, sind schon längst alle Laufwerke gemountet, ansonsten könnte diese App gar nicht ausgeführt werden.

lenoid schrieb:
Mit Linux bin ich eigentlich totaler Anfänger. Ich habe mich gerade zum Thema mounten informiert, allerdings ist das doch recht komplex. Auch mit den Mountpoints (mkdir) habe ich noch nicht so richtig den Durchblick.
Ich benutze Linux nun schon seit einigen Jahren ausschließlich auf meinen PCs und kenne mich deshalb eigentlich ganz gut aus, aber unter Android ist leider doch vieles anders. Viele Befehle funktionieren unter Android nicht so, wie man es von Linux eigentlich erwartet, weil sie zum Teil in ihrem Funktionsumfang stark beschnitten sind. Da fällt mir gerade ein, hast du denn überhaupt schon 'busybox' installiert?

lenoid schrieb:
Kannst du mir sagen wie das Skript genau auszusehen hat?
Was es machen soll ist folgendes:
Der Ordner "Gameloft" samt Unterordnern auf der ext. SD (/sdcard/removable_sdcard/gameloft/) soll auf der internen SD (/sdcard/gameloft/) verfügbar gemacht werden ohne ihn auf diese zu kopieren.
-> Die Gameloft-Spiele sollen einfach nur ihre Daten auf /sdcard/gameloft/ finden, obwohl sie eigentlich auf /sdcard/removable_sdcard/gameloft/ liegen.
Da '/mnt/sdcard/removable_sdcard/gameloft/' kein Mountpoint ist, kann man dieses Verzeichnis auch mit mount und der Option bind nicht umbiegen
Man kann damit nur schon bestehende Mountpoints zusätzlich an anderer Stelle auftauchen lassen.

Wenn Android für die sdcards nicht so ein völlig veraltetes Steinzeit Filesystem benutzen würde, könnte man einfach mit dem Befehl 'ln' arbeiten und damit einen Link setzen.
 
Lenoid

Lenoid

Experte
Threadstarter
Skelli schrieb:
Probiere es mal mit 'mount -o r ....'
Ich habe es jetzt mal mit folgendem probiert:
Code:
mount -o r /sdcard/removable_sdcard/gameloft/ /sdcard/gameloft/
und
Code:
mount -o [B]-[/B]r /sdcard/removable_sdcard/gameloft/ /sdcard/gameloft/
folgende Meldung kommt:
Usage: mount [-r] [-w] [-o options] [-t type] device directory


Folgende Meldung kommt übrigens nur, wenn ich in Script Manager "executable" anstatt "script" angebe:
/mnt/sdcard/SD-Hack.sh: permission denied


Skelli schrieb:
Diese "Codeschnipsel" sind eigentlich sehr interessant, wenn man sich mal die Mühe macht, diese zu deuten. Genauso wie z.B. die Ausgabe von 'df -h', oder 'free'
Leider kann ich mit 7(!) Bildschirmseiten voller Codeschnipsel leider nichts anfangen. Da steht auf 6 Seiten für so ziemlich jede App/Spiel was, allerdings nichts für die Gameloft-Spiele.
Klar, einzelne Teile der Codeschnipsel sagen mir schon etwas, insgesamt werde ich daraus aber nicht schlau. :bored:



Skelli schrieb:
Wenn dein "Script Manager" ausgeführt wird, sind schon längst alle Laufwerke gemountet, ansonsten könnte diese App gar nicht ausgeführt werden.
Gut, dann kann ich mir das in Zukunft sparen. Ich hatte es vorübergehend ohnehin wieder gelöscht, da das eigentlich nur fürs Hochfahren gedacht war.
Ich hatte das auch einfach aus dem oben verlinkten Script übernommen.



Skelli schrieb:
Da fällt mir gerade ein, hast du denn überhaupt schon 'busybox' installiert?
Habe ich vorhin installiert (auch innerhalb der App) und das A1 vorsichtshalber neu gestartet. Oben genannte Meldungen kommen trotzdem.



Skelli schrieb:
Da '/mnt/sdcard/removable_sdcard/gameloft/' kein Mountpoint ist, kann man dieses Verzeichnis auch mit mount und der Option bind nicht umbiegen
Man kann damit nur schon bestehende Mountpoints zusätzlich an anderer Stelle auftauchen lassen.

Wenn Android für die sdcards nicht so ein völlig veraltetes Steinzeit Filesystem benutzen würde, könnte man einfach mit dem Befehl 'ln' arbeiten und damit einen Link setzen.
Was wäre dein Vorschlag?



Ich habe noch folgendes entdeckt:
HowTo Externe Sd-Karte intern mounten (Android 3.2.1 (release2)/root)
Was meist du dazu? Generell eine sehr sinnvolle Sache, da man so Datenmengen von großen Apps wie z.B. Lexika, Navis absolut problemlos auf die externe SD verschieben könnte.
Allerdings frage ich micht wie das ist, wenn ein Ordner sowohl auf der physikalischen internen SD als auch auf der physikalisch externen SD ist. Woher weiß ich z.B. im ES Datei Explorer, welcher Ordner/Datei auf welcher physikalischen SD gespeichert ist?
 
Skelli

Skelli

Fortgeschrittenes Mitglied
lenoid schrieb:
Ich habe es jetzt mal mit folgendem probiert:
Code:
mount -o r /sdcard/removable_sdcard/gameloft/ /sdcard/gameloft/
und
Code:
mount -o [B]-[/B]r /sdcard/removable_sdcard/gameloft/ /sdcard/gameloft/
folgende Meldung kommt:
Code:
Usage: mount [-r] [-w] [-o options] [-t type] device directory /
Anscheinend unterscheidet sich der mount Befehl von CM7 von dem des Stock ROMs

Code:
root@a1-tablet:/data/dropbear ssh# mount --help
BusyBox v1.19.4-cm7 bionic (2012-02-04 22:27 +0100) multi-call binary.

Usage: mount [OPTIONS] [-o OPTS] DEVICE NODE

Mount a filesystem. Filesystem autodetection requires /proc.

	-a		Mount all filesystems in fstab
	-f		Dry run
	-r		Read-only mount
	-w		Read-write mount (default)
	-t FSTYPE	Filesystem type
	-O OPT		Mount only filesystems with option OPT (-a only)
-o OPT:
	loop		Ignored (loop devices are autodetected)
	[a]sync		Writes are [a]synchronous
	[no]atime	Disable/enable updates to inode access times
	[no]diratime	Disable/enable atime updates to directories
	[no]relatime	Disable/enable atime updates relative to modification time
	[no]dev		(Dis)allow use of special device files
	[no]exec	(Dis)allow use of executable files
	[no]suid	(Dis)allow set-user-id-root programs
	[r]shared	Convert [recursively] to a shared subtree
	[r]slave	Convert [recursively] to a slave subtree
	[r]private	Convert [recursively] to a private subtree
	[un]bindable	Make mount point [un]able to be bind mounted
	[r]bind		Bind a file or directory [recursively] to another location
	move		Relocate an existing mount point
	remount		Remount a mounted filesystem, changing flags
	ro/rw		Same as -r/-w

There are filesystem-specific -o flags.
Du könntest es mal mit 'busybox mount...' probieren, vielleicht gibt es bei dir 2 verschiedene mount Befehle.

lenoid schrieb:
Folgende Meldung kommt übrigens nur, wenn ich in Script Manager "executable" anstatt "script" angebe:

Code:
/mnt/sdcard/SD-Hack.sh: permission denied
Das liegt einfach daran, daß die Datei SD-Hack.sh auf einem FAT32 Filesystem gespeichert ist. Ausführbare Dateien besitzen normalerweise unter Linux ein besonderes Merkmal, das 'execute' Attribut, aber dieses lässt sich auf diesem völlig veralteten Filesystem nicht speichern. :-(

lenoid schrieb:
Leider kann ich mit 7(!) Bildschirmseiten voller Codeschnipsel leider nichts anfangen. Da steht auf 6 Seiten für so ziemlich jede App/Spiel was, allerdings nichts für die Gameloft-Spiele.
Klar, einzelne Teile der Codeschnipsel sagen mir schon etwas, insgesamt werde ich daraus aber nicht schlau. :bored:
Ach, so kompliziert ist das alles gar nicht. Auch unter Linux wird nur mit Wasser gekocht, allerdings nicht nur mit so lauwarmen Wasser, wie unter Windows :)

lenoid schrieb:
Was wäre dein Vorschlag?
Bei mir unter CM7 habe ich das so eingestellt, das die ext. sdcard unter /mnt/sdcard eingehängt wird und die int. sdcard finde ich unter /mnt/emmc
Auf der int. sdcard landen nur noch Bilder, Filme und Gedöns, der Rest spielt sich auf der ext. sdcard ab.

lenoid schrieb:
Ich habe noch folgendes entdeckt:
HowTo Externe Sd-Karte intern mounten (Android 3.2.1 (release2)/root)
Was meist du dazu? Generell eine sehr sinnvolle Sache, da man so Datenmengen von großen Apps wie z.B. Lexika, Navis absolut problemlos auf die externe SD verschieben könnte.
Allerdings frage ich micht wie das ist, wenn ein Ordner sowohl auf der physikalischen internen SD als auch auf der physikalisch externen SD ist. Woher weiß ich z.B. im ES Datei Explorer, welcher Ordner/Datei auf welcher physikalischen SD gespeichert ist?
Deine ext. sdcard wird doch jetzt schon innerhalb deiner int. sdcard gemountet!?
/mnt/sdcard ist die interne sdcard und
/sdcard/removable_sdcard/ ist die Externe, oder täusche ich mich da jetzt?
 
Lenoid

Lenoid

Experte
Threadstarter
Skelli schrieb:
Du könntest es mal mit 'busybox mount...' probieren, vielleicht gibt es bei dir 2 verschiedene mount Befehle.
Suuuper! das hat geklappt! Vielen, vielen Dank! Jetzt kann ich endlich weitere Gameloft-Spiele installieren und testen. Dann werde ich den Spiele-Sticky nochmal kräftig überarbeiten.

Geholfen hat jetzt dieses Skript:
Code:
busybox mount -o r /sdcard/removable_sdcard/gameloft/ /sdcard/gameloft/
Wenn du nichts dagegen hast, werde ich das demnächst in den Spiele-Sticky einfügen. Davor wird nochmals getestet ob alles auch reibungslos funktioniert. So dass das nach dem Boot auch gleich wieder eingebunden wird und was passiert wenn ich das A1 per USB anschließe, usw.



Skelli schrieb:
Ach, so kompliziert ist das alles gar nicht. Auch unter Linux wird nur mit Wasser gekocht, allerdings nicht nur mit so lauwarmen Wasser, wie unter Windows :)
Ich werde mir das mal bei Gelegenheit genauer anschauen. :smile:



Skelli schrieb:
Deine ext. sdcard wird doch jetzt schon innerhalb deiner int. sdcard gemountet!?
/mnt/sdcard ist die interne sdcard und
/sdcard/removable_sdcard/ ist die Externe, oder täusche ich mich da jetzt?
Das ist richtig. Könnte man die externe auch unter /mnt/sdcard/ anstatt /mnt/sdcardremovable_sdcard/ mounten oder gibt das einen Konflikt.
Für mich hat sich das erst einmal durch die Möglichkeit der Skripts erledigt.

Ist eigentlich bekannt wie schnell die interne SD ist (Transferrate lesen; Zugriffszeit)? Wäre im Vergleich zu einer externen interessant.
 
Skelli

Skelli

Fortgeschrittenes Mitglied
lenoid schrieb:
Geholfen hat jetzt dieses Skript:
Code:
busybox mount -o r /sdcard/removable_sdcard/gameloft/ /sdcard/gameloft/
Wenn du nichts dagegen hast, werde ich das demnächst in den Spiele-Sticky einfügen.
Da habe ich natürlich nichts gegen.


lenoid schrieb:
Das ist richtig. Könnte man die externe auch unter /mnt/sdcard/ anstatt /mnt/sdcardremovable_sdcard/ mounten oder gibt das einen Konflikt.
Das device, was du als letztes nach /mnt/sdcard/ gemountet hast, wird dann dort sichtbar sein.
 
astuermer

astuermer

Stammgast
lenoid schrieb:
Geholfen hat jetzt dieses Skript:
Code:
busybox mount -o r /sdcard/removable_sdcard/gameloft/ /sdcard/gameloft/
Funktioniert interessanterweise bei mir nicht...
+ Galaxy R
+ Ordner mit den Daten auf /sdcard/external_sd/GL
+ Originalordner auf /sdcard/gameloft/games

Wenn ich mit oben genanntem Syntax im Shell arbeite:

Code:
busybox mount -o r /mnt/sdcard/external_sd/GL/ /mnt/sdcard/gameloft/games/
...erhalte ich als Fehlermeldung:

mount: mounting /mnt/sdcard/external_sd/GL on /mnt/sdcard/gameloft/games failed: No such file or directory

Es existieren aber beide Ordner.
Habs auch schon ohne "/mnt" probiert...

Jemand ne Idee?

Update: Der Ordner /sdcard/gameloft/games war nicht existent ;) Mein Fehler!
 
Zuletzt bearbeitet:
Oben Unten