Verwirrt durch die vielen orte der virtuellen / sdcard /

46

Einige Geräte (wie mein Nexus 4) haben keinen externen Steckplatz für eine SD-Karte. Stattdessen gibt es einen Stammordner /sdcard/, der so behandelt wird. Ich finde aber auch andere Pfade, die alle auf die gleichen Dateien verweisen - es müssen einige Weiterleitungen stattfinden (ich denke, das nennt man in Linux symlinks ).

Alle diese Pfade enthalten dieselben Dateien:

/sdcard/
/storage/sdcard0/
/storage/emulated/0/
/storage/emulated/legacy/

Welcher Weg ist der "tatsächliche"? Was ist mit den anderen Pfaden? Wofür werden sie verwendet, warum gibt es sie?

Torben Gundtofte-Bruun
quelle

Antworten:

38

Empfohlene Vorlesung: Warum wurde / sdcard / zu / sdcard / 0 / mit 4.2? .

Kurz gesagt: Es hat mit der mit Jelly Bean eingeführten Multi-User-Funktionalität zu tun:

  • /storage/emulated/0/: Meines Wissens bezieht sich dies auf die "emulierte MMC" ("Eigentümerteil"). Normalerweise ist dies der interne. Die "0" steht hier für den Benutzer, "0" ist der erste Benutzer, auch bekannt als Gerätebesitzer. Wenn Sie zusätzliche Benutzer erstellen, wird diese Anzahl für jeden Benutzer erhöht.
  • /storage/emulated/legacy/wie zuvor, aber auf den Teil des aktuell arbeitenden Benutzers verweisend (für den Eigentümer wäre dies ein Symlink zu /storage/emulated/0/). Dieser Weg sollte also jeden Benutzer zu seinem "Teil" bringen.
  • /sdcard/: Laut einem Kommentar von Shywim ist dies ein Symlink zu ...
    • /mnt/sdcard (Android <4.0)
    • /storage/sdcard0 (Android 4.0+)
  • /storage/sdcard0/: Da es legacyhier keinen Anhänger gibt (siehe Kommentare unten), kennzeichnet die "0" in diesem Fall eher das Gerät (die Karte) selbst. Man könnte schließlich einen Kartenleser über OTG mit einer anderen SDCard verbinden, die dann wird /storage/sdcard1(kein Beweis dafür, nur eine Vermutung - aber ich würde sagen, eine gute)

Obwohl man zu dem Schluss kommt, dass es auch eine geben sollte /storage/sdcard/legacy, gibt es keine (siehe Kommentare) - was bei meiner Annahme, dass die Zahlen hier nicht auf den Benutzer bezogen sind, sondern auf mögliche Mehrfachkarten durchaus Sinn macht: " "0" ist immer diejenige im Kartensteckplatz des Geräts, daher ist hier kein "Legacy-Symlink" erforderlich.

Izzy
quelle
Vielen Dank! Und nein, es gibt keinen /storage/sdcard/legacyWeg.
Torben Gundtofte-Bruun
2
Seltsam. Dies kann jedoch damit zusammenhängen, dass auf einer echten SD-Karte kaum Berechtigungen vorhanden sind (da sie vom FAT-Dateisystem nicht unterstützt werden). Unter Berücksichtigung des Unterschieds ( /sdcard0/gegenüber /emulated/0) könnte die "0" hier für den Fall vorgesehen sein, dass man dann mehrere SDCards über einen Kartenleser und einen USB-Host-Modus anbringt. Nur eine Vermutung, keine harte Tatsache - aber ich würde sagen, eine gute.
Izzy
Antwort entsprechend aktualisiert :)
Izzy
2
/sdcard/ist einfach ein symlink zu /storage/sdcard0/. In älteren Versionen als 4.0.0 ist dies der Fall /mnt/sdcard/.
Matthieu Harlé
Und ich nehme an, auf Android 4.0+ /mnt/sdcard/ist ein Symlink zu /storage/sdcard0/? Da beide auf meinem Nexus 4
navigierbar sind
2

Ja, ein bisschen verwirrend, aber dies sind alternative Pfade für das Speicherlayout

/ mnt / sdcard0 / (Interne virtuelle SD-Karte)

und Izzy Sie richtig, wenn mehr Geräte angeschlossen sind, aber die Benennung kann je nach Gerät unterschiedlich sein.

Ex. / mnt / sdcard1 / (Physische SD-Karte im SD-Steckplatz)

Andere Geräte, wie z. B. ein USB-Flash-Laufwerk, das mit einem Adapter verbunden ist, könnten jedoch aufgerufen werden

/ mnt / media_rw / usbdisk (android kitkat 4.4 und höher?) oder / mnt / usbdisk (jellybean 4.1 - 4.2)

XDarkMario
quelle
1
Ja, die Benennung hängt möglicherweise vom Gerät / Hersteller / ROM ab. Aber in der Regel /mnt/*ist nur ein Symlink in all diesen Fällen - mit den "echten Reittieren" unten /storage:)
Izzy
Nun, ich habe auch einen Shell- Ordner unter mnt . Ich schalte Gerät ROM häufig und somit für die roms, die als Standard - Speicher externen SD - Karte macht, die Shell - Ordner verhält sich wie meine internen Speicher und für andere roms , die als interne Speicher nicht Swap sdcard tun, Shell nicht einmal kommt ins Bild. Sie verbleibt dort im Ordner mit allen intakten Daten, ist jedoch für den lokalen Dateimanager nicht zugänglich. Wollte wissen, was genau es ist.
Ali_Waris