47 votes

Confus par les nombreux emplacements de la /sdcard/ virtuelle

Certains appareils (comme mon Nexus 4) n'ont pas d'emplacement externe pour une carte SD. À la place, il y a un dossier racine appelé /sdcard/ qui est traité de la même manière. Mais je trouve aussi d'autres chemins qui pointent tous vers les mêmes fichiers -- il doit y avoir des genres de redirections (je pense que cela s'appelle des symlinks sous Linux).

Tous ces chemins contiennent les mêmes fichiers :

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

Quel chemin est le "réel" ? Et qu'en est-il des autres chemins ? À quoi servent-ils, pourquoi existent-ils ?

39voto

Milner Points 533

Lecture recommandée: Pourquoi /sdcard/ est-il devenu /sdcard/0/ avec la version 4.2?.

En bref: Il s'agit de la fonctionnalité multi-utilisateurs introduite avec Jelly Bean:

  • /storage/emulated/0/: à ma connaissance, cela fait référence au "MMC émulé" ("partie propriétaire"). Habituellement, il s'agit de l'interne. Le "0" représente l'utilisateur ici, "0" étant le premier utilisateur également propriétaire du dispositif. Si vous ajoutez des utilisateurs supplémentaires, ce nombre augmentera pour chacun.
  • /storage/emulated/legacy/ comme précédemment, mais pointant vers la partie de l'utilisateur en cours (pour le propriétaire, il s'agirait d'un lien symbolique vers /storage/emulated/0/). Donc, ce chemin devrait amener chaque utilisateur vers sa "partie".
  • /sdcard/: Selon un commentaire de Shywim, ceci est un lien symbolique vers...
    • /mnt/sdcard (Android < 4.0)
    • /storage/sdcard0 (Android 4.0+)
  • /storage/sdcard0/: Comme il n'y a pas de pendant legacy ici (voir les commentaires ci-dessous), le "0" dans ce cas identifie plutôt le dispositif (carte) lui-même. On pourrait éventuellement connecter un lecteur de carte avec une autre carte SD via OTG, qui deviendrait alors /storage/sdcard1 (pas de preuve pour cela, juste une supposition - mais je dirais une bonne)

Bien que l'on puisse conclure qu'il devrait également y avoir un /storage/sdcard/legacy, ce n'est pas le cas (voir les commentaires) - ce qui correspond parfaitement à mon hypothèse selon laquelle les chiffres ici ne sont pas liés à l'utilisateur, mais plutôt à d'éventuelles cartes multiples: "0" serait toujours celle dans le logement de carte du dispositif, donc pas besoin de lien symbolique "legacy" ici.

0 votes

Merci! Et non, il n'y a pas de chemin /storage/sdcard/legacy.

2 votes

Étrange. Mais cela pourrait être dû au fait qu'il y a à peine des autorisations sur une véritable carte SD (en raison du système de fichiers FAT qui ne les prend pas en charge). Notant la différence (/sdcard0/ versus /emulated/0), le "0" ici pourrait être destiné au cas où l'on attache plusieurs cartes SD via un lecteur de carte et le mode hôte USB. Juste une supposition, pas un fait avéré -- mais je dirais une bonne supposition.

0 votes

Réponse mise à jour en conséquence :)

2voto

XDarkMario Points 21

Oui, un peu confus mais ce sont des chemins alternatifs pour la disposition de la mémoire

/mnt/sdcard0/ (Carte SD virtuelle interne)

et Izzy tu as raison si plusieurs appareils sont connectés, mais le nommage pourrait être différent en fonction de l'appareil.

par exemple /mnt/sdcard1/ (Carte SD physique dans le lecteur SD)

mais d'autres appareils tels qu'une clé USB connectée avec un adaptateur pourraient être appelés

/mnt/media_rw/usbdisk (Android KitKat 4.4 et plus?) ou /mnt/usbdisk (Jelly Bean 4.1 - 4.2)

1 votes

Oui, le nommage peut dépendre du périphérique/fabricant/ROM. Mais généralement, /mnt/* est simplement un lien symbolique dans tous ces cas - avec les "montages réels" se trouvant en dessous de /storage :)

0 votes

Eh bien, j'ai un dossier shell sous mnt aussi. Je change souvent de ROM de périphérique et donc, pour ces ROM, qui font de la carte SD externe la mémoire par défaut, le dossier shell se comporte comme ma mémoire interne, et pour les autres ROM qui n'échangent pas la carte sd comme mémoire interne, le shell ne rentre même pas en ligne de compte. Il reste simplement là dans le dossier avec toutes les données intactes, mais n'est pas accessible par le gestionnaire de fichiers local. Je voulais savoir exactement ce que c'est.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X