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

Anuncio
TRABAJO FIN DE GRADO
Título
Configuración optimizada dispositivos móviles para el
cálculo científico
Autor/es
Félix Lanas Mangado
Director/es
Eloy Javier Mata Sotés
Facultad
Facultad de Ciencias, Estudios Agroalimentarios e Informática
Titulación
Grado en Ingeniería Informática
Departamento
Curso Académico
2012-2013
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 Universidad
de 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.
©
©
El autor
Universidad de La Rioja, Servicio de Publicaciones, 2013
publicaciones.unirioja.es
E-mail: [email protected]
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
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.
1
2
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 stepby-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.
3
4
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
5
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
6
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
7
8
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.
9
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.
10
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.
11
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-GPUCluster-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.
12
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).
13
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
14
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.
15
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:
16
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.
17

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.
18
¿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.
19
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).
20
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.
21
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
22
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.
23
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.
24
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”
25
(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
26
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.
27
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
28
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
29
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.
30
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.
31
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
32
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:
33
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.
34
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
35
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.
36
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.
37
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.
38
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.
39
40
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:
41

/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.
42
/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.
43
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)
44
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
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.
repositorio
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=GTI9000&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:
45
$ ./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:
46
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
47
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.
48
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.
49
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).
50



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
51
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
52

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.
53
54
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.
55
56
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.
57
58
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
59
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.
60

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
61
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.
62


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.
63
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.
64
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.
65
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.
66
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
67

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.
68
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.
69
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
70
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
71
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.
72
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-losprocesadores-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-systemrecovery-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
73
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-interposerwork-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-reproduceel-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-interposerwork-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
74
Descargar