configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que...

78
Félix Lanas Mangado Configuración optimizada dispositivos móviles para el cálculo científico Eloy Javier Mata Sotés Facultad de Ciencias, Estudios Agroalimentarios e Informática Grado en Ingeniería Informática 2012-2013 Título Autor/es Director/es Facultad Titulación Departamento TRABAJO FIN DE GRADO Curso Académico

Upload: phamdung

Post on 03-Oct-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

Félix Lanas Mangado

Configuración optimizada dispositivos móviles para el cálculo científico

Eloy Javier Mata Sotés

Facultad de Ciencias, Estudios Agroalimentarios e Informática

Grado en Ingeniería Informática

2012-2013

Título

Autor/es

Director/es

Facultad

Titulación

Departamento

TRABAJO FIN DE GRADO

Curso Académico

Page 2: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

© El autor© Universidad de La Rioja, Servicio de Publicaciones, 2013

publicaciones.unirioja.esE-mail: [email protected]

Configuración optimizada dispositivos móviles para el cálculo científico,trabajo fin de grado

de Félix Lanas Mangado, dirigido por Eloy Javier Mata Sotés (publicado por la Universidadde La Rioja), se difunde bajo una Licencia

Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported. Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los

titulares del copyright.

Page 3: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

Facultad de Ciencias, Estudios Agroalimentarios e Informática

TRABAJO FIN DE GRADO

Ingeniería Informática

Configuración optimizada

de dispositivos móviles

para cálculo científico.

Autor: Félix Lanas Mangado

Tutor: Eloy Javier Mata Sotés

Departamento de Matemáticas y Computación

Logroño, julio de 2013

Page 4: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura
Page 5: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

1

AGRADECIMIENTOS

En primer lugar quisiera agradecer a Eloy Javier Mata, director del TFG, por su ayuda durante estos años.

También hacer una mención a mis compañeros de trabajo y de universidad, que me han

proporcionado la ayuda y el apoyo necesario.

Y por último agradecérselo a toda mi familia y amigos, que siempre han estado ahí, en los buenos y en los malos momentos.

A todos ellos, muchas gracias.

Page 6: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

2

Page 7: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

3

RESUMEN

El presente trabajo fin de grado pretende analizar la adaptación de una aplicación de cálculo científico a la arquitectura ARM dentro de una plataforma móvil. Primero se revisan diversos conceptos de los dispositivos móviles Android y iPhone para configurarlos de forma optimizada. Se analizan aspectos como la gestión de memoria, la eficiencia energética o su personalización. En concreto, se describe cómo obtener permisos de administrador en ambos entornos, lo que nos va a permitir realizar tareas como el control de versiones, el acceso a ficheros de configuración o la modificación del gestor de arranque. También se describen los pasos para creación e instalación de una versión propia del sistema operativo Android. Para finalizar, se muestra cómo adaptar Triqct (un programa de dinámica molecular escrito en Fortran) a procesadores con arquitectura ARM, que llevan en la actualidad la mayoría de los dispositivos móviles. Esto abre la puerta a su posible portabilidad a futuros equipos de alto rendimiento basados en esta arquitectura.

ABSTRACT

The current dissertation aims to analyse and migrate a scientific computing application to an

ARM architecture in a mobile platform context. First of all, Android and iPhone key concepts

are going to be explained in order to optimize them. For instance we deal with dynamic

memory consumption, energetic efficiency or customization. In addition, we describe how to

obtain root grants in both environments which allow us to perform tasks as Versioning control,

configuration files access and customization of the bootloader. Moreover, we describe a step-

by-step guide to create and install a custom ROM of Android OS. In closing, we give the details

of the process to port Triqct (which is a molecular dynamics software written in Fortran) to an

ARM architecture that is nowadays the most trendy on mobile phones. This dissertation opens

the way to port Triqct to High Performance Computers.

Page 8: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

4

Page 9: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

5

TABLA DE CONTENIDOS

AGRADECIMIENTOS ............................................................................................................. 1

RESUMEN ............................................................................................................................ 3

ABSTRACT ........................................................................................................................... 3

TABLA DE CONTENIDOS ....................................................................................................... 5

INTRODUCCIÓN ................................................................................................................... 9

CONFIGURACIÓN OPTIMIZADA DE ANDROID ...................................................................... 13

GESTOR DE ARRANQUE (BOOTLOADER) ............................................................................................ 13

RECOVERY (MODO RECOVERY) ....................................................................................................... 14

Rootear................................................................................................................................. 14

Flashear ................................................................................................................................ 15

ROM ..................................................................................................................................... 15 Tipos de ROM .................................................................................................................................................. 15 ¿Cuál de los dos es mejor? .............................................................................................................................. 15

Conclusión .................................................................................................................................................. 16 Recovery modificado ............................................................................................................ 16

PROBLEMAS DE ESPACIO DE ALMACENAMIENTO ................................................................................ 18

Ampliación de almacenamiento con Link2SD ...................................................................... 19

CONFIGURACIÓN OPTIMIZADA DE IOS ............................................................................... 23

BENEFICIOS DE REALIZAR EL JAILBREAK ............................................................................................. 23

RIESGOS DEL JAILBREAK ................................................................................................................. 23

“Brickear” el iPhone ............................................................................................................. 24

Aspectos legales ................................................................................................................... 24

CYDIA ......................................................................................................................................... 24

Cydia Store ........................................................................................................................... 25

TIPOS DE JAILBREAK ...................................................................................................................... 25

Jailbreak Tethered ................................................................................................................ 25

Jailbreak Untethered ............................................................................................................ 25

Jailbreak Semi-Tethered ....................................................................................................... 25

MÉTODOS PARA LOGRAR EL JAILBREAK ............................................................................................ 25

Jailbreak Semi-Untethered en iOS 6.1.3 con RedSnow ........................................................ 27

Jailbreak Untethered en iOS con limera1n ........................................................................... 29

DOWNGRADE DEL SISTEMA IOS ...................................................................................................... 30

Cómo guardar los archivos SHSH ......................................................................................... 31 Restricciones ................................................................................................................................................... 31 Guardar SHSH con TinyUmbrella .................................................................................................................... 31

Realizar Downgrade con TinyUmbrella ................................................................................ 33

Realizar Downgrade con Sn0wbreeze .................................................................................. 35

LIBERAR IPHONE (UNLOCK)............................................................................................................ 38

CREACIÓN DE NUESTRA PROPIA VERSIÓN DE ANDROID ...................................................... 41

CONCEPTOS ÚTILES ANTES DE EMPEZAR ........................................................................................... 41

Partes de un firmware .......................................................................................................... 41

Page 10: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

6

Particiones en el sistema Android ........................................................................................ 41 /boot ............................................................................................................................................................... 42 /system ........................................................................................................................................................... 42 /Recovery ........................................................................................................................................................ 42 /data ............................................................................................................................................................... 42 /cache ............................................................................................................................................................. 43 /misc ............................................................................................................................................................... 43 /sdcard ............................................................................................................................................................ 43 /sd-ext ............................................................................................................................................................. 43

Significado de los códigos PDA y CSC al descargarnos el firmware ..................................... 43

CREACIÓN DE LA ROM .................................................................................................................. 45

Prerrequisitos ....................................................................................................................... 45

Descripción de Android Kitchen ........................................................................................... 45

instalación de la aplicación triqct en el firmware ................................................................ 50

Personalización del sistema operativo ................................................................................. 50

Creación de la imagen del sistema operativo (rom) ............................................................ 52

CREAR ANIMACIÓN DE INICIO EN ANDROID ....................................................................................... 52

PORTACIÓN DE APLICACIÓN DE CÁLCULO CIENTÍFICO A UN ENTORNO MÓVIL..................... 55

CONCLUSIONES ................................................................................................................. 57

LECCIONES APRENDIDAS ................................................................................................................ 57

VALORACIÓN FINAL....................................................................................................................... 57

ANEXO 1 – ARQUITECTURA DE IOS ..................................................................................... 59

CAPA CORE OS ............................................................................................................................ 59

Nivel de sistema ................................................................................................................... 59 Framework de seguridad ................................................................................................................................ 59

Capa Core Services ............................................................................................................... 60 SQLite .............................................................................................................................................................. 60 Grand Central Dispatch (gcd) .......................................................................................................................... 60 Almacenamiento iCloud .................................................................................................................................. 60 Protección de datos ........................................................................................................................................ 61 Conteo de referencia automática (ARC) ......................................................................................................... 61 Soporte XML ................................................................................................................................................... 62 Compra dentro de la aplicación ...................................................................................................................... 62

Capa media .......................................................................................................................... 62 Tecnología de gráficos .................................................................................................................................... 62 Tecnología de audio ........................................................................................................................................ 63 Tecnología de vídeo ........................................................................................................................................ 63 Tecnología airplay ........................................................................................................................................... 63

Capa cocoa touch ................................................................................................................. 63 Multitarea ....................................................................................................................................................... 63

Segundo plano real .............................................................................................................. 64 Impresión ........................................................................................................................................................ 64 notificaciones push de Apple .......................................................................................................................... 65 notificaciones locales ...................................................................................................................................... 65

ANEXO 2 – ARQUITECTURA DE ANDROID ........................................................................... 66

NÚCLEO LINUX ............................................................................................................................ 66

ANDROID RUNTIME (TIEMPO DE EJECUCIÓN) .................................................................................... 67

LIBRERÍAS ................................................................................................................................... 67

Page 11: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

7

FRAMEWORK DE LAS APLICACIONES ................................................................................................. 68

APLICACIONES ............................................................................................................................. 69

ANEXO 3 – CÓDIGOS DE VERSIÓN DEL FIRMWARE DE ANDROID ......................................... 70

Códigos de Región ................................................................................................................ 70

Códigos de año ..................................................................................................................... 71

Códigos de mes .................................................................................................................... 71

Códigos de revisión .............................................................................................................. 71

Códigos de operadora .......................................................................................................... 72

BIBLIOGRAFÍA .................................................................................................................... 73

ARM ......................................................................................................................................... 73

ANDROID .................................................................................................................................... 73

IOS ............................................................................................................................................ 74

Page 12: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

8

Page 13: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

9

INTRODUCCIÓN

DynaTAC 800X

El 3 de abril de este año 2013 se cumplió el 40 aniversario de un hecho histórico que cambiaría

la forma de entender las comunicaciones, se produjo la primera llamada telefónica vía móvil.

La realizó Marty Cooper, ingeniero de Motorola, utilizando el teléfono que ellos mismos

habían creado, el DynaTAC 8000X. Diez años más tarde, comenzaría a comercializarse con un

precio de venta al público equivalente a 7.000 euros de hoy en día, un peso 800 gramos y unas

dimensiones de 33 cm. de altura contando la antena, 4,5 cm. de largo y 8,9 cm. de grosor. Su

batería tardaba 10 horas en cargarse y disponía de una autonomía durante una conversación

de 30 minutos. Únicamente permitía llamadas de voz, con una calidad de sonido muy pobre.

A pesar de su elevado coste, tamaño y peso, este dispositivo era ansiado por miles de

personas, que no dudaron en inscribirse en la lista de espera para recibir una de las preciadas

unidades fabricadas.

iPhone

El 29 de enero de 2007, el CEO de Apple, Steve Jobs, presentaba en la convención MacWorld

de San Francisco lo que sería la mayor revolución tecnológica móvil hasta la fecha, el iPhone.

Según palabras del propio Jobs, el objetivo era “reinventar el teléfono”, consiguiendo trasladar

el concepto de sistema operativo de un entorno de escritorio a un dispositivo de bolsillo.

El iPhone incorporaba un sistema operativo llamado iOS, con una interfaz muy sencilla y que

podía ser manejada únicamente con los dedos, característica inédita hasta el momento.

iOS deriva del sistema operativo de Apple de equipos de sobremesa Mac OS X, que a su vez

está basado en Darwin BSD, un sistema operativo de tipo Unix. Se pueden diferenciar 4 cuatro

capas de abstracción en su arquitectura: el Kernel (Basado en Darwin BSD), encargado de la

gestión de memoria, procesos, permisos, …; la capa de servicios principales que permite al

usuario acceder a todos los servicios del sistema; la capa media que posibilita la gestión de

contenido multimedia; y la capa Cocoa Touch, API que proporciona a los programadores una

capa de abstracción del dispositivo.

Page 14: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

10

Android

Como alternativa a iOS, en septiembre de 2008 nace Android, un sistema operativo pensado

para dispositivos móviles, actualmente propiedad de Google. Lo que le hace especial es que

está basado en Linux, un núcleo de sistema operativo libre, gratuito y multiplataforma.

Las aplicaciones que se ejecutan sobre Android lo hacen sobre una variación de la máquina

virtual de Java llamada Máquina virtual Dalvik.

El sistema operativo proporciona todas las interfaces necesarias para desarrollar aplicaciones

que acceden a las funciones del teléfono, como pueden ser el GPS, las llamadas, la agenda, etc.

Todo ello está codificado en un lenguaje de programación tan conocido y que tiene una

comunidad tan grande como es Java.

Android es una plataforma de código abierto en la que cualquier desarrollador puede

descargar el sistema operativo y realizar las modificaciones que crea oportunas.

Otros sistemas

Existen otras alternativas en el mercado actual, además de Android e iOS. Entre otros:

Windows Phone, sistema propietario desarrollado por Microsoft; BlackBerry OS, creado por la

empresa canadiense RIM para sus dispositivos; y el más novedoso, Firefox OS, basado en Linux

y diseñado para que sus aplicaciones sean creadas en HTML5, CSS y JavaScript.

La razón por la cual he optado por centrarme en iOS y Android es debido a que son

actualmente los sistemas punteros a nivel mundial, los que más posibilidades de

personalización tienen y los que disponen de una mayor comunidad en internet que trabaja en

la creación de nuevas herramientas para estos entornos.

Page 15: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

11

Hardware

Ha avanzado mucho la tecnología desde el nacimiento del primer dispositivo móvil, hoy en día

la mayoría de los teléfonos disponen de hardware muy avanzado:

Cámara que nos permite tomar tanto fotografías como vídeos de gran calidad.

Micrófonos de gran calidad que permiten una transmisión de voz muy buena, además

de posibilitarnos la implementación de programas de reconocimiento de voz muy

potentes como es el caso de Siri, de Apple.

Antena GPS que permiten determinar el posicionamiento del terminal vía satélite.

Acelerómetro que mide las fuerzas inducidas por la gravedad y nos permite detectar el

giro del teléfono.

Brújula para poder localizar el norte.

Giroscopio mecánico, que nos sirve para medir la orientación del teléfono.

Arquitectura ARM

ARM es una arquitectura de 32 bits desarrollada en 1983 por la empresa Acorn Computers Ltd.

para computadores personales que incorpora un conjunto de instrucciones muy básico.

La simplicidad de los procesadores ARM hace que el consumo energético sea muy reducido y,

como consecuencia, actualmente casi la totalidad de dispositivos móviles llevan este tipo de

CPU.

La arquitectura ARM es de tipo RISC, acrónimo de “Reduced Instruction Set Computer” y que se

traduce como “Ordenador con conjunto de instrucciones reducidas”, se refiere a una filosofía

de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples.

Mientras que la arquitectura ARM es de tipo RISC, x86 es de tipo CISC (Complex Instruction Set

Computer), modelo que se caracteriza por usar un conjunto de instrucciones complejas muy

amplio y permitir operaciones muy complejas.

En la actualidad son muchísimas compañías las que crean procesadores ARM, muchas de ellas

importantísimas en el campo tecnológico: Intel, IBM, Apple, Broadcom, Huawei, AMD, RIM,

entre muchos otros.

Cálculo científico

Actualmente soy administrador del proyecto RiojaScience@home, una plataforma para el

cálculo distribuido, en el cual los nodos se componen de computadores personales de usuarios

domésticos. Éstos donan de manera voluntaria tiempo de procesamiento de sus equipos en los

tiempos ociosos, momento en el que se activa un salvapantallas que pone en funcionamiento

RiojaScience.

El proyecto está siendo llevado a cabo por los departamentos de Matemáticas y Computación

y de Química de la Universidad de La Rioja. Nació debido a las necesidades de aumentar el

cálculo computacional del que disponían los investigadores del departamento de Química.

Page 16: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

12

Actualmente RiojaScience está trabajando con Triqct (Triatomic quasiclassical trajectory

calculation), un programa de química computacional para la resolución de reacciones en fase

gas. Cuenta con unas 7.000 líneas de código escritas en el lenguaje Fortran 77.

A día de hoy, RiojaScience cuenta con más de 4.000 equipos de 1.400 usuarios diferentes,

gracias a los cuales ya se han procesado más de diez millones de unidades de trabajo de Triqct,

el equivalente en tiempo de cómputo de un equipo normal a 600 años.

Uno de los objetivos del proyecto de este trabajo fin de grado es conseguir que Triqct se

ejecute en un entorno móvil bajo la arquitectura ARM.

Las propiedades de ARM hacen que actualmente fabricantes de súper-ordenadores y clústeres

de ordenadores se hayan decantado por este tipo de chips debido al poco consumo eléctrico

que requieren. Además, debido a la gran cantidad de móviles que se vende en la actualidad, la

producción de procesadores ARM es altísima, lo que conlleva que el precio de producción de

un chip sea menor. Esto hace muy rentable utilizar este tipo de CPU para computación de alto

rendimiento en lugar de otros más potentes, ya que suponen un coste mucho mayor por su

producción a baja escala.

Por ejemplo, HP anunció hace escasos días, en el tercer Congreso Nacional Cloud celebrado en

Logroño (http://www.congresonacionalcloud.com/) su intención de empezar a fabricar

clústeres de ordenadores basados en procesadores ARM.

Otro caso es el de Pedraforca, un clúster de computación de alto rendimiento ubicado en el

BSC (Centro de Supercomputación de Barcelona), compuesto por procesadores ARM

(http://on-demand.gputechconf.com/gtc/2013/presentations/S3064-Pedraforca-ARM-GPU-

Cluster-HPC.pdf )

En los siguientes apartados explicaré cómo configurar de manera optimizada un dispositivo

Android y un dispositivo iPhone para conseguir en ambos la posibilidad de ejecutar

aplicaciones de cálculo científico.

Además, describiré el proceso que he seguido para conseguir portar la aplicación Triqct a la

plataforma móvil, de modo que se ejecute bajo un procesador con arquitectura ARM.

Page 17: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

13

CONFIGURACIÓN OPTIMIZADA DE ANDROID

Nuestro objetivo final es el de portar una aplicación de cálculo científico a un entorno móvil.

Para lograrlo, necesitaremos tener acceso sin límites a todas las funcionalidades del teléfono

que por defecto vienen deshabilitadas.

En todos los sistemas Unix, como es el caso de Android e iOS, existe un usuario especial

denominado root, sobre el que no se aplica ningún tipo de restricción y que dispone de todos

los privilegios de acceso.

Los fabricantes de dispositivos Android impiden el acceso root en sus dispositivos, impidiendo

la modificación de parámetros internos del sistema, opción en cierto modo comprensible, ya

que es relativamente sencillo estropear algo, pero que en nuestro caso supone un escollo que

deberemos superar.

Alcanzando el acceso como root, además de poder compilar e instalar aplicaciones de cálculo

científico para nuestro dispositivo, lograremos una optimización en el rendimiento de Android,

una mejora en el consumo energético, gestión de memoria y opciones que nos serán de gran

utilidad como aumentar la frecuencia de la CPU (overclock).

A continuación explico el proceso de arranque de un teléfono Android, cómo cambiar el modo

Recovery por defecto, el proceso para alcanzar los privilegios de root, instalar diferentes

versiones de Android y la gestión de memoria.

GESTOR DE ARRANQUE (BOOTLOADER)

El Bootloader es el gestor de arranque de los dispositivos Android. A modo de comparación

con el arranque de un ordenador normal, el Bootloader viene a ser el escaneo POST (Power On

Self Test), proceso de verificación e inicialización de los componentes del PC que da paso a la

inicialización del sistema operativo.

Mientras en un equipo de sobremesa tenemos que pulsar teclas como Supr o F1 para entrar en

la BIOS durante el arranque del sistema, en Android suele haber una combinación de teclas

(dependientes del terminal) para entrar en el menú Bootloader.

Este menú suele ser más sencillo que la BIOS, nos da opciones básicas como Boot (arranque

del sistema), Power off (apagado), Recovery (siguiente apartado) y Reboot (reiniciar), entre

otras.

El menú Bootloader es un sistema Linux mínimo, con soporte para acceder a ficheros del

móvil, soporte para realizar conexiones USB y un servidor para hacer operaciones avanzadas a

través del ordenador por USB mediante la herramienta ADB (integrada en el SDK de Android,

que se puede descargar desde http://developer.Android.com/sdk/index.html).

Page 18: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

14

El Bootloader tiene un estado que por defecto es Locked, pero que puede ser cambiado

mediante la herramienta ADB por USB a Unlocked. Con esto conseguimos desbloquear la

posibilidad de cambiar la segunda capa, el Recovery, sustituyéndolo por otro con más

opciones.

RECOVERY (MODO RECOVERY)

El modo Recovery consiste en un modo de arranque especial para corregir errores del sistema,

instalar actualizaciones, realizar copias de seguridad etc. Podríamos decir que es el equivalente

al modo seguro de Windows.

A continuación muestro dos Recovery diferentes, el primero, uno que viene por defecto en un

firmware de fábrica y el segundo uno modificado. Como se puede apreciar el primero tiene

opciones muy limitadas: reiniciar el sistema, flashear (instalar) actualizaciones siempre que

estén firmadas y sean oficiales, y limpiar la caché; mientras que el segundo alberga muchas

más, entre ellas una fundamental, “Install zip from sdcard”, que nos permitirá instalar un

sistema operativo alternativo.

En el apartado “Recovery modificado” se habla en profundidad acerca de este Recovery con

opciones añadidas.

Imagen 1 Imagen 2

Señalar que el Recovery es parte del sistema operativo. Si reinstalamos el sistema operativo

por otros medios que no sean mediante el Recovery, volveremos a tener el Recovery de

fábrica.

ROOTEAR

Rootear significa poder ejecutar comandos o acceder a ficheros con permisos de root dentro

del sistema operativo Android. Es un proceso equivalente al Jailbreak dentro de iOS (que

comentaremos en el siguiente capítulo).

Cuando se rootea un móvil se logran dos cosas, instalar la herramientas su de Linux (utilidad

que se utiliza para obtener permisos de root dentro de sistemas Unix) para poder ser usada

Page 19: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

15

por línea de comandos y añadir una aplicación al sistema que permita otorgar permisos de

root a cualquier otra aplicación que requiera permisos de superusuario durante su ejecución.

FLASHEAR

Flashear un dispositivo se refiere al proceso de instalación de un nuevo firmware. Las ROMs no

se instalan, se flashean. La definición de flashear es: “Cargar datos en un chip de memoria de

estado sólido, en especial los que contienen el sistema operativo”.

ROM

En el sector informático conocemos típicamente ROM como las siglas de Read-Only Memory,

pero también se conoce como ROM a una imagen del sistema operativo. En el caso de Android

se refiere a la versión del sistema operativo en un archivo que se puede instalar (flashear) en el

móvil.

TIPOS DE ROM

Las ROM´s de Android se pueden dividir en dos grupos:

ROM de fábrica (Stock ROM): Es la versión del sistema operativo que viene por defecto

con el teléfono, la que ha creado el fabricante.

ROM personalizada (Custom ROM): Es una versión de Android completamente

independiente de la del fabricante, creada por una comunidad de internet. Está

personalizado desde el kernel hasta las aplicaciones que vienen por defecto.

¿CUÁL DE LOS DOS ES MEJOR?

En la mayoría de los casos, una ROM personalizada supone una mejora notable en el

rendimiento del terminal. La comunidad trabaja más en el código y se consiguen corregir y

mejorar aspectos que el fabricante muchas veces no tiene en cuenta.

Muchos fabricantes utilizan la práctica comercial obsolescencia programada y al sacar nuevos

modelos de teléfonos, deja de adaptar versiones nuevas del sistema operativo a modelos más

obsoletos, mientras que la comunidad se encarga de tener las últimas versiones de Android en

la mayoría de terminales.

Las publicaciones de las actualizaciones por lo general son mucho más frecuentes en custom

ROM´s, ya que no implican la burocracia de una gran empresa. Un desarrollador de ROM´s

personalizadas no requiere este proceso, y además por lo general, cuenta con un gran grupo

de gente (comunidad de internet) que prueba las versiones e informa de posibles fallos,

mejoras, etc., que hace que las actualizaciones lleguen más rápido. Aunque no hay garantía de

ninguna empresa detrás del producto creado.

Page 20: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

16

Gran cantidad fabricantes y operadoras instalan aplicaciones y modificaciones en el sistema

operativo de fábrica que no tienen mucha utilidad, son imposibles de desinstalar y consumen

muchos recursos.

Por otro lado, durante el proceso de flasheo (instalación de la nueva ROM) hay una muy

mínima posibilidad de que dejemos el terminal inutilizable (coloquialmente “como un

ladrillo”). Esto puede ocurrir en el caso de que el teléfono se quede sin batería durante la

instalación o que hagamos algún paso de manera errónea. El primer problema se evita

asegurándonos de que la batería esté completamente cargada y el segundo siguiendo los

pasos tal y como nos marca el desarrollador. Aun en el caso de hacerse algún punto mal, es

poco probable dejar inutilizable el teléfono, ya que todos pasos dados en falso normalmente

tienen vuelta atrás.

El flasheo del teléfono con una ROM personalizada puede implicar una pérdida de la garantía.

Si por alguna razón tenemos que llevar el teléfono al servicio técnico, y nos detectan que

hemos realizado este proceso, es posible que nos anulen la garantía. De todas maneras, hay

métodos de recuperar el estado inicial del teléfono y hacer indetectable el proceso de flasheo

de una ROM modificada.

CONCLUSIÓN

Si nuestro dispositivo está en garantía y no tenemos ningún problema con él, además de tener

una experiencia de usuario buena, no recomiendo instalar una ROM modificada, en cualquier

otro caso, lo recomiendo encarecidamente.

RECOVERY MODIFICADO

Como he dicho anteriormente, un Recovery modificado es aquel que tiene muchas más

opciones que los que vienen de fábrica, entre ellas la más importante es la que nos permite el

flasheo de ROMs no oficiales. Dentro de los Recoverys modificados, el más famoso se llama

ClockworkMod (http://www.clockworkmod.com/ ). A continuación voy a explicar las múltiples

opciones que contiene:

Page 21: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

17

Imagen 1

Reboot system now: Reiniciar el teléfono a un arranque normal.

Apply update from sdcard: Esta opción nos permite la actualización de cualquier parte

del sistema como el Kernel, aplicaciones, etc. Para ello, el archivo que queremos

instalar se debe llamar update.zip y debe estar en el raíz de la tarjeta SD.

Wipe data/Factory reset: Borrado de todos los datos de usuario del teléfono, así como

la memoria caché. Sería dejar el sistema operativo tal y como estaba tras una primera

instalación.

Wipe cache partition: Limpia la partición de memoria caché del dispositivo.

Install zip from sdcard: Nos permite instalar una ROM nueva a partir de un archivo zip

dentro de la tarjeta SD.

Backup and storage: Esta opción nos brinda la opción de realizar copias de seguridad

completas del sistema y la función de restauración de las mismas.

Page 22: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

18

Advanced: Alberga un submenú con opciones que utilizaremos con frecuencia.

Imagen 2

o Reboot Recovery: Para instalaciones que requieren más de un flasheo, esta

opción es interesante para reiniciar el teléfono de nuevo en modo Recovery.

o Wipe Dalvik Cache: La caché Dalvik es una zona de memoria que la máquina

virtual Dalvik utiliza para ejecutar aplicaciones. Esta memoria se va inflando y

no se recupera. Con esta opción podremos borrarla para ganar espacio de

almacenamiento interno.

o Wipe Battery Stats: Muchas veces al realizar el flasheo de una ROM nueva es

posible que la calibración de la batería no sea la correcta. Esta calibración se

guarda en un fichero del sistema. Para regularla basta con utilizar esta opción.

o Partition SD Card: Particionar la tarjeta SD. En un apartado posterior hablaré

más en detalle sobre esta opción.

PROBLEMAS DE ESPACIO DE ALMACENAMIENTO

Todos los teléfonos Android contienen una memoria interna en el formato nativo de Linux que

está preparada para la instalación de las aplicaciones y en la que se pueden guardar datos de

usuario como archivos multimedia, documentos etc. Además, casi todos los terminales

disponen de una ranura para tarjetas SD que permite ampliar el almacenamiento, pero

únicamente para datos de usuario, no para aplicaciones. Los formatos de las memorias es el

siguiente:

Memoria interna: Formato ext2, ext3 o ext 4 según la versión de Android.

Memoria externa (microSD): Formato Fat32.

Page 23: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

19

¿Qué ocurre? Que a pesar de ampliar la memoria externa mediante una tarjeta SD, solamente

podremos instalar aplicaciones en la memoria interna ya que requieren estar en el sistema de

archivos propio de Linux para poder ejecutarse. Por tanto, aunque parezca que tengamos

mucha memoria gracias a una tarjeta de gran capacidad, para la instalación de aplicaciones

sólo nos será de utilidad la memoria interna.

El gran problema viene porque muchos móviles de gama media/baja e incluso algunos de

gama alta, disponen de muy poca memoria interna debido a que son muy costosas.

Esta situación de tener un terminal con poca memoria interna y una tarjeta SD de gran

capacidad confunde mucho a los usuarios, que piensan que tienen gran cantidad de

almacenamiento, pero en cuanto instalan unas pocas aplicaciones, se encuentran con que

Android les da un aviso de “poca capacidad en disco”. La nueva gama, Nexus viendo este

conflicto, ha utilizado la misma estrategia que Apple con el iPhone y ha creado sus nuevos

dispositivos únicamente con memoria interna sin posibilidad de ampliación.

La solución que aportó Google a este problema fue la de posibilitar a los desarrolladores la

opción de que sus aplicaciones se trasladaran a la memoria externa. Sin embargo, a día de hoy,

no todas se pueden portar y de las que sí tienen implementada esta función, no todo su

contenido es trasladado a la tarjeta SD. Con lo cual, más tarde o más temprano, veremos el

almacenamiento interno completo.

Otra solución es la creación de una partición de la tarjeta SD en el formato nativo de Linux.

Esto nos va a permitir instalar cualquier aplicación en la memoria externa y conseguir una

ampliación “real” de la memoria interna. Este proceso no será factible si no disponemos de

permisos de superusuario en el terminal (necesitaremos tener rooteado el móvil).

AMPLIACIÓN DE ALMACENAMIENTO CON LINK2SD

Un programa que permite la portación de las aplicaciones a una partición nativa de Linux en la

tarjeta SD es Link2SD. Para poder utilizar Link2SD, es indispensable tener acceso root en el

teléfono.

Nuestra tarjeta SD tiene formato Fat32, el primer paso que se ha de realizar es crear una

partición en la tarjeta con el mismo formato que la memoria interna (ext2, ext3 o ext4). Para

ello podemos utilizar soluciones de entornos de escritorio como Gparted o, de manera mucho

más sencilla, la opción Advanced - Partition SD Card dentro del menú del Recovery

ClockworkMod. El tamaño de la partición deberá ser de al menos 256 megas y con SWAP 0.

Así, si tenemos una tarjeta SD de 1GB, 768 MB estarán en formato Fat32 y 256 en Ext*.

Una vez tenemos la SD particionada, deberemos dirigirnos al Market de Android y descargar la

aplicación Link2SD. La abrimos y seguimos los pasos que nos indiquen, es posible que se

requiera el reinicio del teléfono para la instalación de unos scripts necesarios para el

funcionamiento del programa. Volvemos a abrirlo y nos preguntará el formato que tiene la

segunda partición, ahí debemos seleccionar el formato elegido.

Page 24: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

20

Ya estamos preparados para mover las aplicaciones a la segunda partición (ext*) de la

microSD.

A continuación voy a mostrar el proceso para trasladar una aplicación de la memoria interna a

la segunda partición de la memoria externa.

La pantalla principal de Link2SD nos muestra todas las aplicaciones instaladas, con la ruta en la

que están instaladas y el tamaño que ocupan en disco.

Ahora debemos escoger la aplicación que queramos portar a la memoria externa pulsando

sobre ella. En este ejemplo seleccionaremos el programa Linterna.

Imagen 3 Imagen 7

Si en este paso seleccionásemos la opción “Mover a la tarjeta SD”, haríamos uso del método

nativo de Android y trasladaríamos las aplicaciones a la primera partición de la SD, la FAT.

Recordar que con este método sólo pasamos partes de la aplicación y estaríamos haciendo uso

también de la memoria interna. Así que debemos escoger la opción “Crear enlace” y se nos

generaría un enlace simbólico en la memoria interna con destino la segunda partición de la

tarjeta SD (la que está en el sistema de archivos nativo de Linux).

Page 25: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

21

Imagen 8 Imagen 9

Ahora se nos presenta la opción de elegir qué partes de la aplicación queremos enlazar. La

primera sería la aplicación en sí, el archivo APK (éste sería el que se trasladaría a la primera

partición SD con el método nativo de Google de portar aplicaciones a la memoria externa), la

segunda la caché Dalvik y la tercera las librerías que utiliza la aplicación.

Seleccionamos las tres para hacer un menor uso de la memoria interna del teléfono y le damos

al botón Aceptar.

De esta manera ya tenemos nuestra aplicación trasladada a la segunda partición de la tarjeta

SD. Como se muestra en la imagen, es en este paso en el cual hemos necesitado permisos de

root para realizar la operación.

Page 26: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

22

En la imagen 9 se muestra el resultado tras haber portado todas las aplicaciones a la tarjeta

externa.

Imagen 4

La leyenda En la tarjeta SD significa que la aplicación ha sido movida a la tarjeta SD mediante

el método nativo de Android.

Enlazado -> Tarjeta SD nos asegura que la aplicación ha sido movida a la partición ext de la

tarjeta SD mediante el programa Link2SD.

En la imagen 10 podemos ver la información sobre el almacenamiento que nos ofrece el

programa. Como se ve, ya estamos haciendo uso de la segunda partición (ext) que hemos

creado.

Imagen 5

Page 27: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

23

CONFIGURACIÓN OPTIMIZADA DE IOS

Al igual que en Android alcanzábamos un acceso sin límites a las funcionalidades del terminal

mediante el proceso denominado “rootear”, en iOS existe un procedimiento equivalente

denominado Jailbreak.

Jailbreak es básicamente el procedimiento mediante el cual conseguimos un acceso total a

nuestros dispositivos saltándonos de esta manera las restricciones impuestas por defecto por

Apple.

Con el Jailbreak conseguimos tener privilegios de root y podemos hacer “lo que queramos”,

como instalar aplicaciones de terceros, personalizar los temas que vienen por defecto y tener

funcionalidades que no vienen en el software original.

Seguidamente comento los beneficios de realizar el proceso de Jailbreak, así como sus riesgos,

tipos y métodos para realizarlo. Por último explico el procedimiento para poder bajar de

versión de sistema operativo (downgrade), ya que no en todas se puede realizar el Jailbreak.

BENEFICIOS DE REALIZAR EL JAILBREAK

iOS ha conseguido gracias a la labor de los programadores ser uno de los sistemas operativos

más estables y eficientes del mercado. Esto ha sido en parte gracias a las restricciones que ha

impuesto tanto a los usuarios como a las aplicaciones instaladas, pero como todo, tienes sus

pros y sus contras. Muchos usuarios se quejan de la poca personalización que se puede

alcanzar en iOS. Gracias al Jailbreak conseguiremos:

Instalar aplicaciones de terceros.

Modificaciones del sistema operativo (Tweaks).

Modificaciones en la interfaz de usuario.

RIESGOS DEL JAILBREAK

A pesar de lo que mucha gente cree, con el Jailbreak no se pierde la garantía del dispositivo,

eso sí, antes de llevar al servicio técnico el terminal en caso de avería, deberá ser restaurado

mediante iTunes para borrar todo rastro.

Legalmente la compañía de Cupertino podrá anular la garantía del terminal si detecta que se le

ha realizado el Jailbreak, pero con una simple restauración, como he comentado antes, el

proceso será indetectable.

Page 28: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

24

Además podremos utilizar el resto de servicios del dispositivo (como la tienda oficial) de

manera totalmente normal, sin tener que preocuparnos por nada. No va a saltar ningún tipo

de alarma ni va a sufrir ningún tipo de desperfecto el teléfono.

Un aspecto a tener en cuenta es la seguridad, como ya hemos dicho, uno de los puntos fuertes

de iOS. Las aplicaciones que se instalan mediante la AppStore pasan un severo filtro para evitar

que pongan en peligro el dispositivo. Las que son instaladas desde otros repositorios, como los

que ofrece Cydia (http://cydia.saurik.com/) u otro sistema, obvian este control de seguridad y

son más susceptibles de tener código malicioso.

XXX aquí te había cambiado la frase. Está en el papelOtro matiz que podrá será susceptible de

cambio es la eficiencia, al ser iOS un sistema tan cerrado, garantiza una gran estabilidad y

optimización de recursos. Al instalar modificaciones y temas visuales nuevos, es más que

probable que se vea mermado el rendimiento. Eso sí, si usamos únicamente las modificaciones

necesarias y que sean de confianza, lo más seguro es que no notemos ninguna diferencia.

“BRICKEAR” EL IPHONE

Un término muy popular y al que mucha gente teme a la hora de intentar el Jailbreak, es dejar

el terminal “Brickeado” (literalmente, “como un ladrillo”), es decir, roto, imposible de reparar.

Por mi experiencia, esta situación es muy poco frecuente, no conozco a nadie que le haya

sucedido. Los procesos para conseguir el Jailbreak están muy evolucionados, quizá en sus

comienzos pudiera suceder pero hoy en día no. Siempre se va a poder volver a la configuración

inicial.

ASPECTOS LEGALES

En Julio de 2010 el proceso de Jailbreak fue considerado por el gobierno de los Estados Unidos

de América como legal. De acuerdo con la Fundación de Fronteras Electrónicas (EFF) “La

ingeniería inversa es un uso justo cuando se trata de fomentar la interoperabilidad con el

software creado de manera independiente”. Así que legalmente no hay ningún impedimento

para realizar Jailbreak.

Eso sí, Apple no es muy favorable con que se realice este proceso, así que si en algún momento

detecta que se ha realizado el proceso de Jailbreak en el dispositivo , es muy posible que anule

la garantía del mismo.

CYDIA

Entre los repositorios no oficiales de Apps para iOS, Cydia es el más popular. De hecho, es muy

complicado hablar a día de hoy de Jailbreak sin hablar de Cydia. Cydia es una especie de

“AppStore” alternativo para terminales con Jailbreak, que permite descargar e instalar

paquetes, programas y modificaciones (tweaks) fuera de la tienda oficial.

Dispone de una interfaz gráfica (GUI) para el gestor de paquetes apt de Debian que funciona a

través de repositorios.

Page 29: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

25

CYDIA STORE

Al igual que en la AppStore, en Cydia Store hay aplicaciones gratis y de pago. Los creadores de

software también obtienen ganancias en Cydia, siendo es el mismo porcentaje que en la tienda

oficial de Apple, el 70% del dinero recaudado.

TIPOS DE JAILBREAK

Como se ha comentado anteriormente, según la vulnerabilidad descubierta en el sistema

operativo iOS, el Jailbreak conseguido en el teléfono será diferente: Tethered, Untethered o

Semitethered. Se distinguen básicamente por la forma en que se reinicia el terminal

JAILBREAK TETHERED

Es el más tedioso, ya que cada vez que se reinicia el móvil (sea por agotamiento de la batería o

por apagado voluntario) es necesario conectarlo por cable al equipo PC/MAC para que pueda

arrancar.

JAILBREAK UNTETHERED

Es el Jailbreak óptimo ya que no requiere ningún tipo de conexión al ordenador durante la fase

de reinicio.

JAILBREAK SEMI-TETHERED

Es una modalidad de Jailbreak que está a caballo entre Tethered y Untethered, es posible

arrancar el móvil sin conectarlo al PC/MAC pero con funcionalidades limitadas:

Hablar por teléfono

Enviar mensajes

No se puede utilizar el navegador Safari pero sí otro instalado a través de la AppStore.

No se puede utilizar la aplicación Mail nativa pero sí otra instalada a través de la

AppStore.

Quedarán inutilizados los Tweaks (Modificaciones del sistema operativo) y las

aplicaciones instaladas fuera de la AppStore.

MÉTODOS PARA LOGRAR EL JAILBREAK

El Jailbreak se logra gracias a las vulnerabilidades existentes en el sistema operativo del

iPhone. Hay muchos hackers tratando de encontrar agujeros en iOS con el objetivo de poder

conseguir privilegios de administrador.

Por ejemplo, un grupo de hackers llamado “Evad3rs”, consiguió realizar un Jailbreak llamado

“Evasi0n“conseguido para la última versión de iOS, la 6, mediante la utilización de un “exploit”

Page 30: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

26

(programa que aprovecha una vulnerabilidad del sistema para conseguir un comportamiento

no deseado) relacionado con la zona horaria.

Cómo funciona

EvasiOn comienza utilizando un exploit en el sistema de copia de seguridad en iOS con iTunes,

un demonio denominado “MobileBackup”. Lo hace mediante un programa llamado

“libmobiledevice” de PC/MAC que se comunica con dispositivos iOS mediante el protocolo

iTunes.

Evasi0n restaura una copia de seguridad que contiene los ficheros necesarios para el Jailbreak.

“MobileBackup” no puede guardar archivos fuera de la carpeta /var/Mobile/Media, así que lo

que hace evasi0n es crear un enlace simbólico en esa carpeta llamado .haxx que apunta a

/var/Media. MobileBackup es ahora capaz de escribir archivos en /var/Media gracias al enlace

simbólico .haxx. Los ficheros copiados forman la aplicación que se lanzará en el proceso de

Jailbreak.

Utilizando el mismo procedimiento de enlace simbólico, EvasiOn consigue también acceso a un

archivo de zona horaria, que a su vez enlaza a “launchd”, un demonio que tiene privilegios de

root. Ya se ha logrado explotar el acceso a launchd y mediante cambio de permisos en el

archivo de zona horaria se consigue acceso a él mediante cualquier usuario. Ahora se crea un

socket que maneja la comunicación entre launchd y otros procesos, accesible por todas las

aplicaciones del sistema.

Ahora una aplicación albergada en los ficheros de la restauración del primer paso, utilizando el

socket creado, hace que la partición que es solo-lectura pase a ser de escritura.

Una vez conseguido que la partición sea de escritura, mediante el uso nuevamente de

MobileBackup, guardamos un conjunto de archivos entre los que se encuentra el fichero

“launchd.conf”, contenedor de las instrucciones del exploit. Este archivo se ejecuta cada vez

que arranca el teléfono, haciendo el Jailbreak persistente (Untethered).

Uno de los comandos de launchd.conf es el responsable de evitar el

“AppleMobileFileIntegrity”, un verificador de firma de código, que se carga mediante una

librería dinámica. Lo que se hace es sustituir la función de verificación por otra que responde

siempre true.

Uno de los obstáculos de Evasi0n es ASLR (Asignación arbitraria de espacios de memoria), que

guarda de manera arbitraria datos en la memoria, haciendo difícil su predicción. Sin embargo,

en algunos procesadores ARM es todavía fácil de localizar. Utilizando esto, Evasi0n puede

mapear toda la memoria.

Ahora, mediante el uso de un exploit en la interfaz USB de iOS, se consigue finalmente llegar al

kernel del dispositivo.

Limitaciones

iOS es un sistema “cerrado” en el cual las modificaciones que se pueden realizar son muy

reducidas, el fondo de pantalla, la música que tienes cuando te llaman y mandan mensajes y

Page 31: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

27

poco más. Los iconos del escritorio y su distribución dentro del mismo son fijos, los temas

visuales dentro de los menús también. Las limitaciones encontradas en iOS son entre otras:

Sistema “cerrado” en el cual las aplicaciones se instalan únicamente a través de la

tienda oficial AppStore

Las aplicaciones no tienen un acceso completo al sistema.

Imposibilidad para la personalización de aspectos visuales dentro del escritorio

(SpringBoard) o la pantalla de bloqueo (LockScreen) a excepción del fondo.

Modificación de los menús

A continuación voy a describir los métodos para poder realizar el Jailbreak mediante diferentes

herramientas. Para todas ellas es necesario tener instalado iTunes:

JAILBREAK SEMI-UNTETHERED EN IOS 6.1.3 CON REDSNOW

RedSnow es una herramienta que permite, entre otras cosas, realizar el Jailbreak en los

dispositivos de Apple. Este apartado sirve para los iPhone 4 y 3GS con la versión de iOS 6.1.3, y

únicamente podremos optar a realizar el Jailbreak semi-untethered (es decir, que cada vez que

se reinicia el terminal es necesario repetir los últimos pasos).

Primero nos descargamos el programa RedSnow (versión 0.9.15b3) de la página web

http://www.redsn0w.us/2010/03/download-direct-links-jailbreak-guides.html para la

plataforma en la que se esté trabajando. En Windows Vista y superiores se le debe dar

permisos de administración.

Imagen 6

Conectamos el dispositivo al ordenador mediante el cable USB.

Page 32: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

28

Pinchamos en Extras, y posteriormente en Select IPSW, aquí debemos seleccionar el archivo

firmware con el que vamos a trabajar. A pesar de realizar un Jailbreak sobre la versión 6.1.3,

RedSnow trabaja con la versión 6.0, así que nos descargamos la versión 6.0 para nuestro

dispositivo desde esta página http://www.felixbruns.de/iPod/firmware/ y la seleccionamos.

Imagen 7

Una vez elegido el firmware 6.0 le damos a Back y pinchamos, dentro de la página principal, en

Jailbreak. Nos aseguramos de que la opción Install Cydia esté activada y Next.

Imagen 8

Page 33: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

29

Ahora, con el móvil apagado (conectado al ordenador) debemos seguir las indicaciones que se

nos muestran por pantalla para conseguir entrar en modo DFU (Device Firmware Update, un

modo de recuperación del iPhone para poder modificar el firmware).

Si todo ha ido correcto, aparecerá una barra de progreso dentro de la ventana RedSnow y

posteriormente un montón de letras sobre fondo negro en iPhone al estilo “Matrix”, no hay

que preocuparse, es totalmente normal. También saldrá una piña andando en skate y alguna

cosa más, nada de qué alarmarse. Esperamos a que se reinicie.

Ahora el teléfono tiene el Jailbreak realizado pero no está listo para ser usado porque es un

Jailbreak semi-tethered, así que hay que hacer los siguientes pasos, ahora y siempre que se

quiera reiniciar el móvil.

1- Con el teléfono conectado al ordenador, abrimos RedSnow, pinchamos en Extras Select

IPSW y escogemos el firmware 6.0 descargado.

2- Pinchamos en Just Boot y seguimos las instrucciones (el teléfono deberá estar apagado

antes de proceder con las instrucciones)

Durante el proceso de inicio, en vez del logo de Apple, la popular manzana mordida, aparecerá

una piña mordida =) ¡Ya está! Ahora ya tenemos Cydia instalado y el terminal con el Jailbreak

funcional.

JAILBREAK UNTETHERED EN IOS CON LIMERA1N

Gracias a este proceso vamos a lograr un Jailbreak untethered (Recordemos que es el tipo de

Jailbreak en el que no ocurre nada si el teléfono se reinicia, no perderemos el Jailbreak) y nos

va a ser mucho más sencillo que el anterior. Se utiliza la herramienta Limera1n y alcanza un

Jailbreak untethered.

Sirve para los siguientes dispositivos:

IPhone 3GS, iPhone 4, iPhone 4S, iPhone 5, Ipod Touch 4, iPod Touch 5, iPad 2, iPad 3, iPad 4,

iPad Mini.

Y para las siguientes versiones de sistemas operativos:

iOS 6, iOS 6.0.1, iOS 6.0.2, iOS 6.1, iOS 6.1.2

Page 34: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

30

Descargamos el programa Limera1n desde la siguiente página web http://limera1n.com/

según el sistema operativo. Una vez bajado, descomprimimos y abrimos el programa (En

Windows Vista y superior con privilegios de administrador y en Mac pulsar ctrl+click)

Imagen 9

Conectamos el iPhone y pulsamos en make it ra1n.

El teléfono se reiniciará varias veces. Es posible que haya un momento que el programa

Limera1n muestre el mensaje “To continue, please unlock”. De ser así, nos dirigimos al

terminal, desbloqueamos y pinchamos en un icono dentro del springboard (escritorio) llamado

Jailbreak. Todo esto sin desconectar el teléfono del ordenador.

Después de unos cuantos reinicios más, el proceso de Jailbreak se habrá realizado con éxito y

Cydia estará instalado.

Si se produjese algún tipo de error, se deberán repetir los pasos desde el principio.

DOWNGRADE DEL SISTEMA IOS

Apple tiene muy controladas las versiones del software de sus dispositivos, de manera que los

usuarios sólo tienen dos opciones: reinstalar la versión que tienen en ese momento o

actualizar a la última versión de iOS lanzada.

¿Cuál es el procedimiento que realiza Apple para limitar la instalación de versiones de iOS?

Cada uno de los terminales de la compañía de la manzana dispone de un identificador

denominado ECID (Exclusive Chip ID). Este identificador es único para cada dispositivo. Cada

vez que intentamos actualizar o restaurar nuestro terminal la compañía de Cupertino

genera un certificado o firma a partir del ECID y otros datos (entre los que se encuentra la

versión de sistema operativo), llamado SHSH (que será único para cada dispositivo y versión

de sistema operativo).

Cuando utilizamos iTunes para restaurar o actualizar nuestro sistema, iTunes envía el ECID a

los servidores de Apple para que nos envíen el SHSH que nos valida o no la instalación. De

esta forma únicamente podremos instalarnos la versión instalada actualmente en el

dispositivo o la última versión oficial. Además es una medida para evitar que se pueda

hacer Jailbreak en nuestro iPhone, ya que necesitamos el certificado para realizar la

instalación.

Si por alguna razón hemos actualizado nuestro móvil y quisiésemos regresar a una versión

anterior (realizar downgrade), no sería posible con las opciones que nos propone Apple.

Page 35: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

31

Conocido lo anterior, una manera para realizar downgrade consiste en hacer creer al programa

iTunes que Apple genera firmas de versiones anteriores. Para ello basta con guardar en los

servidores de Cydia los archivos SHSH que han sido generados previamente por Apple.

Destacar que sólo se va a poder hacer downgrade si previamente se han guardado los SHSH

propios del terminal y únicamente a las versiones de las que se tenga copia del SHSH. Es decir,

si tengo un SHSH de la versión 5.0 de iOS pero no de la versión 5.1, únicamente podré volver a

la versión 5.0.

El engaño a iTunes se realiza haciéndole creer que está contactando con los servidores de

Apple mediante una modificación del archivo hosts (archivo del sistema que resuelve nombres

de dominio en direcciones IP) del equipo donde esté instalado iTunes. En este fichero hay que

crear una entrada con el nombre del servidor de Apple y, a continuación la resolución con la IP

de los servidores de Cydia.

CÓMO GUARDAR LOS ARCHIVOS SHSH

Como he comentado anteriormente, los SHSH son fundamentales para poder realizar el

downgrade en el teléfono. Para los usuarios que tengan el Jailbreak ya hecho, es posible que

automáticamente Cydia los guarde en sus servidores. A veces esto no es así, con lo cual no está

de más que nosotros hagamos una copia en local de los SHSH.

Para realizar un backup de los SHSH se pueden utilizar entre otras, estas herramientas:

TinyUmbrella (http://thefirmwareumbrella.blogspot.com.es/) y iFaith (http://ih8sn0w.com/)

RESTRICCIONES

Para los dispositivos antiguos, iPhone 2G, iPhone 3G, iPhone 4, iPad 1G, iPad Touch, iPod

Touch 3G e iPod Touch 4G, basta con tener los SHSH guardados para realizar el downgrade a

cualquier versión del sistema operativo.

Los nuevos dispositivos, iPad 2, iPad 3, iPhone 4S, iPhone 5 iPod Touch 5G tienen más

restricciones, por tanto, de momento es más complicado realizar el downgrade en la versión 6

de iOS, aunque en la 5 es posible.

GUARDAR SHSH CON TINYUMBRELLA

TinyUmbrella es una aplicación que permite guardar los archivos SHSH de manera local, ya sea

descargándolos desde los servidores de Cydia (los que se hayan ido guardando

periódicamente) o de los servidores de Apple (los que firma en la actualidad).

Para realizar el proceso, primero deberemos descargar el programa TinyUmbrella ejecutarlo

(en Windows Vista y superior hay que abrirlo con permisos de administración).

A continuación conectamos el teléfono al ordenador y, como podemos apreciar en la imagen,

nos deberá aparecer en la barra de la izquierda un nuevo ítem con el nombre de nuestro

teléfono, pinchamos en él.

Page 36: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

32

Imagen 10

Ahora vamos a la pestaña Advanced, dentro de ella encontramos las siguientes opciones:

Save ALL Available SHSH: Deberá estar marcado, para guardar todos los SHSH

disponibles, en general Apple sólo firma un SHSH, pero hay ocasiones en las que puede

firmar varios.

Request SHSH From Cydia: NO debe estar marcado, ya que si lo estuviese descargaría

los SHSH de los servidores de Cydia y es posible que no guarde los actuales.

El resto de opciones no son importantes, las dejamos como están.

Imagen 11

Page 37: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

33

Pulsamos sobre el botón SAVE SHSH y ya está, si queremos ver el progreso, basta con ir a la

pestaña Log.

Imagen 12

De esta forma tendremos guardados ya los ficheros SHSH que está firmando Apple en la

actualidad para nuestro dispositivo.

Los ficheros generados tendrán la extensión .shsh y su nombre se compondrá el ECID, el tipo

de móvil y la versión de sistema operativo.

REALIZAR DOWNGRADE CON TINYUMBRELLA

TinyUmbrella, además de guardar los SHSH, también es capaz de emular el servidor de Apple

que provee a iTunes de los certificados SHSH.

Para este apartado es necesario tener el programa TinyUmbrella, haber bajado previamente

los SHSH y disponer del firmware que queremos instalar en nuestro dispositivo.

Abrimos TinyUmbrella, vamos a la pestaña Log y pulsamos el botón Start TSS Server. Lo que ha

hecho internamente el programa es crear una entrada dentro del archivo hosts del sistema

con el nombre de dominio “gs.apple.com” y con la dirección IP “127.0.0.1”.

Si está funcionando todo bien, debe aparecernos el siguiente mensaje:

Page 38: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

34

Imagen 13

Ahora abrimos iTunes y nos vamos a la pantalla principal de monitorización del iPhone,

pulsamos sobre restaurar (con la tecla Shift en Windows o la tecla Alt en Mac) y seleccionamos

el firmware con la versión a la que queremos ir.

Imagen 14

Ahora iTunes buscará los SHSH en el nombre de dominio “gs.apple.com”, pero le redirigirá

hacia localhost y cogerá los certificados que tiene albergados TinyUmbrella.

Page 39: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

35

REALIZAR DOWNGRADE CON SN0WBREEZE

A continuación vamos a ver una forma alternativa de realizar downgrade en los dispositivos de

Apple mediante Sn0wbreeze, una herramienta que permite la creación de firmwares

modificados.

En el procedimiento anterior de downgrade, “engañábamos” a iTunes para que buscara los

archivos SHSH en los servidores de Cydia o en local, en lugar de los servidores de Apple. Con

este método lo que vamos a hacer es un firmware propio que contenga el firmware original

pero ya firmado con el certificado SHSH. A este tipo de firmware ya firmado se le llama

“Stitched firmware”. Con este método, iTunes obviará el paso de petición de SHSH a sus

servidores, puesto que el firmware ya viene firmado.

Para la realización de este apartado necesitaremos el programa Sn0wbreeze

(http://ih8sn0w.com/), los SHSH guardados y el firmware de la versión a la que queremos

hacer downgrade descargado.

Abrimos Sn0wbreeze con permisos de administrador.

Nos mostrará un mensaje de aviso de que el programa no es de tipo comercial y de que el

autor no se hace responsable de los posibles daños que se causen en el terminal. Pinchamos

con tranquilidad en OK, seguido pinchamos en la flecha azul ubicada en la parte inferior

derecha.

Imagen 15

Page 40: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

36

A continuación pulsamos sobre el botón azul que pone Browse for an IPSW y vamos a la ruta

en la que se encuentra el firmware descargado.

Imagen 16

Si el programa ha reconocido el firmware nos mostrará por pantalla las especificaciones del

mismo y el mensaje verified.

Imagen 17

Recordemos que lo que está haciendo ahora el programa es crear un firmware modificado ya

firmado por el SHSH, de esta manera evitamos que posteriormente iTunes, al hacer la

restauración, contacte con los servidores de Apple.

Page 41: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

37

Proseguimos pulsando sobre la opción iFaith mode y nos saldrá un menú emergente

pidiéndonos seleccionar los SHSH, los buscamos en nuestro equipo y aceptamos.

Imagen 18

Ahora pinchamos en Build IPSW y seguidamente sobre la flecha azul ubicada en la parte

inferior derecha.

Imagen 19

Es posible que el proceso se demore unos cuantos minutos hasta que concluya la creación el

archivo IPSW.

Una vez generado el fichero IPSW, es momento de utilizar iREB, una herramienta que pone

nuestro terminal en un estado “jailbreakeable”, de tal forma que sea posible la instalación de

firmwares personalizados desde iTunes.

Volvemos a abrir Sn0wbreeze y pinchamos en el menú superior en la opción iREB.

Page 42: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

38

A continuación nos pedirá una serie de pasos para poner el terminal en modo DFU (recordar

que es un estado similar al modo Recovery, pero con un abanico más amplio de posibilidades),

los seguimos y dejamos que actúe el programa.

Imagen 20

Una vez hecho esto, ya sólo nos queda hacer los últimos pasos que utilizamos en el método de

Downgrade con TinyUmbrella.

Abrimos iTunes y nos vamos a la pantalla principal de monitorización del iPhone, pulsamos

sobre restaurar (con la tecla Shift en Windows o la tecla Alt en Mac) y seleccionamos el

firmware personalizado que hemos creado.

Si todo ha ido bien en unos minutos deberemos haber conseguido realizar el Downgrade.

LIBERAR IPHONE (UNLOCK)

Muchas operadoras telefónicas subvencionan o realizan descuentos en terminales a cambio de

permanecer con ellos durante algún tiempo. Para asegurarse de esto, realizan un bloqueo en

los dispositivos para que únicamente puedan ser utilizados con tarjetas SIM de las propias

compañías.

Hay dos formas lícitas de conseguir la liberación de un terminal:

Una vez concluida la permanencia, requerir a la compañía telefónica la liberación del

teléfono.

Existen empresas que se dedican a la liberación de terminales, pero hay que abonar

una cantidad de dinero por el trámite.

Page 43: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

39

Otra forma de liberar el móvil es mediante Jailbreak. No hay que confundir los términos, no

son lo mismo, tener el teléfono con el Jailbreak realizado no significa que esté libre para

utilizar con cualquier compañía. Para liberar el terminal gracias al Jailbreak es necesario

engañar a la parte del teléfono dedicada a las comunicaciones (baseband), mediante la

instalación de parches en el sistema operativo y unos adaptadores de tarjetas SIM.

Page 44: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

40

Page 45: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

41

CREACIÓN DE NUESTRA PROPIA VERSIÓN DE ANDROID

Para la instalación de la aplicación de cálculo científico dentro del terminal, es necesario

realizar una serie de modificaciones al sistema operativo. Hay dos formas de hacerlo, efectuar

dichas transformaciones dentro de una versión ya instalada en un teléfono Android o creando

una distribución personalizada que contenga ya todos estos cambios.

A continuación voy a explicar una serie de conceptos que he creído útiles tener claros, como

son las partes de las que se compone un firmware, las particiones que se generan en el sistema

de archivos Android y posteriormente describiré el proceso la producción de la ROM

modificada.

CONCEPTOS ÚTILES ANTES DE EMPEZAR

Antes de ponernos manos a la obra con la creación de nuestra ROM modificada es

conveniente tener claros algunos conceptos acerca de Android.

PARTES DE UN FIRMWARE

Un firmware se compone de diferentes partes:

PDA: Es el propio Android en sí, dentro de la cual están los programas y sus

configuraciones.

PHONE: Es el fichero firmware del módem, que además gestiona el Wifi, el bluetooth y

las conexiones 2G/3G

CSC (Consumer Software Customization): Incluye la configuración de la conexión de

datos a las redes de un país o zona determinada, así como configuración y datos de

aplicaciones de operadoras.

PARTICIONES EN EL SISTEMA ANDROID

Android hace uso de una serie de particiones para organizar los ficheros y carpetas del

dispositivo. Cada una de ellas tiene una función distinta en el dispositivo.

Por un lado tenemos las particiones estándar de la memoria interna:

/boot

/system

/Recovery

/data

/cache

/misc

Y por otro lado las siguientes particiones pertenecientes a la tarjeta SD:

Page 46: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

42

/sdcard

/sd-ext

/BOOT

Esta partición se encarga de gestionar el arranque del dispositivo. En su interior se encuentran

el Bootloader y el kernel. Sin esta partición sencillamente el teléfono no sería capaz de

iniciarse. Es importantísimo saber que si, por alguna razón, formateamos esta partición desde

el Recovery, no debemos, bajo ningún concepto, reiniciar el dispositivo antes de instalar una

nueva, ya que no volvería a iniciarse.

/SYSTEM

Esta partición contiene el sistema operativo en sí, a excepción del kernel, del Bootloader, y de

las aplicaciones que vienen por defecto en el terminal. De borrarse el contenido de esta

partición se eliminaría completamente Android del dispositivo, pero siempre se podrá acceder

al Recovery e instalar una nueva ROM.

/RECOVERY

Como he comentado en apartados anteriores, esta partición contiene un arranque alternativo

a /boot. Si se arranca desde aquí (mediante una combinación de teclas durante el encendido

del dispositivo) tendremos acceso a ciertas tareas avanzadas, como borrar los datos del

terminal, instalar ROMs nuevas, actualizar, etc.

/DATA

Esta partición albergaría los datos de usuario, todo lo que el usuario ha creado o descargado. A

continuación se muestra una lista de posibles datos que pertenecen a esta partición:

Aplicaciones y widgets instalados.

Contactos y toda la información asociada.

Información de las llamadas

Mensajes

Emails

Calendario

Niveles de juegos como Angry Birds…

El borrado de esta partición dejaría el teléfono tal y como vino de fábrica.

Page 47: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

43

/CACHE

Esta partición guarda datos a los que el usuario accede de manera frecuente para que la carga

de los mismos sea mucho más rápida en el momento de ser solicitada.

Limpiar esta partición no afectará en absoluto a los datos personales ni al correcto

funcionamiento del teléfono, pero mitigará el rendimiento del dispositivo. De todos modos,

una vez limpia, con el uso se volverá a llenar con los datos que el sistema operativo considere

más oportunos.

/MISC

Contiene información adicional acerca de la configuración del sistema. Entre esta información

se encuentra el CID (identificador del operador), configuración USB y ciertos ajustes hardware.

Es una partición importante que si se pierde o se modifica de manera errónea puede hacer que

algunas características del teléfono dejen de funcionar o no lo hagan correctamente.

/SDCARD

Esta partición pertenece a la tarjeta SD. Aquí es donde se guardan los datos que se quiera

almacenar, como archivos multimedia, documentos, etc. Además, muchas aplicaciones

instaladas guardan aquí sus datos y configuraciones con el objetivo de liberar el espacio de la

memoria interna.

Hay dispositivos que contienen una tarjeta SD interna y otra externa, como ocurre con el

teléfono con el que estoy trabajando, el Samsung Galaxy S. En este caso, la partición /sdcard se

referirá siempre a la SD interna. Para la SD externa se utilizará la partición /sdcard/sd.

/SD-EXT

Aunque no es una partición estándar, se ha convertido en muy popular debido a los problemas

de almacenamiento interno existentes en los dispositivos Android. Se trata de una partición

adicional creada en la tarjeta SD que actúa como una extensión de la partición /data.

Se puede ampliar información en el apartado “Ampliación de almacenamiento con Link2SD”.

Borrar esta partición es similar a borrar la partición /data.

SIGNIFICADO DE LOS CÓDIGOS PDA Y CSC AL DESCARGARNOS EL FIRMWARE

Una de las dudas que me surgió en el momento de descargar la versión de Firmware de mi

teléfono era qué significaban los códigos de PDA, PHONE y CSC.

Page 48: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

44

Imagen 21

Por ejemplo, al descargarme la ROM oficial de Samsung para Vodafone, el archivo obtenido es

nombrado de la siguiente manera:

I9000XWLK9_I9000GYOGLK4_YOG.zip

El primer apartado es el código de la PDA

I9000 (Modelo) XW (Región) L (Año) K (Mes) 9 (Revisión)

El segundo apartado es el código del CSC

I9000 (Modelo) YOG (Operadora) L (Año) K (Mes) 4 (Revisión)

Page 49: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

45

CREACIÓN DE LA ROM

Una vez descritos los conceptos principales, me dispongo a explicar el proceso de creación de

la ROM personalizada. Comenzaré listando los prerrequisitos necesarios, tanto en el terminal

como en el equipo de sobremesa; continuaré describiendo las funciones del programa que nos

va a permitir crear la ROM, Android Kitchen y terminaré describiendo el proceso de “cocinar”

la ROM.

PRERREQUISITOS

Para la creación de nuestra versión de Android modificada con este método, será necesario

disponer de lo siguiente:

Tener un dispositivo rooteado con un Recovery modificado ClockworkMod. Para las

pruebas he utilizado un Samsung Galaxy GT-I9000.

Descargar el programa Android Kitchen desde el siguiente repositorio

https://github.com/dsixda/Android-Kitchen/ en el PC de trabajo.

Tener instalado el JDK de la página de Oracle en el PC de trabajo.

Una ROM base a partir de la cual realizaremos todas las modificaciones que creamos

oportunas. Podemos utilizar una oficial o una personalizada. El proceso entre ambas es

algo diferente, partir de una oficial nos asegura que tendremos control sobre los

cambios realizados desde el principio. En la página web http://www.sammobile.com/

se pueden encontrar firmwares de fábrica de la compañía Samsung.

Para la realización de los siguientes pasos he utilizado un sistema operativo Linux, en concreto

una distribución Ubuntu.

Hay que tener cuidado con los pasos que se realizan a continuación, ya que de hacerse mal, al

intentar realizar un flasheo al móvil de la ROM modificada, es probable que lo dejemos

inutilizable.

DESCRIPCIÓN DE ANDROID KITCHEN

A continuación voy a listar la configuración de la aplicación Android Kitchen, así como la

descripción de sus diferentes funcionalidades.

Una vez descargado el programa Android Kitchen, lo descomprimimos. Dentro de la carpeta

obtenida tendremos un directorio llamado original_update, en el cual deberemos introducir el

fichero firmware que hemos descargado y sobre el que trabajaremos. Para el trabajo me he

basado en una versión de fábrica del teléfono Samsung Galaxy S GT-I9000, con la versión 2.3.6

de Android y libre de operadora (http://www.sammobile.com/firmwares/1/?model=GT-

I9000&pcode=FOP#firmware).

Una vez hecho esto, vamos a una terminal en el equipo de sobremesa, accedemos al directorio

obtenido tras descomprimir Android Kitchen y ejecutamos el programa mediante:

Page 50: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

46

$ ./menu

Imagen 22

Una vez ejecutado, nos encontramos con el menú de la imagen superior. A continuación

explico qué función tiene cada una de las opciones:

1. Set up working folder from ROM: Pulsando esta opción seleccionaremos el Firmware

base que queremos modificar. A continuación se creará una carpeta de trabajo con el

archivo Firmware desempaquetado y sobre el que trabajaremos.

2. Add Root permissions: Añade la posibilidad de ser superusuario.

3. Add BusyBox: Busybox es el conjunto habitual de herramientas Linux portadas al

entorno Android. Con esta opción las agregaremos a nuestro Firmware.

4. Disable boot screen sounds: Elimina el sonido que aparece al iniciar el móvil.

5. Zipalign all *apk…: Herramienta que optimiza los paquetes .apk adaptándolos a los

requisitos óptimos de Android.

6. Change wipe status of ROM: Establece si los Wipes (borrados) del sistema los hace la

ROM o los hace el propio usuario.

7. Change name of the ROM: Opción para cambiar el nombre de compilación de la ROM.

8. Show working folder information: Nos muestra información acerca de la ROM y una

lista con las características que le hemos añadido.

0. Advanced Options:

Page 51: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

47

Imagen 23

11. De-odex files in your ROM: Las ROM´s oficiales incorporan las aplicaciones

divididas en un archivo .apk y uno .odex. Con esto se consigue acelerar el

arranque del dispositivo la primera vez que se inicia. Sin embargo, en nuestro

caso, que lo que queremos es modificarlos, nos vendrá mejor que en vez de

estar divididos estén juntos para poder acceder mejor al contenido. Esta opción

realiza exactamente eso, encapsular en un fichero ambos archivos. La única

pega es que la primera vez que se inicie la ROM, costará algo más de tiempo.

12. Tools for boot image: Nos permite desempaquetar el kernel y su posterior

empaquetado para poder realizar modificaciones en él.

13. Add /data/app functionality: Posibilita la inclusión de aplicaciones firmadas de

sistema.

14. Add /etc/init.d scripts…: Esta opción añade soporte para el directorio

/etc/init.d, su utilidad es ejecutar los scripts que se encuentren en esa carpeta al

inicio del móvil.

15. Unpack data.img: Desempaqueta el archivo contenedor de los datos de usuario.

16. Sign APK or ZIP file: Realiza el proceso de firma a una aplicación APK o a un

archivo de firmware ZIP.

17. Convert: Convierte el script de de instalación del formato update-script a

updater-script.

18. Plugins scripts: Posibilita la instalación de plugins.

0. Legacy Options: De estas opciones la única que nos va a interesar es la 27

Page 52: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

48

Imagen 24

27. Add custom boot animation…: Nos habilita la posibilidad de crear una

animación de inicio.

Una vez explicado todo, en el menú principal seleccionamos la opción número 1. Como he

comentado anteriormente, lo que hacemos con esta opción será escoger el firmware base que

vamos a modificar y la creación de un directorio de trabajo con el firmware desempaquetado

para su personalización.

Imagen 25

Se nos muestra por pantalla las diferentes ROMs base disponibles, en este caso al sólo tener

una, escogemos la opción número 1.

Page 53: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

49

Imagen 26

El programa nos dice que de manera predeterminada el directorio de trabajo se llamará

WORKING_070813_000836, si deseamos modificarlo, escogemos la opción n, si no, la y.

Imagen 27

Ahora nos pregunta si queremos que el programa extraiga el CSC, que es la configuración

propia de la operadora para la que estamos creando el firmware. Le damos a la opción yes (y)

para poder personalizarla.

Page 54: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

50

Imagen 28

Por último nos dice si queremos ver una pantalla resumen acerca del estado del firmware, le

damos que sí y se nos muestra la pantalla que veis en la imagen superior. Como podemos

observar nos indica las características del firmware y vemos que la mayoría de las opciones

están puestas en NO.

Eso se debe a que es una versión de firmware oficial y no tiene ninguna modificación propia de

ROMs no oficiales. Veremos como al final del proceso, la mayoría de las opciones pasan a un

estado YES.

INSTALACIÓN DE LA APLICACIÓN TRIQCT EN EL FIRMWARE

Nos dirigimos al directorio de instalación de Android Kitchen, el cual albergará la carpeta de

trabajo llamada WORKING_070813_000836 (contenedor de todo el sistema de archivos de

nuestra versión de Android). Dentro de esta última vamos a data/app (El directorio estándar

de instalación de las aplicaciones de usuario en Android es /data/app) y creamos una carpeta

llamada Triqct.

Ya sólo nos falta meter en la carpeta Triqct el binario obtenido en el apartado Portación de

aplicación de cálculo científico a un entorno móvil. Durante el flasheo del móvil

automáticamente se instalará en el dispositivo nuestra aplicación.

PERSONALIZACIÓN DEL SISTEMA OPERATIVO

Tras tener seleccionado el firmware que vamos a utilizar como base, haber creado el directorio

de trabaja e introducida la aplicación Triqct, es momento de configurar el sistema operativo

con las funcionalidades que necesitamos.

A continuación voy a listar de manera resumida las opciones que se han de seguir:

Opción 2 --- Opción c: Rootea el firmware.

Opción 3 --- y (yes): Añade el conjunto de utilides Busybox (comandos típicos

de un entorno Linux).

Page 55: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

51

Opción 0 --- Opción 13 --- y (yes): Permite actualizar y desinstalar aplicaciones

del sistema con facilidad.

Opción 00 --- Opción 27: Crea una carpeta en /path/local en donde podemos

colocar una animación de inicio de Android.

Opción 0 --- Opción 11: Voy a detenerme en esta opción ya que es importante

que en el menú que nos sale (Imagen 34) tengamos puesta la versión del API

que corresponde con nuestra versión de Android. Para ello pulsamos la opción

v y elegimos la opción adecuada. A continuación la opción b para juntar los

archivos .apk y los archivos .odex en uno solo.

Imagen 29

Perfecto, una vez hemos realizado los pasos descritos anteriormente, en la pantalla principal

escogemos la opción 8 para ver el estado de nuestra personalización de firmware y cómo la

mayoría de las opciones han pasado de estado NO, a estado YES.

Imagen 30

Page 56: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

52

CREACIÓN DE LA IMAGEN DEL SISTEMA OPERATIVO (ROM)

Tras haber configurado el sistema, es momento de generar el archivo imagen que contendrá el

sistema operativo modificado. Para ello nos dirigimos a la pantalla principal de Android Kitchen

y seleccionamos la opción 99 Build ROM from working folder.

Imagen 31

La imagen 31 nos muestra el contenido del archivo ROM, donde se puede observar la

estructura de archivos del sistema Android.

CREAR ANIMACIÓN DE INICIO EN ANDROID

La animación de inicio o bootanimation es la secuencia de imágenes que aparece cada vez que

se carga el sistema operativo Android, al igual que en el arranque de Windows o Mac OS,

donde nos aparecen sus respectivos logos en movimiento.

A continuación voy a explicar los pasos para poder modificar esta animación y poner una

personalizada.

El bootanimation se construye bajo un archivo ZIP, ubicado dentro de la carpeta data/local de

nuestra ROM cocinada. Dentro del archivo se alojan una o más carpetas con el nombre part0,

part1, part2, etc. y un fichero de texto llamado desc.txt.

Imagen 32

Page 57: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

53

desc.txt: Encargado de decirle al sistema el tamaño de las imágenes, el orden que

debe seguir, la velocidad de transición, si debe seguir un bucle y si debe hacer pausa.

Su estructura es la siguiente

480 800 15

p 1 0 part0

p 0 0 part1

La resolución de la animación (ancho por largo), en este caso he puesto la resolución del

terminal con la que estoy trabajando.

El número de frames por segundo del bootanimation. Entre 15 y 30 es una buena medida.

Indica que esa línea es parte de la animación.

El número de veces que queremos que se repita esa sección (0 es infinito).

La pausa en segundo que se realizará antes de empezar el siguiente bucle o pasar a la

siguiente línea.

El nombre de los directorios que albergan las imágenes.

Carpetas partX: Las imágenes que contienen éstas carpetas deberán estar en formato

PNG sin entrelazar. Se pueden nombrar como se quiera, pero el orden en el que se

mostrará por pantalla será el alfabético. Así una buena manera sería nombrarlas sería

001.png, 002.png, 003.png, etc.

Una vez tengamos las imágenes que conformarán nuestra animación dentro de las carpetas

correspondientes y el archivo de texto, necesitamos empaquetarlo todo en un ZIP, y digo

empaquetar porque aquí es muy importante utilizar compresión cero (si no se hace así la

animación será invalida). En Linux se realizaría de la siguiente manera:

$ zip -0 bootanimation.zip desc.txt part0/* part1/* … partN/*

-0 (cero) indica que la compresión será nula.

Ahora sólo tenemos que mover el archivo bootanimation.zip dentro de nuestra ROM cocinada

a la carpeta data/local.

Como anotación decir que si quisiésemos modificar la animación en un sistema ya instalado en

un dispositivo, necesitaríamos el terminal rooteado y enviar el archivo bootanimation.zip a la

ruta data/local del teléfono mediante la siguiente instrucción

$ adb push bootanimation.zip /data/local

adb (Android Debug Bridge) es una herramienta que se descarga con el SDK de Android.

Nos queda reiniciar el dispositivo y ver los resultados.

Page 58: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

54

Page 59: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

55

PORTACIÓN DE APLICACIÓN DE CÁLCULO CIENTÍFICO A UN ENTORNO MÓVIL

Para compilar la aplicación Triqct en equipos de escritorio hacemos uso del compilador de

GNU, gfortran, que es parte de la colección de compiladores de GNU, GCC.

Un desarrollador ha publicado recientemente en el mercado de aplicaciones oficial de Android,

Google Play, una portación de las herramientas GCC para poder ser utilizadas en Android con

una arquitectura de procesadores ARM. Se llama GCC C/C++ Fortran Compiler Pro

(https://play.google.com/store/apps/details?id=bc.compiler). Para la instalación de estos

compiladores en nuestro terminal es necesario cumplir los siguientes requisitos:

Tener privilegios de root.

Haber instalado las herramientas BusyBox, que son un conjunto de utilidades estándar

que se encuentran en la mayoría de sistemas operativos Unix como kill, cat, more, ls,

etc.

Una vez instalados los compiladores, tenemos que crear las variables de entorno necesarias

para poder acceder a las herramientas GCC. Abrimos un terminal y lo primero de todo es

tomar la identidad de root (necesario para la realización de algunos pasos), a continuación

añadimos la ruta de las librerías y los binarios en las correspondientes variables de entorno:

$ su

# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/data/bc.compiler/lib/

# export PATH=$PATH:/data/data/bc.compiler/bin

Nos dirigimos a la ruta estándar donde se encuentran todas las aplicaciones de usuario y

creamos un directorio de trabajo llamado Triqct:

# cd /data/app

# mkdir Triqct

# cd Triqct

Es momento de introducir el código fuente en la carpeta que acabamos de generar, para ello

podemos utilizar un gestor de archivos dentro del propio dispositivo Android. Una vez hecho,

es momento de compilar la aplicación:

# gfortran -fno-automatic -O2 dummy.f triqct98.3.1.f -o Triqct

Tras unos minutos ya se ha compilado la aplicación y podemos proceder a ejecutarla para

comprobar su correcto funcionamiento:

# ./Triqct

Subrayar que es una versión estable, pero en mi caso he tenido bastantes problemas a la hora

de manejar la escritura en ficheros de entrada y salida.

Page 60: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

56

Page 61: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

57

CONCLUSIONES

El objetivo inicial del presente Trabajo Fin de Grado era la adaptación de una aplicación de

cálculo científico a la arquitectura ARM dentro de una plataforma móvil.

La idea nació fruto de la combinación de:

La necesidad por parte de distintos departamentos de la Universidad de La Rioja de

conseguir potencia de cálculo intensivo.

Visión de futuro de las grandes posibilidades que ofrece los procesadores que siguen la

arquitectura ARM con un coste muy reducido.

LECCIONES APRENDIDAS

Este trabajo me ha permitido conjugar mi experiencia en computación distribuida orientada al

cálculo científico con mi devoción por el mundo de los teléfonos móviles. Además durante

todo este trayecto he logrado adquirir una gran cantidad de conocimientos que antes

desconocía o no tenía muy nítidos.

Conocer al detalle cómo funciona internamente un dispositivo móvil, proceso de arranque,

particiones del sistema operativo, las funciones del kernel, son conceptos que he asimilado

perfectamente y creo van a ayudarme en mi futuro profesional.

La creación de la ROM Android modificada ha sido el punto que más me ha sorprendido y que

más entretenido he encontrado, por el resultado tan vistoso de haber creado un sistema

operativo propio. A la par, ha sido el punto más costoso porque cada modificación del mismo

requería la instalación en el terminal y la prueba de su correcto funcionamiento.

VALORACIÓN FINAL

Se ha demostrado la viabilidad de portar una aplicación de cálculo científico de dinámica

molecular como es Triqct a un sistema móvil con arquitectura ARM. Hay que recordar que la

finalidad no es ejecutarlos en estos dispositivos, aunque abre la posibilidad de que se ejecute

en un entorno de alto rendimiento (HPC) si en un futuro se construyen clústers de

ordenadores con procesadores ARM.

Hubiese sido interesante la investigación de otros sistemas operativos móviles como Windows

Phone, BlackBerry o Firefox OS. Pero por la limitación de horas del trabajo y la no

disponibilidad de terminales de este tipo, no lo ha hecho posible.

Page 62: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

58

Page 63: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

59

ANEXO 1 – ARQUITECTURA DE IOS

La arquitectura encontrada en iOS se distribuye en capas o niveles de abstracción: El núcleo

del sistema “Core OS”, la capa de “Core Services”, la capa media y la capa “Cocoa Touch”.

Como he comentado, iOS está basado en el entorno de escritorio Mac OS X y, aunque este

último es algo más extenso que el sistema operativo móvil, se podría también dividir en cuatro

capas.

CAPA CORE OS

En ella se alberga el núcleo del sistema operativo, basado en Darwin BSD. Es la capa más baja

de la pila de iOS y se sitúa directamente sobre el dispositivo hardware. Además de entorno del

núcleo, esta capa alberga el nivel del sistema, los drivers y las interfaces de bajo nivel del

sistema operativo UNIX.

NIVEL DE SISTEMA

El nivel de sistema abarca el entorno del kernel, los drivers y las interfaces de bajo nivel del

sistema operativo UNIX. El kernel es el responsable de todos los aspectos del sistema

operativo, se encarga de:

La gestión de memoria virtual

Gestión de procesos, hilos y manejo de la memoria y comunicación entre procesos.

Gestión del sistema de archivos.

Gestión del acceso a red de bajo nivel.

Gestión de procesos que interactúan directamente con el hardware.

Los drivers de este nivel proveen la interfaz entre el hardware del sistema y las capas

superiores. Por seguridad, el acceso al kernel y drivers está restringido a un conjunto limitado

de frameworks.

En iOS existen un conjunto de interfaces escritas en C, para el acceso a muchas características

de bajo nivel, a través de la biblioteca Libsystem:

Manejo de hilos (POSIX)

Red (sockets BSD)

Acceso al sistema de archivos

Manejo estándar de la entrada y salida.

Servicios DNS y Bonjour (método para establecer una red de área local)

Asignación de memoria

Cálculos matemáticos.

FRAMEWORK DE SEGURIDAD

iOS proporciona un framework de seguridad que podemos utilizar para garantizar la seguridad

de los datos de nuestra aplicación. Provee interfaces para la gestión de certificados, de llave

Page 64: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

60

pública y privada, y políticas de seguridad. Además nos posibilita la creación de números

pseudo-aleatorios.

También nos proporciona un llavero para el almacenamiento de certificados y llaves

criptográficas.

CAPA CORE SERVICES

La capa “core services” contiene los servicios de sistema básicos que toda aplicación utiliza.

Entre las principales tecnologías disponibles esta capa se encuentran: SQLite, GDC, iCloud, etc.

Que detallaremos a continuación.

SQLITE

Biblioteca que nos permite incrustar una base de datos de SQL en aplicaciones de manera

local, sin necesidad de ejecutar un proceso separado en servidor remoto de base de datos.

Desde nuestra aplicación, podemos crear archivos de base de datos locales y gestionar las

tablas y los registros en esos archivos. Aunque la librería está diseñada para un uso de

propósito general, está optimizada para un acceso rapidísimo a los registros.

El ejemplo más común es la base de datos de los contactos de teléfono.

GRAND CENTRAL DISPATCH (GCD)

No hay nada más desagradable para el usuario que ver cómo una tarea de una aplicación que

tarda en ejecutarse bloquea el sistema e incluso no ofrece ningún tipo de información sobre lo

que está aconteciendo.

Grand Central Dispatch (GCD) nos va a permitir ejecutar varias tareas (en diferentes hilos) al

mismo tiempo de forma controlada y sencilla. Si no utilizásemos la tecnología GCD en nuestra

aplicación, al realizar una tarea que tardase mucho en terminar, iOS cerraría la aplicación al

considerar que no es oportuno tener el sistema bloqueado tanto tiempo.

ALMACENAMIENTO ICLOUD

iCloud permite a las aplicaciones guardar documentos y datos en la nube y hacer que se

sincronicen con los dispositivos iOS (iPod, iPad, iPhone..) y Mac OS X del usuario. También es

posible acceder a la información albergada en los servidores a través de una aplicación Web

mediante cualquier navegador a través de https://www.icloud.com.

Este servicio nos brinda la seguridad de que en caso de extraviar nuestro dispositivo, no

perderemos la información albergada en él, ya que tendremos una copia en internet.

Hay dos formas de utilizar el almacenamiento en iCloud:

iCloud document storage: Almacenamiento de documentos en la nube.

Page 65: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

61

iCloud key-value data storage: Pares clave-valor para almacenar en la nube pequeñas

cantidades de información (kilobytes). Se puede utilizar por ejemplo para guardar

preferencias de usuario.

Imagen 33

PROTECCIÓN DE DATOS

La protección de datos permite a las aplicaciones utilizar las funciones de encriptado

disponible para salvaguardar la información. Mediante la contraseña del dispositivo de cada

usuario, junto con la encriptación hardware del dispositivo, se genera una clave de

encriptación fuerte. Cuando la app designa un archivo como protegido, el sistema almacena

ese archivo en disco encriptado con la clave generada. Mientras el teléfono esté bloqueado, el

contenido de ese fichero es inaccesible, tanto para la propia aplicación como para cualquier

intruso. Cuando el dispositivo es desbloqueado, se genera una clave de desencriptación que

permite a la aplicación acceder al contenido del archivo.

CONTEO DE REFERENCIA AUTOMÁTICA (ARC)

En iOS 4, el programador era el encargado de liberar las variables (RELEASE) que ya no fuese a

utilizar y de mantener las que quisiese conservar (RETAIN). Cuando un objeto es utilizado

desde varios lugares de la aplicación, se produce lo que se llama “Reference Counting”, un

contador de los sitios donde se está utilizando dicho objeto. De este modo, cuando las

diferentes partes de nuestra aplicación liberan este objeto mediante el método “RELEASE”, el

contador va disminuyendo y, al llegar a 0, se destruye automáticamente ese espacio de

memoria.

El problema viene cuando no se realizan correctamente los RELEASE de dicho objeto, ya que el

contador nunca llegaría a cero y la memoria consumida por el objeto nunca se liberaría.

En iOS 5 nació el conteo de referencia automática (ARC), que realiza todas las operaciones

RETAIN y RELEASE por nosotros.

ARC es una característica del compilador que simplifica la gestión de vida útil de los objetos en

Objective C. En lugar de recordar cuándo se debe retener o liberar un objeto, el ARC evalúa las

Page 66: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

62

necesidades de su vida y los inserta de forma automática en las llamadas a métodos

adecuados en tiempo de compilación.

Imagen 34

SOPORTE XML

iOS nos permitirá parsear y escribir datos XML de forma rápida y transformar el contenido XML

a HTML.

COMPRA DENTRO DE LA APLICACIÓN

Apple nos brinda mediante este servicio la posibilidad para vender contenidos dentro de la

propia aplicación. Se implementa usando el “Store kit framework” que procesa las

transacciones financieras usando las cuentas de usuario de iTunes.

CAPA MEDIA

Esta es la capa encargada de los servicios de multimedia. Escrita tanto en lenguaje C como

Objective C, es una interfaz que permite la ejecución de tareas o gestión de ficheros

multimedia. Contiene las tecnologías de gráficos, audio y vídeo orientadas a crear la mejor

experiencia posible.

TECNOLOGÍA DE GRÁFICOS

Las aplicaciones que requieren un nivel gráfico más detallado pueden utilizar las siguientes

tecnologías para gestionar el contenido visual:

Núcleo gráfico: Se encarga entre otras de la renderización de imágenes.

Núcleo de la animación: Proporciona soporte avanzado para animaciones y otros

contenidos.

OpenGL y GLKit: Suministra la renderización 2D y 3D.

Core Text: Motor de texto.

Page 67: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

63

E/S estándar de imagen: Interfaces para leer y escribir la mayoría de formatos de

imagen.

Biblioteca Assets: Proporciona acceso a las fotos y videos de la galería de usuario.

TECNOLOGÍA DE AUDIO

iOS ofrece diferentes alternativas para reproducir y grabar contenidos de audio

Media Player: Ofrece un fácil acceso a la biblioteca de iTunes del usuario y soporte

para reproducción de pistas.

Framework AV: Interfaz escrita en Objective-C para el manejo y reproducción de

contenido audio visual.

OpenAl: Interfaz escrita en Objective-C para reproducción de audio y grabación.

Audio Core: Suministra la capacidad para hacer vibrar el dispositivo, hacer sonar

sonidos del sistema, audio en streaming, etc.

TECNOLOGÍA DE VÍDEO

iOS permite la reproducción y captura de vídeo

UIImagePickerControler: Interfaz estándar para la grabación de vídeo.

Media Player: Conjunto de interfaces para la presentación de vídeo

Framework AV: Interfaz escrita en Objective-C para el manejo y reproducción de

contenido audio visual

TECNOLOGÍA AIRPLAY

Airplay nos permite la transferencia por streaming de audio, vídeo y fotos entre diferentes

dispositivos. El vídeo y las fotos únicamente se permiten entre dispositivos de Apple, mientras

que el sonido ha sido liberado para que pueda ser utilizado en componentes de terceros.

CAPA COCOA TOUCH

La capa Cocoa Touch contiene los frameworks necesarios para la construcción de aplicaciones

en iOS.

MULTITAREA

La multitarea en iOS permite pasar de una app a otra, o de una app al escritorio sin perder el

estado de la primera ya que pasaría a un segundo plano o “background”.

Hay un mito muy extendido entre los usuarios de iOS, que dice que para reducir el consumo de

batería y memoria, es recomendable matar las aplicaciones en segundo plano de manera

manual. Es falso.

Page 68: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

64

En realidad la multitarea en iOS no es igual que la conocemos de los entornos de escritorio,

sino que es una lista de aplicaciones recientemente lanzadas con diferentes estados:

No está siendo ejecutada. Se ha cerrado o no ha sido abierta.

Inactiva: La aplicación está en primer plano pero no recibe eventos (por ejemplo, la

pantalla ha sido bloqueada)

Activa: Estado normal de una aplicación ejecutándose.

Segundo plano: La app no está activa pero sigue ejecutándose.

Suspendida: La aplicación sigue residente en memoria pero no ejecutándose.

Cuando pulsas el botón Home para minimizar la aplicación, ésta pasa de estado activo a

segundo plano. La mayoría de las aplicaciones se mueven del segundo plano al estado de

suspendidas al cabo de 5 segundos (con el objetivo de guardar documentos, ajustes…).

Las aplicaciones suspendidas permiten volver a ellas con rapidez pero no están haciendo

consumo de batería ni de procesador porque no están siendo ejecutadas. Únicamente

consumen memoria.

iOS gestiona de manera muy eficiente la falta de memoria, en el momento que lo necesita,

pasa las aplicaciones que se ejecutaron más antiguamente o que más ocupan al estado “No

está siendo ejecutado” para liberar memoria.

SEGUNDO PLANO REAL

Como he comentado anteriormente, todas las tareas disponen de un plazo de 5 segundos para

pasar del estado “segundo plano” al estado “suspendida”, otras pueden solicitar al sistema

operativo una prórroga de 10 minutos y otras, pueden necesitar ejecutarse de manera

continua. Hay 5 tipos de aplicaciones que permiten esto:

Reproductores de Audio (iTunes, Música…)

Aplicaciones que gestionan la localización (TomTom sigue enviando indicaciones sobre

tu ubicación aunque esté en segundo plano)

Aplicaciones de llamadas de voz sobre IP. Están continuamente esperando una

llamada de manera que no es necesario que la aplicación esté en primer plano.

Descargadores de contenidos.

Aplicaciones que reciben información y notificaciones de un accesorio hardware

conectado.

IMPRESIÓN

iOS permite imprimir documentos de manera inalámbrica.

Page 69: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

65

NOTIFICACIONES PUSH DE APPLE

Este servicio permite la notificación a los servidores de aplicaciones acerca de algún tipo de

información nueva, de manera instantánea.

Utiliza la tecnología “push”, un tipo de comunicación en la que se crea una conexión IP

constante y es el servidor el que inicia la petición al cliente cuando tiene una información

nueva, permitiendo un importante ahorra de recursos respecto a la tecnología convencional

“pull”.

Además, no requiere la necesidad de que la propia aplicación esté en estado “activo”, con lo

cual aquí también obtendremos un significante ahorro de batería.

Un ejemplo clásico de tecnología push es el sistema de correo de Blackberry. En su día fue una

gran novedad el hecho de recibir los correos en los dispositivos móviles al instante de llegar al

servidor.

NOTIFICACIONES LOCALES

Estas notificaciones complementan a las notificaciones push, permitiendo a la aplicación

generar sus propias notificaciones sin la necesidad de estar conectado con un servidor externo.

Al igual que en las notificaciones push, la aplicación no tiene por qué estar ejecutándose sino

que es el propio sistema operativo el que se encarga de determinada tarea.

Page 70: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

66

ANEXO 2 – ARQUITECTURA DE ANDROID

La siguiente imagen muestra la arquitectura de Android. Está formado por cuatro capas, la más

baja sería el núcleo de Linux, por encima se hallaría el tiempo de ejecución de Android y las

librerías, posteriormente encontraríamos el framework de las aplicaciones y en el nivel más

alto, las aplicaciones.

Imagen 35

NÚCLEO LINUX

Android está basado en el kernel de Linux, muy similar al que se puede encontrar en cualquier

otra distribución de Linux de entornos de escritorio, pero adaptado a las limitaciones del

hardware en que se ejecuta, los dispositivos móviles.

El núcleo Linux como una capa de abstracción entre el hardware contenido en los dispositivos

móviles y las capas superiores de la arquitectura.

El desarrollador no accede directamente a esta capa, sino que utiliza las librerías disponibles

en las capas superiores. De esta forma se evita el hecho de tener que conocer las

características hardware del terminal.

Esta capa proporciona servicios como la seguridad, la gestión de la memoria, gestión de

procesos, pila de red, y el soporte para drivers y dispositivos.

Page 71: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

67

ANDROID RUNTIME (TIEMPO DE EJECUCIÓN)

Se sitúa en el mismo nivel que la capa de las librerías y es constituido por las core libraries con

la mayoría de librerías disponibles para el lenguaje Java y la máquina virtual Dalvik.

Dalvik es una máquina virtual intérprete que ejecuta archivos en el formato Dalvik Executable

(*.dex), un formato optimizado para el almacenamiento eficiente y ejecución mapeable en

memoria. Su objetivo fundamental es el mismo que cualquier máquina virtual, permite que el

código sea compilado a un bytecode independiente de la máquina en la que se va a ejecutar, y

la máquina virtual interpreta este bytecode a la hora de ejecutar el programa. Una de las

razones por las cuáles no se optó por utilizar la máquina virtual de Java es la necesidad de

optimizar al máximo los recursos y enfocar el funcionamiento de los programas hacia un

entorno dónde los recursos de memoria, procesador y almacenamiento son escasos.

Imagen 36

LIBRERÍAS

Esta capa se corresponde con las librerías utilizadas por Android. Todas ellas han sido escritas

en el lenguaje C/C++ y compiladas para la arquitectura hardware específica del teléfono.

Normalmente estas librerías están hechas por el fabricante, que también se encarga de

instalarlas en el dispositivo.

Entre las librerías más importantes encontramos:

Iibc: Librería de C propia que permite la ejecución de código nativo.

Media Framework: Suministra los códecs necesarios para reproducir el contenido

multimedia albergado en Android (vídeo, audio, imágenes, etc.)

SGL y OpenGL: Representan las librerías gráficas y proporcionan la capacidad gráfica

de Android. OpenGL maneja gráficos en 3D y, si el terminal dispone de él, el hardware

encargado de proporcionar gráficos en 3D. Por otro lado, SGL es el motor de gráficos

de 2 dimensiones.

FreeType: Permite trabajar de forma rápida y sencilla con distintos tipos de fuente.

SSL: Posibilita la utilización del protocolo SSL para establecer conexiones seguras.

SQLite: Permite la creación y gestión de bases de datos relacionales ligeras para las

aplicaciones

Page 72: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

68

WebKit: Se trata de la misma librería que utilizan Google Chrome y Safari. Proporciona

un motor para las aplicaciones de tipo navegador y es el núcleo del navegador que

viene por defecto en Android.

FRAMEWORK DE LAS APLICACIONES

Esta capa está formada por todas las clases y servicios que utilizan directamente las

aplicaciones de Android para realizar sus funciones. La mayoría de los componentes de este

nivel son librerías escritas en Java que acceden a recursos de capas inferiores a través de la

máquina virtual Dalvik.

Todas las aplicaciones que se desarrollan para Android, ya sean las propias del dispositivo, las

desarrolladas por Google o las que el usuario cree, todas utilizan el mismo Framework, el de

este nivel. Así se consigue una reutilización de componentes y que no haya cientos de ellos en

diferentes aplicaciones que responden a la misma acción.

En este nivel se encuentran:

Activity Manager: API que se encarga de administrar la pila de actividades de nuestra

aplicación y su ciclo de vida.

Windows Manger: Se encarga de organizar las ventanas que se mostrará en pantalla.

Content Provider: Librería que se encarga de encapsular los datos que se compartirán

entre aplicaciones.

Views: Los diferentes controles de la interfaz, desde sencillos como botones, cuadros

de texto, labels, etc. Hasta complejos como un navegador Web o un visor para Google

Maps dentro de nuestra aplicación.

Telephony Manager: Librería que nos permite realizar llamadas y enviar mensajes de

texto.

Location Manager: Permite a las aplicaciones la obtención de información acerca de la

localización.

Notification Manager: Diferentes servicios para realizar notificaciones al usuario.

Permite la utilización de sonidos, vibración y, si dispusiese el teléfono, de LED´s.

XMPP Service: API para utilizar este protocolo de intercambio de mensajes basado en

XML que utilizan programas como Whatsapp.

Page 73: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

69

APLICACIONES

Este nivel contiene todas las aplicaciones, tanto las que vienen por defecto con el teléfono,

como aquellas que van siendo añadidas por nosotros.

Normalmente todas las aplicaciones están escritas en Java, pero es posible (lo comentaré más

adelante) desarrollar aplicaciones utilizando los lenguajes C/C++ y Fortran (aplicaciones

nativas). Para utilizar esta opción necesitaremos el conjunto de herramientas NDK (Native

Development Kit).

En Android no existe la discriminación entre aplicaciones del mismo tipo ni preferencias por

una o por otra, podemos establecer como predeterminada la que nosotros escojamos. Por

poner un ejemplo, si nosotros no estamos conformes con la aplicación de SMS que viene por

defecto en el teléfono, siempre podremos descargar una del Market o bien crear una propia y

hacer que sea la predeterminada dentro de nuestro terminal.

Page 74: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

70

ANEXO 3 – CÓDIGOS DE VERSIÓN DEL FIRMWARE DE ANDROID

CÓDIGOS DE REGIÓN

BD Cyprus, Greece

CP Finland

DB Vietnam

DC Thailand

DD India

DT Australia

DX Indonesia, Malaysia, Philippines, Singapore, Vietnam

DZ Malaysia, Singapore

JA South Africa

JC Algeria, Morocco, Nigeria, South Africa, Tunisia

JP Arabic

JV Algeria, Egypt, Iran, Iraq, Kuwait, Morocco, Nigeria, Oman, Pakistan, Saudi Arabia, South

Africa, Syria, Tunisia, Turkey

MT Switzerland

XA Austria, France, Germany, Italy, Netherlands, Switzerland, United Kingdom

XB Denmark, Norway, Sweden

XC Portugal, Spain

XD Croatia, Czech, Hungary, Slovakia

XE Bulgaria, Estonia, Kazakhstan, Latvia, Lithuania, Russia, Ukraine

XF Bulgaria, Croatia, Romania

XW France, Germany, Italy, Netherlands, Portugal, Spain, Turkey, United Kingdom

XX Austria, Belgium, France, Germany, Hungary, Italy, Spain, United Kingdom

ZC China, Hong Kong

ZH Hong Kong

ZT Taiwan

Page 75: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

71

CÓDIGOS DE AÑO

H 2008

I 2009

J 2010

K 2011

L 2012

M 2013

N 2014

CÓDIGOS DE MES

A Enero

B Febrero

C Marzo

D Abril

E Mayo

F Junio

G Julio

H Agosto

I Septiembre

J Octubre

K Noviembre

L Diciembre

CÓDIGOS DE REVISIÓN

1 = 1

2 = 2

Page 76: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

72

3 = 3

...

A = 10

B = 11

C = 12

...

CÓDIGOS DE OPERADORA

En el ejemplo que hemos realizado anteriormente, hemos descargado un firmware con las

código de operador YOG, propio de Yoigo. cada operadora tiene sus siglas y sus

configuraciones. A continuación se enumeran los diferentes códigos de operador para la

región española:

ATL = Vodafone.

FOP = Instalación de firmware para un terminal libre.

XEC = Movistar.

AMN = orange.

YOG = Yoigo.

Page 77: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

73

BIBLIOGRAFÍA

ARM

Wikipedia – ARM

http://en.wikipedia.org/wiki/ARM_architecture

Xataka.com – ARM, la ‘navaja suiza’ de los procesadores

http://www.xataka.com/componentes-de-pc/arm-la-navaja-suiza-de-los-

procesadores-1

GamersMafia.com – x86 vs. ARM

http://hw.gamersmafia.com/columnas/show/1626

ANDROID

Wikipedia – Android

http://en.wikipedia.org/wiki/Android_(operating_system)

AndroidForos – Particiones de un sistema Android

http://www.androidforos.es/tutoriales/particiones-android-detalle-boot-data-system-

recovery-cache-misc-sdcard-ext-t1064.html

Androidpit – Bootloader

http://www.androidpit.es/es/android/foro/thread/440702/Que-es-un-bootloader

Ellinux – Android Architecture

http://elinux.org/Android_Architecture

Android.com – Android Developer

http://developer.android.com/about/index.html

Android.com – Android Developer

http://developer.android.com/about/index.html

Android.com – Android Developer

http://developer.android.com/about/index.html

Xda-developers.com – Android Kitchen

http://forum.xda-developers.com/showthread.php?t=633246

Page 78: Configuración optimizada dispositivos móviles para el ... · de diseño de procesadores que contiene un conjunto de instrucciones pequeñas y simples. Mientras que la arquitectura

74

IOS

Wikipedia – iOS

http://es.wikipedia.org/wiki/IOS_(sistema_operativo)

http://en.wikipedia.org/wiki/IOS

Wikipedia – Evasi0n

http://en.wikipedia.org/wiki/Evasi0n

iPadizate – Todo sobre el Jailbreak a iOS 6.1

http://www.ipadizate.es/2013/01/31/evasi0n-jailbreak-ios-6/

Wikipedia – iPhone

http://en.wikipedia.org/wiki/Iphone

Javox – What is Gevey SIM Hack

http://jaxov.com/2011/03/what-is-gevey-sim-hack-and-how-gevey-sim-interposer-

work-to-unlock-iphone-4/

mecambioamac – Formato de Audio, imagen y vídeo que reproduce el iPad

http://www.mecambioamac.com/formatos-de-audio-imagen-y-video-que-reproduce-

el-ipad/

TipsTecnología - ¿Cuál es la diferencia entre el Jailbreak, rooting y Unlocked?

http://www.tipstecnologia.com/2013/05/cual-es-la-diferencia-entre-el.html

Javox – What is Jailbreaking? Benefits, risks & Legality of Jailbreaking

http://jaxov.com/2011/03/what-is-gevey-sim-hack-and-how-gevey-sim-interposer-

work-to-unlock-iphone-4/

iApps.scenebeta.com – Cómo hacer una copia SHSH

http://iapps.scenebeta.com/tutorial/como-hacer-una-copia-del-shsh

Crónicas de un ElePHPante – Cocoa

http://www.fperezp.com/blog/2011/01/03/cocoa-por-donde-empezar/

Engadget.com – En EEUU será ilegal desbloquear teléfonos

http://es.engadget.com/2012/10/26/ilegal-liberar-desbloquear-jailbreak-eeuu-dmca/

OSXDaily – Tethered Jailbreak vs Untethered Jailbreak

http://osxdaily.com/2010/11/24/tethered-jailbreak-vs-untethered-jailbreak/

FAQ-MAC – Errores de concepto sobre la multitarea en iOS

http://www.faq-mac.com/tutoriales/errores-concepto-sobre-multitarea-ios/48952