Ich sehe hier einige Erwähnungen zum Erstellen einer SD-Karte im ext4-Format, aber keine Anleitung. Diese eng verwandte Frage legt nahe, dass es keine Möglichkeit gibt, dies zu tun, aber meine Frage unterscheidet sich darin, dass mein Telefon speziell verwurzelt ist.
Ich habe meine Karte als ext4 (GUID-Partitionstabelle) formatiert. Mein Cyanogenmod-Telefon hat es an montiert /mnt/fuse/sdcard1
. Ich folgte Anweisungen hier um die Karte zu montieren /storage/sdcard1
, indem Sie das folgende Skript/data/local/userinit.sh
#!/system/bin/sh
REALMNT=/mnt/fuse/sdcard1_real
if ! [ -d "$REALMNT" ]; then
mkdir "$REALMNT" || exit 1
fi
mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT"
sdcard "$REALMNT" /storage/sdcard1 1023 1023 &
Ich habe neu gestartet und versucht, eine Datei (mit ES File Explorer) zu kopieren und in das übergeordnete Verzeichnis einzufügen. Dies ist fehlgeschlagen:
/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).
Ich kann die Datei tatsächlich gut abspielen, damit ich sie öffnen kann. FWIW, wenn ich versuche, vom ursprünglichen Einhängepunkt ( /mnt/fuse/sdcard1
) zu kopieren , wird ein etwas anderer Fehler angezeigt :
Failed to copy the file bar.mp3
Ich verwende ein Samsung Galaxy S3 mit Cyanogenmod 10.2.0-i9300.
== EDIT ==
su
ls -l /mnt/fuse
drwxrwxr-x media_rw media_rw 2014-03-04 22:08 sdcard1
Das war alles. Es gibt keine sdcard1_real
in diesem Verzeichnis, also denke ich, dass das Skript fehlschlägt?
== EDIT2 ==
Ich habe versucht, das Skript zur Fehlerbehebung zu ändern. Das Skript beginnt einwandfrei, schlägt dann aber mkdir "$REALMNT"
mit dem Fehler fehl /data/local/userinit.sh[6]: : not found
.
== EDIT3 ==
Ich weiß, dass das Skript nicht funktioniert, daher könnte das Beheben meiner Frage meine Frage lösen, aber ich fand das Folgende interessant. Ich habe meine SD-Karte in meinem Linux-Computer formatiert und einige Dateien darauf übertragen. Seltsamerweise treten Berechtigungsfehler nur in den von mir erstellten Unterverzeichnissen auf. Im Stammverzeichnis der Partition (via /storage/sdcard1
) habe ich bereits Schreibberechtigung.
ls -l /mnt/fuse/
undls -l /mnt/fuse/sdcard1_real
. Bearbeiten Sie dann Ihre Frage, um die Ergebnisse einzuschließen. Meine Vermutung ist "falsche Dateiberechtigungen" - entweder für den Mount oder für dasfoo/
Verzeichnis auf der Karte. Denken Sie daran, ext4 unterstützt vollständige * nix-Dateiberechtigungen, inkl. Benutzer und Gruppen.su
Terminal ein, um root zu bekommen. Möglicherweise müssen Sie die Erteilung der Berechtigung am Telefon bestätigen, wenn Sie dies zum ersten Mal tun.echo Script executed > /mnt/fuse/sdcard1/test.log
prüfen, ob sie überhaupt ausgeführt wird. Wenn ja, machen Sie die vorletzte Zeilemount -t ext4 /dev/block/mmcblk1p1 "$REALMNT" 2> /mnt/fuse/sdcard1/test.log
und überprüfen Sie die Fehlermeldung. Oder führen Sie das Skript manuell aus, um Folgendes anzuzeigen :su /data/local/userinit.sh
.touch
zeigt, dass das Skript ausgeführt wird. Ich habe versucht, das Skript manuell mit auszuführensu /data/local/userinit.sh
, aber dies ist fehlgeschlagen. Ich habe es auch versuchtsu echo foo
und bekomme einen ähnlichen Fehler :Unknown id: echo
.echo
um jeden Befehl vor seiner Ausführung auszugeben und die Fehlerausgabe mit umzuleiten2>>
.Antworten:
Dies wurde angeblich vor einigen Monaten behoben, aber die Leute berichten immer noch über Probleme. Ich kann Elemente auf der Karte lesen, habe jedoch keine Schreibberechtigung. Um dies zu beheben, habe ich Strategien aus einigen Quellen kombiniert .
Die Eingabeaufforderungen
$
und#
geben an, geben Sie sie also nicht ein.Dies ändert die Berechtigungen der SD-Karte. Der Eigentümer und die Gruppe wechseln von
system
zumedia_rw
und geben der Gruppe Schreibzugriff.quelle
Sie sind sich nicht sicher, ob es Hilfe gibt, aber möglicherweise liegt das Problem darin, dass Sie versuchen, am falschen Ort zu montieren? Dies ist mein Arbeitsskript, das auf einem S3 mini mit CM11 funktioniert:
Der REALMNT-Standort existierte bereits, daher wurde der mkdir natürlich nie aufgerufen. Und media_rw / sdcard1 gehört bereits media_rw
Ich musste auch /etc/permissions/platform.xml aktualisieren, um Folgendes einzuschließen:
<group id="media_rw"/>
in:<permission name="android.permission.WRITE_EXTERNAL_STORAGE">
quelle
su
nicht gemountet):
werden. `` Ich verwende cm-11-20140804-SNAPSHOT-M9-mondrianwifi.zip.Es gab eine Antwort von adasdadasd , die ich akzeptieren wollte, die aber inzwischen gelöscht wurde. Ich werde es unten reproduzieren und meine Antwort akzeptieren, aber wenn adasdadasd wieder auftaucht, poste es bitte neu und ich werde es löschen und deine akzeptieren.
quelle