Gameloft-Spiele auf externer SD?

Dieses Thema im Forum "Lenovo IdeaPad A1 Forum" wurde erstellt von Lenoid, 15.03.2012.

  1. Lenoid, 15.03.2012 #1
    Lenoid

    Lenoid Threadstarter Android-Guru

    Beiträge:
    2,378
    Erhaltene Danke:
    447
    Registriert seit:
    25.12.2011
    Phone:
    Sony Ericsson Xperia Pro
    Tablet:
    Samsung Galaxy Note 8.0 (N5110)
    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:
    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:
     
  2. Skelli, 15.03.2012 #2
    Skelli

    Skelli Android-Hilfe.de Mitglied

    Beiträge:
    107
    Erhaltene Danke:
    21
    Registriert seit:
    10.12.2011
    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 bedankt sich.
  3. Lenoid, 16.03.2012 #3
    Lenoid

    Lenoid Threadstarter Android-Guru

    Beiträge:
    2,378
    Erhaltene Danke:
    447
    Registriert seit:
    25.12.2011
    Phone:
    Sony Ericsson Xperia Pro
    Tablet:
    Samsung Galaxy Note 8.0 (N5110)
    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.
     
  4. Skelli, 16.03.2012 #4
    Skelli

    Skelli Android-Hilfe.de Mitglied

    Beiträge:
    107
    Erhaltene Danke:
    21
    Registriert seit:
    10.12.2011
    Probiere es mal mit 'mount -o r ....'

    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'

    Wenn dein "Script Manager" ausgeführt wird, sind schon längst alle Laufwerke gemountet, ansonsten könnte diese App gar nicht ausgeführt werden.

    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?

    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 bedankt sich.
  5. Lenoid, 16.03.2012 #5
    Lenoid

    Lenoid Threadstarter Android-Guru

    Beiträge:
    2,378
    Erhaltene Danke:
    447
    Registriert seit:
    25.12.2011
    Phone:
    Sony Ericsson Xperia Pro
    Tablet:
    Samsung Galaxy Note 8.0 (N5110)
    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:


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


    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:



    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.



    Habe ich vorhin installiert (auch innerhalb der App) und das A1 vorsichtshalber neu gestartet. Oben genannte Meldungen kommen trotzdem.



    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?
     
  6. Skelli, 16.03.2012 #6
    Skelli

    Skelli Android-Hilfe.de Mitglied

    Beiträge:
    107
    Erhaltene Danke:
    21
    Registriert seit:
    10.12.2011
    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.

    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. :-(

    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 :)

    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.

    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 bedankt sich.
  7. Lenoid, 16.03.2012 #7
    Lenoid

    Lenoid Threadstarter Android-Guru

    Beiträge:
    2,378
    Erhaltene Danke:
    447
    Registriert seit:
    25.12.2011
    Phone:
    Sony Ericsson Xperia Pro
    Tablet:
    Samsung Galaxy Note 8.0 (N5110)
    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.



    Ich werde mir das mal bei Gelegenheit genauer anschauen. :smile:



    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.
     
  8. Skelli, 17.03.2012 #8
    Skelli

    Skelli Android-Hilfe.de Mitglied

    Beiträge:
    107
    Erhaltene Danke:
    21
    Registriert seit:
    10.12.2011
    Da habe ich natürlich nichts gegen.


    Das device, was du als letztes nach /mnt/sdcard/ gemountet hast, wird dann dort sichtbar sein.
     
    Lenoid bedankt sich.
  9. astuermer, 11.04.2012 #9
    astuermer

    astuermer Android-Experte

    Beiträge:
    518
    Erhaltene Danke:
    46
    Registriert seit:
    08.07.2010
    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: 11.04.2012

Diese Seite empfehlen