El directorio /sdcard y otras convenciones de directorios: ¿cómo está estructurado el sistema de archivos de Android?

Estoy usando el comando "adb shell" para acceder a un LG P690 (dispositivo A) o un Samsung Galaxy SIII (dispositivo B). El dispositivo A también tiene una tarjeta microSD de 32 GB conectada mientras que el dispositivo B no. Cuando desde el indicador de shell hago cd /sdcardy dfobtengo:

  • En el dispositivo A: /sdcardTamaño 14G Blksize 8192
  • En el dispositivo B: /sdcardTamaño 12G Blksize 4096

¿Esto se refiere a la memoria interna? El dispositivo B también tiene un /storagedirectorio que contiene 0 bytes (¿qué es esto?).

Además, ambos tienen un /datadirectorio que sé que es donde van las aplicaciones instaladas. ¿Esto también está en el almacenamiento interno? ¿Cómo sé si /dataestá en SD interna o externa?

Estoy confundido en cuanto a por qué un directorio llamado /sdcardse referiría a la memoria interna en lugar de a la externa. ¿No existe un estándar FHS para el sistema de archivos de Android como lo hay para Linux?

Respuestas (1)

Son dos cosas diferentes, al menos la primera dependiendo de a) la versión de Android, b) el fabricante y c) a veces incluso el dispositivo en cuestión:

  • antes de Android 4.0, /sdcardgeneralmente era donde se encontraba la tarjeta SD externa
  • a partir de Android 4.0 (¿o incluso 3.x?), esto cambió para la mayoría de los dispositivos y, por lo general, se convirtió en el lugar de la llamada tarjeta SD interna.
  • donde se encuentra la tarjeta SDC externa con este último grupo, difiere mucho. Las ubicaciones que conozco incluyen:
    • /sdcard_ext
    • /sdcard/external_sd

Lo que realmente reside dónde, puede comprobarlo con comandos como mounto df. Si bien mountenumerará todos los sistemas de archivos montados (incluidos los "virtuales" como p. ej. /procy /sys), junto con detalles sobre dónde se montaron y qué opciones se usaron, esto puede resultar un poco confuso (al menos para los principiantes). Por lo tanto, es posible que desee usar df, que se adhiere a los "sistemas de archivos reales": no muestra desde dónde están montados, sino que muestra su espacio total/usado/libre, lo que podría ser aún más útil para averiguar qué coincide mejor.

En cuanto a /data: Sí, esto generalmente reside en el almacenamiento interno, pero también puede depender de la implementación. Con Android 4.x, el "almacenamiento interno" y la "tarjeta SDC interna" a menudo están "unificados" (es decir, la "tarjeta SDC interna" a menudo no es más que un directorio en el almacenamiento interno). Esto se hizo para eliminar el problema de un almacenamiento interno lleno (ahora puede "expandirse" en el área SD interna), o una tarjeta SD interna llena y mucho espacio en el almacenamiento interno (puede "expandirse" el otro al revés, también, ya que todo es el mismo "impulso").

Aún así, en el dispositivo B, el comando df muestra /data y /storage/sdcard0 como particiones diferentes, aunque ambas tienen la misma capacidad y muestran la misma cantidad de espacio utilizado. En este dispositivo, /storage/sdcard0 y /storage/extSdCard son probablemente las tarjetas SD internas y externas.
Me parece correcto. En cuanto al almacenamiento interno/tarjeta SD interna: como escribí, eso depende mucho de la implementación. Se recomienda utilizar "almacenamiento unificado" (consulte este blog y la transcripción de esta sesión ), pero no se aplica de ninguna manera.