Ich sehe hier einige Erwähnungen zum Erstellen einer ext4-formatierten SD-Karte, aber keine Anleitung. Diese eng verwandte Frage deutet darauf hin, dass es keine Möglichkeit gibt, aber meine Frage unterscheidet sich darin, dass mein Telefon speziell gerootet ist.
Ich habe meine Karte als ext4 (GUID-Partitionstabelle) formatiert; Mein Cyanogenmod-Telefon hat es unter installiert /mnt/fuse/sdcard1
. Ich habe die Anweisungen hier befolgt , um die Karte unter zu mounten /storage/sdcard1
, indem ich das folgende Skript unter erstellt habe/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 ihr übergeordnetes Verzeichnis einzufügen, was fehlgeschlagen ist:
/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).
Ich kann die Datei eigentlich gut abspielen, also kann ich sie öffnen. FWIW, wenn ich versuche, vom ursprünglichen Einhängepunkt ( /mnt/fuse/sdcard1
) zu kopieren, erhalte ich einen etwas anderen Fehler:
Failed to copy the file bar.mp3
Ich verwende ein Samsung Galaxy S3 mit Cyanogenmod 10.2.0-i9300.
==BEARBEITEN==
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 nehme ich an, dass das Skript fehlschlägt?
==BEARBEITEN2==
Ich habe versucht, das Skript zu ändern, um Fehler zu beheben. Das Skript beginnt einwandfrei, schlägt dann aber mkdir "$REALMNT"
mit dem Fehler fehl /data/local/userinit.sh[6]: : not found
.
==BEARBEITEN3==
Ich weiß, dass das Skript nicht funktioniert, also könnte das Reparieren 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 (über /storage/sdcard1
) habe ich bereits Schreibrechte.
Dies wurde angeblich vor einigen Monaten behoben, aber die Leute melden immer noch Probleme. Ich kann Artikel auf der Karte lesen, habe aber keine Schreibberechtigung. Um es zu beheben, habe ich Strategien aus einigen Quellen kombiniert .
Die $
und #
zeigen Eingabeaufforderungen an, geben Sie sie also nicht ein.
$ su
# chown media_rw:media_rw /mnt/media_rw/sdcard1
# chmod g+w /mnt/media_rw/sdcard1
Dadurch ändern sich die Berechtigungen der SD-Karte. Der Eigentümer und die Gruppe ändern sich von system
in media_rw
und geben der Gruppe auch Schreibzugriff.
Ich bin mir nicht sicher, ob es hilfreich ist, aber möglicherweise liegt das Problem darin, dass Sie versuchen, an der falschen Stelle zu montieren? Dies ist mein Arbeitsskript, das auf einem S3 mini mit CM11 funktioniert:
#!/system/bin/sh
REALMNT=/mnt/media_rw/sdcard1
if ! [ -d "$REALMNT" ]; then
mkdir "$REALMNT" || exit 1
fi
mount -t ext4 -o rw,noatime /dev/block/mmcblk1p1 "$REALMNT"
sdcard "$REALMNT" /storage/sdcard1 1023 1023
Der REALMNT-Speicherort existierte bereits, daher wurde 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">
su
kann 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, posten Sie bitte erneut und ich werde dies löschen und Ihre akzeptieren.
https://jira.cyanogenmod.org/browse/CYAN-332
Standardmäßig behoben? Neue Änderung in github.
Hier die Einfachheit
#!/system/bin/sh
REALMNT="/mnt/media_rw/extSdCard"
mount -t ext4 -o rw,noatime /dev/block/mmcblk1p1 "$REALMNT"
sdcard "$REALMNT" /storage/extSdCard 1023 1023 &
Und hier beschreibbar ext4 auf externe SD
#!/system/bin/sh
chown media_rw:media_rw /mnt/media_rw/extSdCard
chmod g+w /mnt/media_rw/extSdCard
Sie können "extSdCard" wie "sdcard1" ändern, wo Ihre externe SD-Karte montiert ist
Ich habe Stockrom mit Kingroot verwendet, aber ich versuche, Supersu seine Probleme mit dem Mounten des Dateisystems zu lösen
Izzy
ls -l /mnt/fuse/
und ausls -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, dass ext4 volle *nix-Dateiberechtigungen unterstützt, inkl. Benutzer und Gruppen.Chahk
su
Terminal ein, um root zu werden. Möglicherweise müssen Sie die Erteilung der Berechtigung am Telefon bestätigen, wenn Sie dies zum ersten Mal tun.Izzy
echo Script executed > /mnt/fuse/sdcard1/test.log
, und prüfen, ob sie überhaupt läuft. Wenn dies der Fall ist, erstellen 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
.Sperber
touch
zeigt, dass das Skript ausgeführt wird. Ich habe versucht, das Skript manuell mit auszuführensu /data/local/userinit.sh
, aber das ist fehlgeschlagen. Ich habe es auch versuchtsu echo foo
und erhalte einen ähnlichen Fehler:Unknown id: echo
.Izzy
echo
z2>>
.Sperber
exit 1
schlug dann mit dem angegebenen Fehler fehl.Izzy
/mnt/fuse
nicht da ist, wenn Sie es versuchenmkdir
(versuchen Sie, einls /mnt
vor denmount
Befehl zu setzen)? Wenn ja,mkdir -p "$REALMNT" || exit 1
könnte man das umgehen – aber ich bin mir nicht sicher, ob es Nebenwirkungen gibt, wenn das System versucht, es/mnt/fuse
später zu erstellen, und es bereits existiert.Irfan Latif
Sperber