Resumen del proceso de compilación de Firefox OS

Este articulo necesita una revisión técnica. Cómo puedes ayudar.

Este articulo necesita una revisión editorial. Cómo puedes ayudar.

Compilar e Instalar Firefox OS requiere una significante cantidad de tiempo, ancho de banda de red, y poder computacional. Desafortunadamente, a lo largo del camino, las cosas son susceptibles de salir mal. Esta página describe los objetivos del proceso de compilación y  los pasos de este proceso con el fin de ayudar a los usuarios a lo largo del camino. Los detalles de cada paso son mostrados en los enlaces de su respectiva página.

Nota: El proceso de compilación de Firefox OS está lleno de referencias a 'B2G' o 'Boot2Gecko'. 'Boot2Gecko' fué el nombre clave original del proyecto Firefox OS.

El objetivo de la compilación: cuatro archivos 'image'

El objetivo general del proceso de compilación es la compilacióno de cuatro archivos que puedan ser copiados a un dispositivo Firefox OS.

boot.img El Kernel Linux y un root filesystem image, este último provee un útil conjunto de herramientas básicas de Unix.
system.img El núcleo de Firefox OS incluye partes de Gonk, el puerto de Gecko, y el ejecutable b2g.
userdata.img El perfil Gecko del usuario y la aplicación web Gaia para el dispositivo.
recovery.img Un kernel Linux y una imagen del sistema de ficheros raíz, junto con una herramienta sencilla para que los usuarios puedan arreglar una mala instalación.

Una vez que se han creado las cuatro imágenes, estas pueden ser transferidas al dispositivo.

Firefox OS está compilado sobre la base de Android Open Source Project (AOSP). Las herramientas AOSP, adb y fastboot, proveen una potente vía para acceder y manipular un dispositivo. Notablemente, el comando adb reboot-bootloader puede ocasionar que un dispositivo conectado se reinicie (reboot) y se detenga en la fase inicial del  bootloader donde el comando fastboot flash $partition $image puede ser usado para copiar una imágen al dispositivo.

La imagen de arranque

La imagen de arranque (boot.img) es una combinación del Kernel Linux y una partición inicial del root proveyendo el software núcleo de utilidad y el script de inicialización. Este último será copiado en la memoria del dispositivo para uso eficiente por el dispositivo y por consiguiente es llamado "ramdisk". La imagen de arranque será copiada en la partición 'boot' en el dispositivo y el contenido del  ramdisk es visible iniciando en el directorio raíz (root) cuando el  filesystem del dispositivo es accedido en tiempo de ejecución (runtime), tal como cuando se usa adb shell.

La imágen de arranque también establece los permisos de los usuarios root en el archivo default.prop  en el directorio raíz.

También es posible modificar una imágen de arranque existente mediante la inspección de archivo, dividiendo el archivo en el Kernel y ramdisk image, extrayendo los contenidos de la imagen ramdisk, modificando esos contenidos, reensamblando la imagen ramdisk, entonces recompilando una boot.img funcional. Ver, por ejemplo, la página de Alcatel One Touch Fire Hacking (Mini) Guide.

La imagen de arranque puede ser probada antes de ser instalada por  'sideloading'; el dispositivo puede ser inicializado y pausado en el  bootloader y luego un  fastboot puede ser usado para arrancar desde la imagen de arranque sin instalarla usando el comando fastboot boot /some/path/to/boot.img.

La imagen del sistema

La imagen del sistema (system.img) provee el núcleo de  Firefox OS:

  • Gonk: El componente de bajo nivel del sistema operativo.
  • Gecko: El punto para desplegar en Firefox el motor HTML y JavaScript.
  • B2G: El núcleo de los procesos en tiempo de ejecución del sistema operativo.

Vea la guía la pataforma Firefox OS para más información acerca de la arquitectura de la plataforma.

La imagen del sistema será copiada a la partición system  en el dispositivo y será visible en el directorio /system/ cuando el  filesystem del dispositivo sea accedido en tiempo de ejecución.

Nota: La Imagen del Sistema también provee las manchas binarias (blobs) que pueden ser usadas por el dispositivo, notablemente el RIL (Radio Interface Layer) controla la radio celular en el dispositivo.

La imagen de los datos de usuario

La imagen de los datos de usuario (userdata.img) provee las aplicaciones Gaia cargadas en tiempo de ejecución.

La imagen de los datos de usuario será copiada a la partición userdata en el dispositivo y los contenidos serán visibles en el directorio /data/ cuando el filesystem del dispositivo sea accedido en tiempo de ejecución. Notablemente el directorio /data/b2g/  contiene el   profile  de Mozilla Gecko del dispositivo del usuario mientras el directorio /data/local/webapps/ contiene la aplicación web actual disponible para el usuario.

La imagen de recuperación

La imagen de recuperación (recovery.img) contiene lo mismo que el Kernel y un similar ramdisk que están presentes en la partición de la imagen de arranque. La imagen de recuperación sin embargo utiliza un script de inicialización diferente, lo que lleva al usuario a un conjunto de recuperación de comandos de acceso utilizando los botones de hardware en el dispositivo.

La Imagen de recuperación será copiada a la partición recovery en el dispositivo,  que no es montada en el filesystem en tiempo de ejecución normal.

El proceso de compilación:  ajustar, configurar,  compilar, instalar

El proceso general de construcción e instalación de Firefox OS consta de cuatro pasos:

Ajustar Obtener copias de todos los programas usados por el proceso de construcción, tales como los compiladores y librerías.
Configurar Descargar el código fuente que será utilizado en la creación y construcción del archivo .configure que define las variables del entorno especificando las direcciones y otros valores utilizados en la construcción.
Compilar Compilar el perfil Gecko del usuario y la aplicación web Gaia para el dispositivo.
Instalar Instalar los archivos en el dispositivo.

 

Ajustar

El ajuste inicial debe ser hecho para asegurar el equipo que corre la compilación tenga todos el software requerido durante la compilación, tal como compiladores y herramientas de construcción.

Esta paso puede ser hecho a mano o usando un script. Los detalles los podemos ver en la página Prerrequisitos para compilar Firefox OS.

Nota: En UNIX y máquinas UNIX, la presencia de los software requeridos pueden ser comprobados usando el comando unix which con el nombre del programa requerido como parámetro.

Configuración

El actual proceso de compilación inicia obteniendo una copia del software Firefox OS (o B2G), por lo general mediante la creación de un clon Git del proyecto B2G. La configuración de compilación obtendrá copias de todo el código fuente que es compilado y crea el archivo .config que especifica las variables para la compilación.

Esto se ejecuta con el script config.sh. Más detalles podemos encontrar en la página Preparandote para tu primer binario B2G .

Es script necesario de configuración y parámetros especificando el tipo de dispositivo a compilar. Los nombre de compilación son códigos nombre enlazados a la arquitectura del CPU en lugar de un dispositivo específico, y actualmente no hay manera de establecer qué compilación trabaja para qué dispositivo físico. Una lista de códigos nombres  disponibles puede encontrarse aquí.

El paso de configuración también utilizará la herramienta Android Open Source Project repo para descargar (o actualizar) una copia de todo el código utilizado en la compilación. Estas copias serán almacenadas en el directorio .repo/projects. Debido a esta actividad, el paso de configuración puede tardar bastante tiempo y descargará una gran cantidad de datos.

Compilar

El paso de compilación lo qe hace es compilar todo el código fuente y produce como resultado las imagenes.

Esto se ejecuta con el script  build.sh. Para más detalles podemos encontrar en la página Compilando Firefox OS .

Por defecto, el paso de compilación es monolítico, intentando compilar todo a la vez desde las herramientas Android Open Source Project para el  kernel Linux a la aplicación web Gaia. Cuando la compilación falla,  puede a veces no ser claro en que paso ha fallado.

Es posible compilar solo ciertas partes de toda la pila Firefox. Por ejemplo, el sistema Gecko solo puede ser compilado mediante una llamada al script de compilación con el parámetro gecko. De igual manera, Gaia puede ser compilado de forma independiente utilizando el parámetro gaia. Estas partes pueden ser instaladas de forma separada en el dispositivo como se explica a mas adelante.

También se pueden compilar las imágenes mostradas en la primera parte de esta página. Por ejemplo, el sistema de imagen puede ser compilado utilizando./build.sh out/platform/$target/system.img, donde el parámetro $target es el mismo que el dado en el paso de configuración.

Instalar

El paso de instalación colocará nuevamente el código compilado en el dispositivo. Esto es ejecutado con el script flash.sh .

Partes individuales de la compilación pueden ser instaladas agregando un parámetro al script flash. Por ejemplo, es posible instalar sólo la aplicación web gaia especificando ./flash.sh gaia.

Etiquetas y colaboradores del documento

 Colaboradores en esta página: chrisdavidmills, StripTM, jvmjunior, Angel104
 Última actualización por: chrisdavidmills,