Practica 3: Proyecto Web 2.0
Asignatura Internet a través de Internet
G-9 / Universidad de Extremadura

sábado, 19 de abril de 2014

Las memorias en los móviles Android

  A veces nuestro móvil Android protesta cuando vamos a instalar una aplicación y no podemos por falta de espacio disponible. Esto sucedía frecuentemente hace algunos años y aunque hoy en día los móviles protestan menos, los muy "baratos" lo siguen haciendo cuando alcanzamos sus límites ¡Y no se soluciona el tema comprando una tarjeta microSD de gran capacidad!: Es otro tipo de memoria el que necesita.

   En esta entrada del blog os voy a hablar de los tipos de memoria en dispositivos Android, ya que además de la RAM, memoria volátil de trabajo, cuyos datos almacenados se pierden al apagar el móvil, existen dos tipos de memoria que puede usarse en los móviles: la interna, mal llamada ROM que a su vez se divide en memoria del dispositivo y memoria de almacenamiento USB y la externa consistente en tarjetas de expansión generalmente microSD.



 PARTE I] La memoria interna del dispositivo

 Contiene una serie de particiones que por motivos de seguridad solo son accesibles por el usuario si éste tiene privilegios de administrador en Android (ROOT):

 /boot: es la partición que contiene el kernel y el bootloader, como su nombre lo indica es la que le permite al teléfono arrancar. Es una partición critica, que debe tratarse con cuidado.
/system: es la partición que contiene el sistema operativo, y las aplicaciones que vienen preinstaladas en él. Si borramos esta partición eliminamos el sistema operativo, pero el dispositivo aún puede iniciarse mientras tengas un recovery, a través del cual podemos instalar otro sistema operativo (llamado ROM).
/recovery: es la partición que contiene la herramienta de recuperación. Puede ser considerada como una partición de arranque alternativa y la herramienta puede ser sustituida por otras de mejores prestaciones. /data: es la partición que contiene los datos del usuario, aquí se almacenan con el tiempo tus contactos, mensajes, configuraciones, y las aplicaciones que has instalado. Cuando restauramos un dispositivo a su estado de fábrica mediante el recovery, lo que hacemos es borrar los datos de esta partición.
/cache: es la partición que guarda el caché. En esta partición se almacenan los datos a los que Android accede con frecuencia, para aumentar la velocidad de respuesta a la hora de guardarlos, al igual que lo hace un navegador, por ejemplo. El problema es que si se acumulan muchos, además de disponer de menor memoria interna para aplicaciones, enlentece el equipo.
/misc: es una partición más importante de lo que podría parecer, en ella se encuentran varios ajustes que pueden referirse a identificadores de tu operador de red, o la configuración de elementos del hardware como el USB. Si se corrompe o pierde podría hacer que algunas características del dispositivo no funcione correctamente.

   En versiones antiguas de Android cada partición tenía asignado un tamaño máximo, ahora el tamaño es compartido entre todas y es el tamaño de la memoria de dispositivo.

PARTE II] La memoria interna de almacenamiento USB, SD interna o de almacenamiento masivo

Se trata de una partición de la memoria interna que imita una tarjeta SD y que por tanto no es volátil.  Aquí se guardan las fotos, música, películas, libros, documentos, etc y contiene una serie de carpetas como /Android, /Bluetoot, /DCIM, Download, temp, etc. Es accesible para cualquier usuario sin privilegios especiales de ROOT.

   Esta memoria no la tienen todos los móviles. Si se intenta hacer una foto en un móvil que no la posea te dirá que insertes una tarjeta microSD y si intentas bajar una aplicación para instalarla no podrás porque para bajarla se necesita esta memoria o la microSD, aunque se instale en la memoria del dispositivo. Esta memoria la poseen teléfonos de gama media-alta y en muchos casos no es necesaria la introducción de la tarjeta microSD porque o bien no es necesaria o bien ni se dispone de puerto para meterla. En el sistema Android, la memoria de almacenamiento USB se encuentra montada sobre la estructura de memoria del dispositivo en la partición /mnt/sdcard, y mediante cable USB podemos acceder a ella activando “almacenamiento masivo” en el móvil en el momento de conectarlo al ordenador.

   En Windows aparecerá con una nueva letra de unidad y accederemos a ella como si se tratase de un pendrive. De esta manera, accediendo a la carpeta DCIM podremos pasar las fotos del móvil al ordenador, etc. Si en el teléfono entramos a través de ajustes a almacenamiento, veremos las memorias que tiene nuestro móvil: si tiene solo la memoria del dispositivo, el almacenamiento USB, o si tenemos insertada alguna tarjeta microSD.

   Si seleccionamos formatear almacenamiento USB, nos va a borrar sólo esta memoria interna, por lo que no afecta al sistema operativo ni a las aplicaciones del sistema. Tampoco a las aplicaciones de usuario instaladas en memoria interna del dispositivo, pero si os va a borrar los datos de los programas, las aplicaciones de usuario instaladas (movidas) a esta memoria desde la memoria del dispositivo, además de fotos y vídeos del Whatsapp, mapas, las fotos de la cámara, música, etc…



PARTE III] La memoria externa, SD externa o de expansión. 

   Realiza las mismas funciones que la memoria de almacenamiento USB, aunque la velocidad de lectura-escritura sobre ella es menor.

   Para preparar la tarjeta microSD, aunque suele venir preparada de fábrica, hay que ir a través de ajustes a almacenamiento y debemos darle a la opción de retirar la tarjeta SD. Entonces, ya podemos darle a la opción de formatear tarjeta sd: se borrarán los archivos que tengamos en la tarjeta. Ésto incluye los programas que estén instalados (movidos) en la tarjeta SD y no en la memoria interna. El formato de la tarjeta es FAT32. También aquí podemos elegir si el almacenamiento predeterminado para fotos, etc es el almacenamiento USB (memoria interna rápida) o la tarjeta microSD .

   Algunos móviles actuales de alta gama carecen del puerto de la tarjeta microSD por poseer suficiente con la capacidad de la memoria de almacenamiento USB, más rápida y eficiente.

 Eso es todo por hoy

8 comentarios:

  1. Hola Ana Beatriz.

    Solo añadir/comentar unas cosas:
    1) En la parte I, dices "ahora el tamaño es compartido entre todas y es el tamaño de la memoria de dispositivo", y no es cierto. La memoria del dispositivo lo ocupan esas particiones (y alguna más que dependerá de la versión del terminal, como la /radio de los HTC, la maldita /efs de Samsung, etc) y la sdcard de la que hablas en la parte II.

    2) Desde Android 3.0 no existe la modalidad almacenamiento masivo (al menos sin permisos root). Ahora es MTP, tanto para scdard como para extsdcard:
    http://es.wikipedia.org/wiki/MTP
    Desde Android 4.1 o 4.2 (ahora no recuerdo cuál) el punto de montaje de la sdcard es storage/emulated/0.
    Y que yo sepa, todos los móviles tienen memoria interna (si no, no servirían de nada...).

    3) La tarjeta microSD NO realiza las mismas funciones que la memoria interna (ya les gustaría a muchos usuarios sin memoria interna pero con la microSD vacía). Prácticamente todos los datos de aplicaciones van a la memoria interna, las fotos de la cámara (aunque hay aplicaciones de cámara que permiten seleccionar la memoria de destino, pero no todas) y ya hay aplicaciones que no permiten poner sus datos en la memoria externa (TomTom, al menos con Android 4.4.2).
    Es la primera vez que oigo cambiar el destino de las fotos desde el menú de Ajustes, siempre lo he visto/hecho desde la propia cámara. ¿podrías poner una captura de dicho menú?.
    Android también acepta extFAT (menos mal) y algunos kernels incluso NTFS.

    El hecho de que no los nuevos terminales de gama alta prescindan de microSD no tiene nada que ver con lo que dices (a mi con 32 GB de memoria interna no me llega... y ya ni hablar de 16 GB). Al igual que los botones de navegación físicos, el tema tiene que ver con Google:
    http://www.elandroidelibre.com/2014/02/quiere-google-limitar-el-uso-de-tarjetas-microsd-en-android.html

    Solo añadir que con permisos root y un poco de cuidado, se puede montar la memoria externa como interna... pero esa es otra guerra.

    Un saludo.

    ResponderEliminar
  2. Hola Roberto. Gracias por comentar.
    Te comento:
    1) Por supuesto que hay más particiones en la "memoria del dispositivo", lo veo en mi propio móvil rooteado y acabo de contar 21. Sólo cito las más importantes.
    La sd card interna que hablo en la parte II no ocupa nada en la memoria de dispositivo que hablo en la parte I porque se accede a ella gracias a un punto de montaje situado en la memoria del dispositivo como /sdcard, etc
    Para que nos aclaremos: Los móviles tienen "memoria interna" tipo NAND flash particionada en 1 o 2 particiones.
    La 1ª es memoria del dispositivo y contiene el S.O., aplicaciones, etc, en las carpetas mencionadas y otras más, y la 2ª, que no tienen todos los móviles, "memoria de almacenamiento USB", o "SD interna" o antes memoria de almacenamiento masivo y contiene fotos, videos, etc.
    Como ejemplo en mi móvil que no tiene puerto para microSD:
    https://www.dropbox.com/s/qhegsb1kxfoiu8o/photo_2014-04-21_01-08-57.jpg
    Desde v4.0 las particiones dentro de la memoria de dispositivo no tienen un tamaño fijo sino que es dinámico, si el fabricante del móvil quiere:
    http://openspa.info/threads/conocer-el-sistema-operativo-android.26532/
    2) Cierto que desde v3.0 el acceso a la partición SD interna se realiza por protocolos MTP/PTP de Microsoft por lo que no hay letra de unidad en Windows. En mi móvil al pincharlo por USB al ordenador y seleccionar "archivos" uso MTP y si "fotos" uso PTP .
    La ventaja de MTP frente a almacenamiento masivo es que admite el acceso simultaneo a la partición desde el móvil y desde Windows En modo almacenamiento masivo hay que desmontar la partición en Android para acceder desde Windows y viceversa. Y repito: yo no he dicho que los móviles no tengan memoria interna (todos tienen memoria del dispositivo que es una partición de la interna NAND flash) sino que lo que he dicho es que no todos los móviles tienen la segunda partición en la NAND flash y que también es interna: es la memoria que podemos llamar SD interna, almacenamiento USB o antiguamente almacenamiento masivo
    3) Yo no digo que la tarjeta microSD realice las mismas funciones que la memoria interna (Nand flash) sino de una de sus particiones, la segunda llamada SD interna. Y como ejemplo mi móvil, que no tiene microSD y la partición SD interna realiza sus funciones. Pero otros móviles no poseen esta partición sino sólo la primera, la memoria del dispositivo, y tienen que usar obligatoriamente microSD si quieren hacer fotos y demás.
    Sobre el destino de las fotos, tampoco he dicho que se seleccionaba desde el menú ajustes de Android. Por supuesto que se realiza desde ajustes de la cámara: si se selecciona "teléfono" las fotos irán a la partición SD interna, y si se selecciona "tarjeta de memoria" irán a la microSD. Estoy de acuerdo que android reconoce extFAT, FAT16, FAT32, ext2,3,4 (no siempre todas versiones) y algunos NTFS como el mío, ya que si no los pendrives formateados en NTFS que conecto por cable OTG no me los reconocería.
    Tienes razón en que muchos móviles no llevan puerto microSD porque Google, a partir de kitkat, impide que las aplicaciones escriban en la tarjeta microSD, cosa un poco ridícula y que encima ya hay parches incluso en la propia tienda de Google, en Google Play: SDfix, que funciona con privilegios root y la búsqueda directa desde el móvil solo te aparecerá si tu móvil está en la lista de Google de los que poseen kitkat. Pero lo que digo es que un móvil con 16, 32, 64 GB, según el usuario, no necesita microSD.
    Respecto a lo de montar la memoria externa como interna es cierto que es otra guerra con muchas batallas: modificaciones del archivo vold.fstab, o segundas particiones en la microSD, etc Por cierto, me has dado una idea sobre lo que escribir en el blog. Lo haré sobre esto último.
    Un saludo

    ResponderEliminar
  3. Hola de nuevo!

    Tendrás 21 carpetas, no particiones. Normalmente, será algo así:
    http://oi41.tinypic.com/11t5x7c.jpg
    http://forum.xda-developers.com/showthread.php?t=2450045
    Puede haber alguna/s más/menos, pero no 21.

    ¿Seguro que hay terminales sin memoria interna (entendiendo como tal a /sdcard)?
    Sin ella, no puedes usar el cacharro para nada... aunque tenga microSD, deberías poder usarlo sin la tarjeta.

    Me encanta MIUI, pero me da más disgustos que alegrías... además, no tengo ninguna intención de volver a Jelly Bean.

    Un saludo! Te seguiré leyendo.

    ResponderEliminar
  4. Hola Roberto, encantada de que hayas vuelto a escribirme.

    Para que no quede ninguna duda:

    Con root explorer me aparece 21 “aparentes” carpetas en la raíz de la memoria interna de mi móvil “Xiaomi Mi2s 16GB”. Y digo aparentes porque en realidad son puntos de montaje de particiones.

    Para que no te quede duda. Afirmo con ROTUNDIDAD que mi móvil posee 27 particiones en “internal storage MMC”, la llamada memoria interna y llamadas mmcblk0pX, siendo X un número desde 1 a 27. Comprobado con dos utilidades Android en las opciones de modo avanzado: “Diskinfo” y “Partition Table”.

    Mira las capturas: https://www.dropbox.com/sh/ljzr16ee52ktaso/-fSTsM0Lq9

    Lo que normalmente se denomina “memoria del dispositivo” son las 26 primeras, desde X=1 a X=26 y lo que se denomina “memoria USB” o “CD interna” es la partición con X=27.

    Resumen:

    1] La “memoria del dispositivo” no posee carpetas sino particiones, que en mi móvil son 26, siendo en mi móvil las más grandes la x=23 donde se monta /System (está montada), la x=24 donde se monta /System1 (no la tengo montada) y la X=26 donde se monta /data (está montada) y en esta última es donde van las app de usuario. Tengo dos System porque tengo dos sistemas operativos: en /System tengo instalado MIUI v5 basado en Android v4.1.1 JB, y en /System1 tengo Cianogenmod 11 (no oficial) basado en Android v4.4.2 KK. Y me gusta más MIUI a pesar de basarse en JB aunque pronto saldrá MIUI v6 basado en KK.

    2] La “memoria USB” es una sola partición, x=27 o con todas sus palabras: mmcblk0p27 y aquí si que no hay particiones sino carpetas. En esta memoria me van a parar las fotos, videos, etc.

    3] Lo que se puede ver con los exploradores de archivos tipo root no son las particiones sino los “puntos de montaje” y los enlaces simbólicos junto a los hardlinks. Por ejemplo, no me aparece /system1 porque la partición a la que corresponde mmcblk0p24 no la tengo montada y si empiezo a crear en la raíz enlaces simbólicos a la partición mmcblk0p26 donde se monta /data con el nombre /hola, /que, /tal, /estas, me aparecerán 4 pseudoparticiones que en realidad serán la misma que /data.

    4] La partición mmcblk0p27 (en mi móvil, claro) montada como /storage_int puede ser tan pequeña como cero y el móvil funcionaría con las apps del sistema y el resto de todo el sistema que reside en la “memoria del dispositivo”. Yo he visto móviles recién comprados que no pueden hacer fotos ni instalar apps porque antes hay que bajarlas.
    Repito: Nunca he dicho que existan móviles sin memoria interna sino sin memoria USB que es “parte” de la interna. Además la memoria interna no es /sdcard. Esto último puede ser el punto de montaje de una partición que si es la x=27 (en mi móvil) sería parte de mi MMC , la ”memoria de almacenamiento USB”, y por tanto “interna”, o podría ser el punto de montaje de la tarjeta SD externa, o podría ser un enlace simbólico a lo que quieras. Por cierto, en mi móvil /sdcard ni siquiera es un punto de montaje sino un enlace simbólico a /storage/sdcard0 que a su vez es un hardlink a /storage_int, el auténtico punto de montaje de la partición mmcblk0p27 que trabaja como memoria de almacenamiento USB.

    Y no voy a hablar sobre las CD externas que llevan una partición FAT32 y carpetas, a no ser que le crees tu mas particiones para aprovecharlas como extensión de /data o como /swap.

    Hasta otra, Roberto. Un saludo.

    ResponderEliminar
    Respuestas
    1. Acabáramos!!! Si me llegas a decir desde el principio que es un Xiaomi (¿mi?) con Dual Boot... tendrás unas cuantas particiones repetidas, y algunas propias del fabricante.

      Lo de las "memorias" es simple cuestión semántica. Para mí, la sdcard ha sido y será la memoria interna: Cyano lo llama "Almacenamiento Interno", Titanium "Interna" y Solid Explorer "Memoria interna". Tú llamas memoria interna al almacenamiento total del dispositivo (ROM+sdcard)... también me vale. Lo que desde luego ya no existe es la memoria de almacenamiento USB.
      Android podría "funcionar" sin ella, para llamar y mandar mensajes... poco más. Una (gran) parte de cada aplicación de usuario se instala en la memoria "interna", así que sin ella poco puedes instalar.

      Un saludo!

      Eliminar
  5. Cierto que volvemos a chocar con la semántica. Yo no llamo memoria interna a lo que dices que llamo "ROM + sdcard". Yo llamo memoria interna al chip EMMC con sus múltiples particiones, entre las cuales hay una que yo, por lo que he leído, se puede denominar memoria USB porque se puede acceder a ella desde el PC mediante cable USB y que se trata de una unidad sdcard "emulada" en una partición de la memoria interna. Lo de ROM es una denominación "sin sentido" que cuyo significado de siglas se contradice con su función.

    No creo que por ser xiaomi mi móvil tenga tantas particiones. Incluso los móviles de bajísima gama android, los "clones", tienen multitud de particiones que no se ven todas en el explorador root de archivos porque no estan montadas en el sistema. Como ejemplo puedes ver el archivo scatter que he usado para flasear una ROM en un "clon" chino de samsung S4, y que posee 19 particiones en el chip:

    https://www.dropbox.com/s/2i3te9xhpjklia5/MT6572_Android_scatter.txt

    Claro que las aplicaciones de usuario se instalan en la memoria interna aunque semánticamente no coincidimos en lo que es. Para mí, se instalan en una de las múltiples particiones de la memoria interna que se monta como "/data" y que pueden pasarse, al menos en parte, a la sdcard "emulada" en una partición, la memoria USB o sdcard "interna" (aunque no sea una auténtica sdcard) o bien a la sdcard externa pinchada en su puerto correspondiente.
    Si que puedes instalar apps sin tener la partición sdcard emulada, ya que se instalan en otra partición montada en "/data". Simplemente pincha una sdcard externa, baja la app del google play o de donde quieras a la sdcard externa, realizas la instalación y a continuación sacas la sd externa. Esa aplicación funcionará en todo lo que no sea el uso de sdcard tanto emulada como externa. Por supuesto, si es una aplicación de fotografía, no funcionará si no tiene sdcard emulada no escard externa, pero si es una aplicación de consultas en internet, será totalmente operativa.

    Por cierto, ¿me puedes decir cuantas particiones aparecen en tu móvil en la app "diskinfo" marcando en settings TODO excepto "compact mode"? Es simple y sana curiosidad.

    Un saludo

    ResponderEliminar
  6. Ahí voy:

    https://dl.dropboxusercontent.com/u/6314591/Screenshot_2014-04-29-12-00-28.png
    https://dl.dropboxusercontent.com/u/6314591/Screenshot_2014-04-29-12-00-49.png
    https://dl.dropboxusercontent.com/u/6314591/Screenshot_2014-04-29-12-00-57.png
    https://dl.dropboxusercontent.com/u/6314591/Screenshot_2014-04-29-12-01-04.png
    https://dl.dropboxusercontent.com/u/6314591/Screenshot_2014-04-29-12-01-10.png
    https://dl.dropboxusercontent.com/u/6314591/Screenshot_2014-04-29-12-01-17.png

    Lo de la zRam es cosa del kernel, lo crea por defecto aunque esté desactivado.
    Y el resto ya ves: /efs, /cache, /system, /preload, /data, /recovery, /radio, /ota, /boot... poco más.


    Con respecto a lo de /data: claro que las aplis y sus datos importantes se instalan ahí. Pero esa partición se redimensiona (no sé si es así exactamente), de forma que cuando necesita espacio lo "coge" de /sdcard.
    Haz la prueba: si metes un archivo grande a la /sdcard, verás como la memoria disponible para aplicaciones (Ajustes-Aplicaciones-pestaña Descargadas) disminuye. Y viceversa: si descargas una aplicación grande, verás como el espacio disponible de la /sdcard disminuye. O si desinstalas una apli grande, el espacio disponible de la /sdcard aumentará.

    Windows también llama a la /sdcard "Almacenamiento interno":
    https://dl.dropboxusercontent.com/u/6314591/s3.png

    ResponderEliminar
  7. Sobre la zRAM: http://geekland.hol.es/optimizar-el-rendimiento-con-zram/

    Mi móvil no la usa porque no lo necesita.

    Me ha sorprendido que tengas "dos" chips de memoria interna, los denominados mmcblk0 (14 particiones, dos de arranque, no todas montadas) y mmcblk1 de una partición reconocida como "SD CARD", cuando en mi móvil era una partición más de mmcblk0 que emulaba SD CARD. Puede que sea debido a un chip de otra tecnología:
    http://www.digitalinternals.com/259/20140209/android-mmc-mmcblk-partition-layout/

    Windows llama "almacenamiento interno" a la partición p12 del chip MMC (mmcblk0) de tu móvil y montado en /data y que tienes casi todo libre, y "tarjeta sd" a la única partición que tienes en mmcblk1 casi toda ocupada. En mi caso son las particiones p26 y p27 del mismo chip emmcblk0.

    Por cierto, ahora que me fijo bien, en la imagen que me indicas Windows no llama "almacenamiento interno" a la SD card sino a la partición p11 montada en /data, fíjate su tamaño. A la SD card le llama "tarjeta SD", fijate bien en los tamaños que indica Windows y los que indica diskinfo.

    De todas formas, no te fíes de Windows. Sólo ve particiones montadas y puede interpretar datos erróneamente. Tengo un pendrive que he reflaseado su chip y windows lo considera un disco duro, no una unidad extraible. E incluso al hacer particiones en él, las ve todas, y en los pendrives sólo debería ver la primera.

    Un saludo

    ResponderEliminar