Diferencia entre revisiones de «Usuario:Juanda/android/filesystem»

De WikiEducator
Saltar a: navegación, buscar
(Particiones habituales y directorios)
 
(9 revisiones intermedias por el mismo usuario no mostrado)
Línea 4: Línea 4:
 
<div class="slide">
 
<div class="slide">
 
==Almacenamiento en Sistemas Android==
 
==Almacenamiento en Sistemas Android==
 +
</div>
 +
<div class="slide">
 
*Los dispositivos Android pueden tener tres tipos de almacenamiento:   
 
*Los dispositivos Android pueden tener tres tipos de almacenamiento:   
 
:-RAM
 
:-RAM
 
:-Almecenamiento interno flash
 
:-Almecenamiento interno flash
 
:Memoria externa mediante tarjeta SD
 
:Memoria externa mediante tarjeta SD
*La memoria interna es el equivalente al disco duro del ordenador. Aquí es donde el sistema operativo del dispositivo (firmware), las aplicaciones, y los datos de usuario se guardan.  
+
*La memoria interna es el equivalente al disco duro del ordenador.
*La tarjeta SD, normalmente se dedica a almacenamiento de usuario, imágenes, vídeos y música.  
+
*La tarjeta SD, normalmente se dedica a almacenamiento tipo imágenes, vídeos y música y datos compartidos entre aplicaciones.  
*No todos los dispositivos permiten usar tarjetas SD (ejemplo Nexus 4): crearán una partición que hace las veces.
+
*No todos los dispositivos permiten usar tarjetas SD, crearán una partición que haga las veces.
 
</div>
 
</div>
  
 
<div class="slide">
 
<div class="slide">
 +
[[Archivo:Particionesandroid.png]]
 
==Sistemas de Ficheros==
 
==Sistemas de Ficheros==
 +
</div>
 +
<div class="slide">
 +
 
*Dependen del fabricante del movil
 
*Dependen del fabricante del movil
 
*Los más habituales son yaffs2 (Yet Another Flash File System) para /system o /data   
 
*Los más habituales son yaffs2 (Yet Another Flash File System) para /system o /data   
 
*/sdcard suele ser vfat
 
*/sdcard suele ser vfat
 
*Últimamente se está usando ext4 en vez de yaffs
 
*Últimamente se está usando ext4 en vez de yaffs
 +
</div>
 +
 +
<div class="slide">
 +
*Particiones montadas en un nexus 4:
 +
<source lang="bash">
 +
shell@android:/ # mount
 +
rootfs / rootfs ro,relatime 0 0
 +
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
 +
devpts /dev/pts devpts rw,relatime,mode=600 0 0
 +
proc /proc proc rw,relatime 0 0
 +
sysfs /sys sysfs rw,relatime 0 0
 +
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
 +
none /acct cgroup rw,relatime,cpuacct 0 0
 +
tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0
 +
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
 +
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
 +
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
 +
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,relatime,data=ordered 0 0
 +
/dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 rw,nosuid,nodev,noatime,data=ordered 0 0
 +
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,nosuid,nodev,noatime,noauto_da_alloc,data=ordered 0 0
 +
/dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 rw,nosuid,nodev,relatime,nodelalloc,data=ordered 0 0
 +
/dev/block/platform/msm_sdcc.1/by-name/modem /firmware vfat ro,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
 +
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
 +
shell@android:/ #
 +
</source>
 +
</div>
 +
 +
<div class="slide">
 +
*Podemos utilizar comandos de Unix para ver por ejemplo la ocupación de cada partición:
 +
<source lang="bash">
 +
shell@android:/ # df
 +
Filesystem            Size  Used  Free  Blksize
 +
/dev                  936M    32K  936M  4096
 +
/mnt/secure            936M    0K  936M  4096
 +
/mnt/asec              936M    0K  936M  4096
 +
/mnt/obb              936M    0K  936M  4096
 +
/system                827M  512M  315M  4096
 +
/cache                551M    9M  541M  4096
 +
/data                    5G    2G    3G  4096
 +
/persist                15M    4M    11M  4096
 +
/firmware              63M    53M    10M  16384
 +
/mnt/shell/emulated      5G    2G    3G  4096
 +
shell@android:/ #
 +
</source>
 +
</div>
 +
<div class="slide">
 +
====Android Multiusuario====
 +
*Funciona a partir de Android 4.2 y para tabletas.
 +
*Cada cuenta aparece como una nueva tableta y tiene sus propias aplicaciones, imágenes...
 +
*El sistema creará particiones para el almacenamiento interno de cada usuario.
 +
</div>
 +
<div class="slide">
 +
*Hay algunos directorios que son enlaces a otros:
 +
<source lang="bash">
 +
shell@android:/ # ls -l /etc
 +
lrwxrwxrwx root    root              2013-04-17 19:56 etc -> /system/etc
 +
shell@android:/ # ls -l /sdcard
 +
lrwxrwxrwx root    root              2013-04-17 19:56 sdcard -> /storage/emulated/legacy
 +
</source>
 
</div>
 
</div>
  
Línea 28: Línea 93:
 
*Cuando el usuario comparte por USB la memoria del movil, se hace un kill de cualquier aplicación que esté instalada ahí.  
 
*Cuando el usuario comparte por USB la memoria del movil, se hace un kill de cualquier aplicación que esté instalada ahí.  
 
*Se instalan en los directorios /system/app y /data/app
 
*Se instalan en los directorios /system/app y /data/app
 +
</div>
  
 +
<div class="slide">
 
====Datos de las aplicaciones====
 
====Datos de las aplicaciones====
 
*Android permite almacenar ficheros en la memoria interna del teléfono.  
 
*Android permite almacenar ficheros en la memoria interna del teléfono.  
Línea 36: Línea 103:
 
*Cuando trabajes con ficheros en Android, ten siempre en cuenta que la memoria disponible de los teléfonos móviles es limitada.
 
*Cuando trabajes con ficheros en Android, ten siempre en cuenta que la memoria disponible de los teléfonos móviles es limitada.
 
</div>
 
</div>
 +
 
<div class="slide">
 
<div class="slide">
 
*Hay ciertos datos comunes entre aplicaciones que se guardan en la tarjeta SD, en los siguientes directorios:
 
*Hay ciertos datos comunes entre aplicaciones que se guardan en la tarjeta SD, en los siguientes directorios:
Línea 47: Línea 115:
 
</div>
 
</div>
  
 +
<div class="slide">
 
==Particiones habituales y directorios==
 
==Particiones habituales y directorios==
*Debemos tener claro lo que es una partición, un punto de montaje y la estructura de directorios de Linux.
+
</div>
* Estas son las particiones que monta mi movil:
+
<source lang="bash">
+
shell@android:/ # cat fstab.mako
+
# Android fstab file.
+
 
+
#<src>                                        <mnt_point>  <type>  <mnt_flags and options>  <fs_mgr_flags>
+
# The filesystem that contains the filesystem checker binary (typically /system) cannot
+
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
+
 
+
/dev/block/platform/msm_sdcc.1/by-name/system      /system        ext4    ro,barrier=1                                                    wait
+
/dev/block/platform/msm_sdcc.1/by-name/cache        /cache          ext4    noatime,nosuid,nodev,barrier=1,data=ordered                    wait,check
+
/dev/block/platform/msm_sdcc.1/by-name/userdata    /data          ext4    noatime,nosuid,nodev,barrier=1,data=ordered,noauto_da_alloc    wait,check,encryptable=/dev/block/platform/msm_sdcc.1/by-name/metadata
+
/dev/block/platform/msm_sdcc.1/by-name/persist      /persist        ext4    nosuid,nodev,barrier=1,data=ordered,nodelalloc                  wait
+
/dev/block/platform/msm_sdcc.1/by-name/modem        /firmware      vfat    ro,uid=1000,gid=1000,dmask=227,fmask=337                        wait
+
shell@android:/ #
+
</source>
+
 
+
*Si queremos ver la ocupación del movil:
+
<source lang="bash">
+
shell@android:/ # df
+
Filesystem            Size  Used  Free  Blksize
+
/dev                  936M    32K  936M  4096
+
/mnt/secure            936M    0K  936M  4096
+
/mnt/asec              936M    0K  936M  4096
+
/mnt/obb              936M    0K  936M  4096
+
/system                827M  512M  315M  4096
+
/cache                551M    9M  541M  4096
+
/data                    5G    2G    3G  4096
+
/persist                15M    4M    11M  4096
+
/firmware              63M    53M    10M  16384
+
/mnt/shell/emulated      5G    2G    3G  4096
+
shell@android:/ #
+
</source>
+
[[Archivo:Particionesandroid.png]]
+
*Hay algunos directorios que son enlaces a otros:
+
<source lang="bash">
+
shell@android:/ # ls -l /etc
+
lrwxrwxrwx root    root              2013-04-17 19:56 etc -> /system/etc
+
shell@android:/ # ls -l /sdcard
+
lrwxrwxrwx root    root              2013-04-17 19:56 sdcard -> /storage/emulated/legacy
+
</source>
+
  
 +
<div class="slide">
 
*Particiones estándar de la memoria interna:
 
*Particiones estándar de la memoria interna:
 
:/boot
 
:/boot
Línea 99: Línea 128:
 
:/misc
 
:/misc
  
 +
</div>
 +
 +
<div class="slide">
 
*Particiones en la tarjeta SD:
 
*Particiones en la tarjeta SD:
 
:/sdcard
 
:/sdcard
 
:/sd-ext
 
:/sd-ext
  
 +
</div>
 +
 +
<div class="slide">
 
====Partición /boot====
 
====Partición /boot====
 
La partición de arranque se encarga de gestionar el arranque del dispositivo. En su interior encontramos el llamado bootloader y el kernel. Sin esta partición, el dispositivo sencillamente no sería capaz de iniciarse. Es muy importante saber que, si formateamos esta partición (con el ClockworkMod Recovery, por ejemplo), no debemos reiniciar el dispositivo bajo ningún concepto antes de instalar otra, ya que no volvería a iniciarse. Esto se hace cuando se va a instalar una ROM que incluye una partición /boot. Normalmente cuando vas a instalar una ROM cocinada, el desarrollador deja muy claros los pasos a seguir, y si entre ellos se encuentra formatear esta partición, será porque la ROM incluye /boot.
 
La partición de arranque se encarga de gestionar el arranque del dispositivo. En su interior encontramos el llamado bootloader y el kernel. Sin esta partición, el dispositivo sencillamente no sería capaz de iniciarse. Es muy importante saber que, si formateamos esta partición (con el ClockworkMod Recovery, por ejemplo), no debemos reiniciar el dispositivo bajo ningún concepto antes de instalar otra, ya que no volvería a iniciarse. Esto se hace cuando se va a instalar una ROM que incluye una partición /boot. Normalmente cuando vas a instalar una ROM cocinada, el desarrollador deja muy claros los pasos a seguir, y si entre ellos se encuentra formatear esta partición, será porque la ROM incluye /boot.
 +
</div>
  
 +
<div class="slide">
 
====Partición /system ====
 
====Partición /system ====
 +
*La partición de sistema contiene básicamente el sistema operativo en sí (excepto el kernel, ramdisk y el bootloader).
 +
*Incluye la interfaz de usuario de Android, así como las aplicaciones de sistema que vienen pre instaladas en el dispositivo.
 +
*Formatear esta partición borraría Android del dispositivo, aunque podría arrancar para, por ejemplo, iniciarlo en modo bootloader o en modo recuperación para instalar una nueva ROM.
 +
*Normalmente se carga en modo solo lectura y solo se puede modificar en circunstancias especiales.
 +
</div>
  
La partición de sistema contiene básicamente el sistema operativo en sí (excepto el kernel y el bootloader). Incluye la interfaz de usuario de Android, así como las aplicaciones de sistema que vienen pre instaladas en el dispositivo. Formatear esta partición borraría Android del dispositivo, aunque podría arrancar para, por ejemplo, iniciarlo en modo bootloader o en modo recuperación para instalar una nueva ROM.
 
  
 +
<div class="slide">
 
====Partición /recovery====
 
====Partición /recovery====
 +
*La partición de recuperación se puede considerar como una partición alternativa a la de inicio (/boot).
 +
*Permite iniciarlo en un modo especial llamado modo recuperación, el cual muestra una consola con la que realizar tareas de mantenimiento o recuperación de datos.
 +
</div>
  
La partición de recuperación se puede considerar como una partición alternativa a la de inicio (/boot). Permite iniciarlo en un modo especial llamado modo recuperación, el cual muestra una consola con la que realizar tareas de mantenimiento o recuperación de datos. Es muy típico instalar un sistema de recuperación personalizado como el ClockworkMod Recovery, el cual permite hacer tareas más avanzadas como limpiar o borrar estas particiones de manera individual, crear particiones, hacer copias de seguridad y restaurarlas, y lo más importante, flashear ROMs cocinadas.
 
  
 +
<div class="slide">
 
====Partición /data====
 
====Partición /data====
 
 
Esta partición contiene los datos del usuario, es decir, todo lo que el usuario ha creado o modificado, por ejemplo tenemos esta lista de datos que pertenecen a esta partición:
 
Esta partición contiene los datos del usuario, es decir, todo lo que el usuario ha creado o modificado, por ejemplo tenemos esta lista de datos que pertenecen a esta partición:
 
Aplicaciones y widgets instalados (no las que venían pre instaladas en el dipositivo, las cuales están en la partición /system)
 
Aplicaciones y widgets instalados (no las que venían pre instaladas en el dipositivo, las cuales están en la partición /system)
Línea 127: Línea 171:
 
Datos del calendario
 
Datos del calendario
 
....
 
....
 +
</div>
  
 +
<div class="slide">
  
 
====Partición /cache====
 
====Partición /cache====
 +
*Esta partición es en la que Android guarda datos a los que el usuario accede con frecuencia, para que la carga de estos datos sea mucho más rápida cuando sea solicitada.
 +
*Normalmente no son ficheros críticos para la operación del dispositivo y se pueden limpiar de contenidos (wipe), especialmente en las actualizaciones mayores.
 +
</div>
  
Esta partición es en la que Android guarda datos a los que el usuario accede con frecuencia, para que la carga de estos datos sea mucho más rápida cuando sea solicitada. Esto hace que tareas frecuentes funcionen mucho más rápido que otras que no sean tan habituales. Limpiar esta partición no afectará en absoluto a los datos personales, simplemente afectará a esta funcionalidad que pretende mejorar el rendimiento del dispositivo. En cualquier caso, una vez limpia, con el uso se volverá a rellenar con los datos que el sistema operativo considere más oportunos.
+
<div class="slide">
 
+
 
====Partición /misc====
 
====Partición /misc====
  
 
Esta partición contiene información adicional relacionada con la configuración de sistema, en forma de "interruptores" de encendido/apagado. Esta información puede incluir el CID (Carrier or Region ID - identificador del operador o región), la configuración USB o ciertos ajustes hardware. Es una partición importante que si se pierde o corrompe puede hacer que algunas características del dispositivo dejen de funcionar.
 
Esta partición contiene información adicional relacionada con la configuración de sistema, en forma de "interruptores" de encendido/apagado. Esta información puede incluir el CID (Carrier or Region ID - identificador del operador o región), la configuración USB o ciertos ajustes hardware. Es una partición importante que si se pierde o corrompe puede hacer que algunas características del dispositivo dejen de funcionar.
 +
</div>
  
/sdcard
+
<div class="slide">
 +
====Partición /sdcard====
  
 
Esta partición pertenece a la tarjeta SD. Aquí es donde se guardan los datos que se quieran almacenar, como archivos multimedia, documentos, ROMs, y un largo etcétera, pero además muchas aplicaciones instaladas por el usuario guardan aquí todos los datos y configuraciones. Esta partición se puede borrar, siempre y cuando se hayan hecho copias de seguridad de los datos.  
 
Esta partición pertenece a la tarjeta SD. Aquí es donde se guardan los datos que se quieran almacenar, como archivos multimedia, documentos, ROMs, y un largo etcétera, pero además muchas aplicaciones instaladas por el usuario guardan aquí todos los datos y configuraciones. Esta partición se puede borrar, siempre y cuando se hayan hecho copias de seguridad de los datos.  
Línea 144: Línea 194:
  
 
La partición de la tarjeta SD externa, a diferencia de la /sdcard interna, no se almacenan datos del sistema o de las aplicaciones de ningún tipo, todo el contenido ha sido introducido por el usuario, por lo que su contenido puede ser borrado sin problemas, siempre y cuando los datos se hayan guardado en el PC, o no se quieran conservar.
 
La partición de la tarjeta SD externa, a diferencia de la /sdcard interna, no se almacenan datos del sistema o de las aplicaciones de ningún tipo, todo el contenido ha sido introducido por el usuario, por lo que su contenido puede ser borrado sin problemas, siempre y cuando los datos se hayan guardado en el PC, o no se quieran conservar.
 +
</div>
  
/sd-ext
+
<div class="slide">
 +
====Partición /sd-ext====
 +
*Partición adicional de la tarjeta SD que actúa como una extensión de la partición /data, cuando se usa con ciertas ROMS que tienen una funcionalidad especial llamada APP2SD+ o data2ext.
 +
*Especialmente útil en dispositivos con una memoria interna muy pequeña.
 +
*Puede usarse para instalar aplicaciones más allá de las que la memoria interna permite, siempre y cuando la ROM que se tenga instalada, tenga activada esta capacidad.
 +
*Borrar esta partición será esencialmente lo mismo que borrar la partición /data, es decir, se pueden perder contactos, SMS, aplicaciones instaladas por el usuario, etc.
 +
</div>
  
Por último, la partición /sd-ext, no es una partición estándar, aunque se ha convertido muy popular en el mundo de la Scene de Android. Básicamente es una partición adicional de la tarjeta SD que actúa como una extensión de la partición /data, cuando se usa con ciertas ROMS que tienen una funcionalidad especial llamada APP2SD+ o data2ext. Es especialmente útil en dispositivos con una memoria interna muy pequeña. Puede usarse para instalar aplicaciones más allá de las que la memoria interna permite, siempre y cuando la ROM que se tenga instalada, tenga activada esta capacidad.
+
<div class="slide">
 
+
==Comandos del sistema==
Borrar esta partición será esencialmente lo mismo que borrar la partición /data, es decir, se pueden perder contactos, SMS, aplicaciones instaladas por el usuario, etc.
+
</div>
 
+
<div class="slide">
*Cada dispositivo puede tener unas particiones distintas. Los que listo a continuación son los más comunes:
+
====Comandos en Linux====
 
+
* <code>/boot</code> Es la partición de arranque del sistema Android. En esta partición se guarda el kernel y el ramdisk. El '''kernel''' es el núcleo software del dispositivo. Permite la comunicación entre el hardware y el software y otros aspectos básicos del dispositivo como los formatos de ficheros soportados. El '''ramdisk''' contiene los primeros bits de Android que se cargan. Es el software que carga todo lo demás.
+
 
+
* <code>/recovery</code> Esta partición guarda el software de recovery, el cual da al usuario acceso a funciones especiales como la actualización del sistema operativo o hacer un backup del software actual. Se puede considerar como una partición de boot alternativa, que permite arrancar el sistema con una consola de recuperación para tareas de mantenimiento o restauración.
+
 
+
* <code>/system</code> Es el directorio principal donde está todo el sistema operativo (salvo el kernel y el ramdisk). Normalmente se carga en modo solo lectura y solo se puede modificar en circunstancias especiales.
+
 
+
* <code>/cache</code> Ficheros temporales de Android. Normalmente no son ficheros críticos para la operación del dispositivo y se puede limpiar de contenidos (wipe), especialmente en las actualizaciones mayores. 
+
 
+
* <code>/data</code> Aquí se guardan los datos del usuario. Cuando descargamos una aplicación del Play Store viene aquí. Los settings de la aplicación también. Un SMS que recibamos, también viene aquí.
+
 
+
* <code>/sdcard</code> Este directorio contendrá los ficheros de la tarjeta SD. Se usa por las aplicaciones como espacio de "propósito general". Los dispositivos sin tarjeta SD también pueden disponer de esta partición "enlazada" a un directorio del almacenamiento interno.
+
 
+
==Comprobación desde el terminal==
+
 
+
<source lang="bash">
+
juanda@juanda-PC:~$ adb shell
+
shell@android:/ $ su -
+
shell@android:/ # cat /proc/mounts                                         
+
shell@android:/ # cat /proc/mounts                                           
+
rootfs / rootfs ro,relatime 0 0
+
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
+
devpts /dev/pts devpts rw,relatime,mode=600 0 0
+
proc /proc proc rw,relatime 0 0
+
sysfs /sys sysfs rw,relatime 0 0
+
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
+
none /acct cgroup rw,relatime,cpuacct 0 0
+
tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0
+
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
+
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
+
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
+
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,relatime,data=ordered 0 0
+
/dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 rw,nosuid,nodev,noatime,data=ordered 0 0
+
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,nosuid,nodev,noatime,noauto_da_alloc,data=ordered 0 0
+
/dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 rw,nosuid,nodev,relatime,nodelalloc,data=ordered 0 0
+
/dev/block/platform/msm_sdcc.1/by-name/modem /firmware vfat ro,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
+
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
+
shell@android:/ #
+
 
+
shell@android:/ # mount
+
rootfs / rootfs ro,relatime 0 0
+
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
+
devpts /dev/pts devpts rw,relatime,mode=600 0 0
+
proc /proc proc rw,relatime 0 0
+
sysfs /sys sysfs rw,relatime 0 0
+
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
+
none /acct cgroup rw,relatime,cpuacct 0 0
+
tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0
+
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
+
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
+
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
+
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,relatime,data=ordered 0 0
+
/dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 rw,nosuid,nodev,noatime,data=ordered 0 0
+
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,nosuid,nodev,noatime,noauto_da_alloc,data=ordered 0 0
+
/dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 rw,nosuid,nodev,relatime,nodelalloc,data=ordered 0 0
+
/dev/block/platform/msm_sdcc.1/by-name/modem /firmware vfat ro,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
+
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
+
shell@android:/ #
+
 
+
shell@android:/ # df
+
Filesystem            Size  Used  Free  Blksize
+
/dev                  936M    32K  936M  4096
+
/mnt/secure            936M    0K  936M  4096
+
/mnt/asec              936M    0K  936M  4096
+
/mnt/obb              936M    0K  936M  4096
+
/system                827M  512M  315M  4096
+
/cache                551M    9M  541M  4096
+
/data                    5G    2G    3G  4096
+
/persist                15M    4M    11M  4096
+
/firmware              63M    53M    10M  16384
+
/mnt/shell/emulated      5G    2G    3G  4096
+
shell@android:/ #
+
</source>
+
 
+
 
+
==Android Shell==
+
https://github.com/jackpal/Android-Terminal-Emulator/wiki/Android-Shell-Command-Reference
+
 
+
 
+
==Android toolbox==
+
 
* Casí todos los comandos típos de Linux están situados en /bin y en /usr/bin:
 
* Casí todos los comandos típos de Linux están situados en /bin y en /usr/bin:
 
<source lang="bash">
 
<source lang="bash">
Línea 245: Línea 222:
 
/usr/bin/vi
 
/usr/bin/vi
 
</source>
 
</source>
 +
</div>
  
 +
<div class="slide">
 
*Para saber que comando se va a ejecutar se utiliza el PATH:
 
*Para saber que comando se va a ejecutar se utiliza el PATH:
 
<source lang="bash">
 
<source lang="bash">
Línea 252: Línea 231:
 
juanda@juanda-PC:~$  
 
juanda@juanda-PC:~$  
 
</source>
 
</source>
 +
</div>
  
 +
<div class="slide">
 +
====Comandos en Android====
 
*En Android todos estos binarios están situados en /system/bin.
 
*En Android todos estos binarios están situados en /system/bin.
 
*Sin embargo vemos que enlazan a toolbox: Mediante toolbox se ejecutan multiples comandos desde un binario único.
 
*Sin embargo vemos que enlazan a toolbox: Mediante toolbox se ejecutan multiples comandos desde un binario único.
 
*Para ejecutarlo se pasan como parámetro al binario toolbox el comando y los argumentos del mismo: “toolbox ls -l /system/bin”
 
*Para ejecutarlo se pasan como parámetro al binario toolbox el comando y los argumentos del mismo: “toolbox ls -l /system/bin”
 +
</div>
 +
<div class="slide">
 
*Otra posibilidad muy popular es [http://www.busybox.net/about.html busybox]: "The Swiss Army Knife of Embedded Linux"
 
*Otra posibilidad muy popular es [http://www.busybox.net/about.html busybox]: "The Swiss Army Knife of Embedded Linux"
 
*busybox es más pesado pero más completo:
 
*busybox es más pesado pero más completo:
Línea 264: Línea 248:
 
</source>
 
</source>
 
*Ahora ya podemos utilizar el vi :-)
 
*Ahora ya podemos utilizar el vi :-)
 
+
</div>
==Android Multiusuario==
+
One of the biggest inclusions with the Android 4.2 update is for users to be able to create multiple users on their tablets. After setting up a primary account, users can then add a variety of auxiliary accounts for other family members by venturing in to the Users category. Users acts a hub for your user account control, allowing you to add, edit and remove any accounts present on your tablet.
+
 
+
Any secondary account will then be provided with a full tutorial and Google account creation wizard, as you would if you had bought a new tablet. Apps are independent to each account, and any picture taken is also kept to that singular user. With every new account, the tablet will automatically partition your internal storage between users.
+
 
+
==Particiones==
+
shell@android:/proc # cat partitions                                         
+
major minor  #blocks  name
+
 
+
179        0    7634944 mmcblk0
+
179        1      65536 mmcblk0p1
+
179        2        512 mmcblk0p2
+
179        3        512 mmcblk0p3
+
179        4      2048 mmcblk0p4
+
179        5        512 mmcblk0p5
+
179        6      22528 mmcblk0p6
+
179        7      22528 mmcblk0p7
+
179        8        780 mmcblk0p8
+
179        9        780 mmcblk0p9
+
179      10        780 mmcblk0p10
+
179      11        512 mmcblk0p11
+
179      12        512 mmcblk0p12
+
179      13        512 mmcblk0p13
+
179      14      2048 mmcblk0p14
+
179      15        512 mmcblk0p15
+
179      16        512 mmcblk0p16
+
179      17        512 mmcblk0p17
+
179      18        512 mmcblk0p18
+
179      19      16384 mmcblk0p19
+
179      20      16384 mmcblk0p20
+
179      21    860160 mmcblk0p21
+
179      22    573440 mmcblk0p22
+
179      23    6044672 mmcblk0p23
+
179      24        512 mmcblk0p24
+
179      25        495 mmcblk0p25
+
shell@android:/proc #
+
 
+
shell@android:/ # fdisk -l /dev/block/mmcblk0                                 
+
 
+
Disk /dev/block/mmcblk0: 7818 MB, 7818182656 bytes
+
256 heads, 63 sectors/track, 946 cylinders
+
Units = cylinders of 16128 * 512 = 8257536 bytes
+
 
+
              Device Boot      Start        End      Blocks  Id System
+
/dev/block/mmcblk0p1              1      266306  2147483647+ ee EFI GPT
+
Partition 1 has different physical/logical beginnings (non-Linux?):
+
    phys=(0, 0, 1) logical=(0, 0, 2)
+
Partition 1 has different physical/logical endings:
+
    phys=(1023, 255, 63) logical=(266305, 4, 4)
+
shell@android:/ #
+

Última revisión de 12:52 15 may 2013


  • Los dispositivos Android pueden tener tres tipos de almacenamiento:
-RAM
-Almecenamiento interno flash
Memoria externa mediante tarjeta SD
  • La memoria interna es el equivalente al disco duro del ordenador.
  • La tarjeta SD, normalmente se dedica a almacenamiento tipo imágenes, vídeos y música y datos compartidos entre aplicaciones.
  • No todos los dispositivos permiten usar tarjetas SD, crearán una partición que haga las veces.

Particionesandroid.png

Sistemas de Ficheros

  • Dependen del fabricante del movil
  • Los más habituales son yaffs2 (Yet Another Flash File System) para /system o /data
  • /sdcard suele ser vfat
  • Últimamente se está usando ext4 en vez de yaffs
  • Particiones montadas en un nexus 4:
shell@android:/ # mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,relatime,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 rw,nosuid,nodev,noatime,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,nosuid,nodev,noatime,noauto_da_alloc,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 rw,nosuid,nodev,relatime,nodelalloc,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/modem /firmware vfat ro,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
shell@android:/ #
  • Podemos utilizar comandos de Unix para ver por ejemplo la ocupación de cada partición:
shell@android:/ # df
Filesystem             Size   Used   Free   Blksize
/dev                   936M    32K   936M   4096
/mnt/secure            936M     0K   936M   4096
/mnt/asec              936M     0K   936M   4096
/mnt/obb               936M     0K   936M   4096
/system                827M   512M   315M   4096
/cache                 551M     9M   541M   4096
/data                    5G     2G     3G   4096
/persist                15M     4M    11M   4096
/firmware               63M    53M    10M   16384
/mnt/shell/emulated      5G     2G     3G   4096
shell@android:/ #

Android Multiusuario

  • Funciona a partir de Android 4.2 y para tabletas.
  • Cada cuenta aparece como una nueva tableta y tiene sus propias aplicaciones, imágenes...
  • El sistema creará particiones para el almacenamiento interno de cada usuario.
  • Hay algunos directorios que son enlaces a otros:
shell@android:/ # ls -l /etc
lrwxrwxrwx root     root              2013-04-17 19:56 etc -> /system/etc
shell@android:/ # ls -l /sdcard
lrwxrwxrwx root     root              2013-04-17 19:56 sdcard -> /storage/emulated/legacy

Las aplicaciones

  • Las aplicaciones funcionan en modo sandbox, para mantener la seguridad. Hay un usuario linux por cada aplicación instalada.
  • Por defecto se instalan solo en la memoria interna del teléfono (limitado por defecto, si el desarrollador no lo modifica en el manifest.mxl)
  • Aunque la aplicación se guarde en memoria externa, no se puede mover a otro terminal: ciertos datos se guardan en memoria interna con una encriptación cuya clave solo conoce el dispositivo.
  • Cuando el usuario comparte por USB la memoria del movil, se hace un kill de cualquier aplicación que esté instalada ahí.
  • Se instalan en los directorios /system/app y /data/app

Datos de las aplicaciones

  • Android permite almacenar ficheros en la memoria interna del teléfono.
  • Por defecto los ficheros almacenados solo son accesibles por la aplicación que los creó, no pueden ser leídos por otras aplicaciones, ni siquiera por el usuario del teléfono.
  • Cada aplicación dispone de una carpeta especial para almacenar ficheros (/data/data/nombre_del_paquete/files).
  • La ventaja de utilizar esta carpeta es que cuando se desinstala la aplicación los ficheros que has creado se eliminarán.
  • Cuando trabajes con ficheros en Android, ten siempre en cuenta que la memoria disponible de los teléfonos móviles es limitada.
  • Hay ciertos datos comunes entre aplicaciones que se guardan en la tarjeta SD, en los siguientes directorios:
Music/
Podcasts/
Ringtones/
Pictures/

Movies/ Download/

  • El objetivo es ayudar a indexar los contenidos de forma rápida.

Particiones habituales y directorios

  • Particiones estándar de la memoria interna:
/boot
/system
/recovery
/data
/cache
/misc
  • Particiones en la tarjeta SD:
/sdcard
/sd-ext

Partición /boot

La partición de arranque se encarga de gestionar el arranque del dispositivo. En su interior encontramos el llamado bootloader y el kernel. Sin esta partición, el dispositivo sencillamente no sería capaz de iniciarse. Es muy importante saber que, si formateamos esta partición (con el ClockworkMod Recovery, por ejemplo), no debemos reiniciar el dispositivo bajo ningún concepto antes de instalar otra, ya que no volvería a iniciarse. Esto se hace cuando se va a instalar una ROM que incluye una partición /boot. Normalmente cuando vas a instalar una ROM cocinada, el desarrollador deja muy claros los pasos a seguir, y si entre ellos se encuentra formatear esta partición, será porque la ROM incluye /boot.

Partición /system

  • La partición de sistema contiene básicamente el sistema operativo en sí (excepto el kernel, ramdisk y el bootloader).
  • Incluye la interfaz de usuario de Android, así como las aplicaciones de sistema que vienen pre instaladas en el dispositivo.
  • Formatear esta partición borraría Android del dispositivo, aunque podría arrancar para, por ejemplo, iniciarlo en modo bootloader o en modo recuperación para instalar una nueva ROM.
  • Normalmente se carga en modo solo lectura y solo se puede modificar en circunstancias especiales.


Partición /recovery

  • La partición de recuperación se puede considerar como una partición alternativa a la de inicio (/boot).
  • Permite iniciarlo en un modo especial llamado modo recuperación, el cual muestra una consola con la que realizar tareas de mantenimiento o recuperación de datos.


Partición /data

Esta partición contiene los datos del usuario, es decir, todo lo que el usuario ha creado o modificado, por ejemplo tenemos esta lista de datos que pertenecen a esta partición: Aplicaciones y widgets instalados (no las que venían pre instaladas en el dipositivo, las cuales están en la partición /system) Los contactos y toda su información asociada (números de teléfono, imágenes, emails, cumpleaños, etc) Información de llamadas (llamadas perdidas, entrantes y salientes) Mensajes (SMS, MMS, etc) Emails Favoritos (o marcadores) Puntos Wifi guardados Fondos de pantalla Datos del calendario ....

Partición /cache

  • Esta partición es en la que Android guarda datos a los que el usuario accede con frecuencia, para que la carga de estos datos sea mucho más rápida cuando sea solicitada.
  • Normalmente no son ficheros críticos para la operación del dispositivo y se pueden limpiar de contenidos (wipe), especialmente en las actualizaciones mayores.

Partición /misc

Esta partición contiene información adicional relacionada con la configuración de sistema, en forma de "interruptores" de encendido/apagado. Esta información puede incluir el CID (Carrier or Region ID - identificador del operador o región), la configuración USB o ciertos ajustes hardware. Es una partición importante que si se pierde o corrompe puede hacer que algunas características del dispositivo dejen de funcionar.

Partición /sdcard

Esta partición pertenece a la tarjeta SD. Aquí es donde se guardan los datos que se quieran almacenar, como archivos multimedia, documentos, ROMs, y un largo etcétera, pero además muchas aplicaciones instaladas por el usuario guardan aquí todos los datos y configuraciones. Esta partición se puede borrar, siempre y cuando se hayan hecho copias de seguridad de los datos.

En los dispositivos que tengan una tarjeta SD interna y otra externa, como por ejemplo el Samsung Galaxy S o muchas tablets, la partición /sdcard siempre se refiere a la SD interna. Para la externa, si es que la tiene, se muestra en una partición alternativa que no es la misma en todos los dispositivos.

La partición de la tarjeta SD externa, a diferencia de la /sdcard interna, no se almacenan datos del sistema o de las aplicaciones de ningún tipo, todo el contenido ha sido introducido por el usuario, por lo que su contenido puede ser borrado sin problemas, siempre y cuando los datos se hayan guardado en el PC, o no se quieran conservar.

Partición /sd-ext

  • Partición adicional de la tarjeta SD que actúa como una extensión de la partición /data, cuando se usa con ciertas ROMS que tienen una funcionalidad especial llamada APP2SD+ o data2ext.
  • Especialmente útil en dispositivos con una memoria interna muy pequeña.
  • Puede usarse para instalar aplicaciones más allá de las que la memoria interna permite, siempre y cuando la ROM que se tenga instalada, tenga activada esta capacidad.
  • Borrar esta partición será esencialmente lo mismo que borrar la partición /data, es decir, se pueden perder contactos, SMS, aplicaciones instaladas por el usuario, etc.

Comandos del sistema

Comandos en Linux

  • Casí todos los comandos típos de Linux están situados en /bin y en /usr/bin:
juanda@juanda-PC:~$ pwd
/home/juanda
juanda@juanda-PC:~$ which ls
/bin/ls
juanda@juanda-PC:~$ which dd
/bin/dd
juanda@juanda-PC:~$ which mkdir
/bin/mkdir
juanda@juanda-PC:~$ which vi
/usr/bin/vi
  • Para saber que comando se va a ejecutar se utiliza el PATH:
juanda@juanda-PC:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games:/home/juanda/Android/sdk/tools:/home/juanda/Android/sdk/platform-tools
juanda@juanda-PC:~$

Comandos en Android

  • En Android todos estos binarios están situados en /system/bin.
  • Sin embargo vemos que enlazan a toolbox: Mediante toolbox se ejecutan multiples comandos desde un binario único.
  • Para ejecutarlo se pasan como parámetro al binario toolbox el comando y los argumentos del mismo: “toolbox ls -l /system/bin”
  • Otra posibilidad muy popular es busybox: "The Swiss Army Knife of Embedded Linux"
  • busybox es más pesado pero más completo:
shell@android:/system/bin $ ls -l busybox toolbox                              
-rwxr-xr-x root     root       811432 2013-04-19 00:34 busybox
-rwxr-xr-x root     shell      134976 2013-03-06 18:27 toolbox
  • Ahora ya podemos utilizar el vi :-)