Curso de Android
Guía Administración Android
Tutorial sobre conceptos básicos sobre el sistema operativo Android
Contenido
Almacenamiento en Sistemas Android
- 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. Aquí es donde el sistema operativo del dispositivo (firmware), las aplicaciones, y los datos de usuario se guardan.
- La tarjeta SD, normalmente se dedica a almacenamiento de usuario, imágenes, vídeos y música. No todos los dispositivos permiten usar tarjetas SD (ejemplo Nexus 4 o iPhone5).
- Las aplicaciones funcionan en modo sandbox, para mantener la seguridad. Hay un usuario linux por cada aplicación instalada.
Particiones habituales y directorios
http://androidforums.com/evo-4g-all-things-root/278898-android-partitions-kernels-explained.html
- Debemos tener claro lo que es una partición, un punto de montaje y la estructura de directorios de Linux.
- Estas son las particiones que monta mi movil:
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:/ #
- Si queremos ver la ocupación del movil:
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:/ #
- 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
A menos que hayas usado tu dispositivo Android solamente para hacer llamadas, enviar SMS, navegar o usar aplicaciones básicas, deberías saber que Android usa una serie de particiones para organizar los ficheros y carpetas del dispositivo. Cada una de estas particiones tiene un rol distinto en la funcionalidad del dispositivo, pero no todos los usuarios de Android conocen su significado y contenido. Esta guía pretende ayudar a comprender cúales son, qué contienen y qué posibles consecuencias tendría modificar o borrar el contenido de las mismas. Esto es útil para saber qué estamos haciendo cuando, al instalar una ROM cocinada, se nos pide que previamente hagamos ciertas acciones como wipe cache, o wipe data / factory reset, o formatear ciertas particiones.
Por un lado tenemos las particiones estándar de la memoria interna. Tanto en smartphones como en tablets tenemos:
/boot /system /recovery /data /cache /misc
Las siguientes particiones pertenecen a la tarjeta SD:
/sdcard /sd-ext
A continuación pasamos a explicar el contenido y el propósito de cada una de ellas:
/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.
/system
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.
/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. 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. Para más información sobre esto: ¿Qué es ClockworkMod Recovery?
/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) Dispositivos bluetooth guardados Puntos Wifi guardados Fondos de pantalla Datos del calendario Asociaciones a cuentas como Google, Facebok, Twiteer, etc
La siguiente información NO pertenece a la partición /data:
Datos de la tarjeta SD ROM (ficheros de sistema, ajustes de sistema, aplicaciones de sistema) Kernel Modem / Radio Caches Temas (themes)
/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. 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.
/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.
/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. Por un lado, los documentos o cualquier información incluida por el usuario, se debe de mover al PC, y para las aplicaciones se pueden hacer copias de seguridad con programas como Titanium Backup o con MyBackup. Para más información visita Backup de Aplicaciones, Contactos, SMS, MMS, Llamadas, etc. con MyBackup
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. En el caso del Samsung Galaxy S, por ejemplo, se encuentra en /sdcard/sd, mientras que en otros dispositivo está en /sdcard2.
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.
/sd-ext
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.
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.
- Cada dispositivo puede tener unas particiones distintas. Los que listo a continuación son los más comunes:
-
/boot
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.
-
/recovery
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.
-
/system
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.
-
/cache
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.
-
/data
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í.
-
/sdcard
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.
/misc
This partition contains miscellaneous system settings in form of on/off switches. These settings may include CID (Carrier or Region ID), USB configuration and certain hardware settings etc. This is an important partition and if it is corrupt or missing, several of the device’s features will will not function normally.
/sdcard
This is not a partition on the internal memory of the device but rather the SD card. In terms of usage, this is your storage space to use as you see fit, to store your media, documents, ROMs etc. on it. Wiping it is perfectly safe as long as you backup all the data you require from it, to your computer first. Though several user-installed apps save their data and settings on the SD card and wiping this partition will make you lose all that data.
On devices with both an internal and an external SD card – devices like the Samsung Galaxy S and several tablets – the /sdcard partition is always used to refer to the internal SD card. For the external SD card – if present – an alternative partition is used, which differs from device to device. In case of Samsung Galaxy S series devices, it is /sdcard/sd while in many other devices, it is /sdcard2. Unlike /sdcard, no system or app data whatsoever is stored automatically on this external SD card and everything present on it has been added there by the user. You can safely wipe it after backing up any data from it that you need to save.
/sd-ext
This is not a standard Android partition, but has become popular in the custom ROM scene. It is basically an additional partition on your SD card that acts as the /data partition when used with certain ROMs that have special features called APP2SD+ or data2ext enabled. It is especially useful on devices with little internal memory allotted to the /data partition. Thus, users who want to install more programs than the internal memory allows can make this partition and use it with a custom ROM that supports this feature, to get additional storage for installing their apps. Wiping this partition is essentially the same as wiping the /data partition – you lose your contacts, SMS, market apps and settings.
Now when you install a new binary, you can know what you’re going to loose, make sure to backup your data before flash new binary in your android device.
Comprobación desde el terminal
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:/ #
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:
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:~$
- 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 :-)
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:/ #