mozilla

Visão Geral da compilação do Firefox OS

A compilação e instalação do Firefox OS exige muito tempo, banda de internet e poder computacional. Infelizmente, ao longo do caminho, coisas podem dar errado. Essa página descreve os objetivos do processo de compilação e o passo-a-passo do processo a fim de ajudar os usuários. Detalhes de cada etapa são detalhadas ao clicar nos links ao longo do texto.

Nota: O processo de compilação do Firefox OS possui diversas referências a 'B2G' ou 'Boot2Gecko'. 'Boot2Gecko' era o nome original do projeto Firefox OS.

O objetivo da compilação: quatro arquivos de imagem ('image files')

O objetivo principal do processo de compilação são os quatro arquivos que serão copiados num dispositivo Firefox OS.

boot.img

O kernel Linux e uma imagem de sistema de arquivos raiz. Esse último oferecendo um conjunto de ferramentas básicas do Unix.

system.img

A parte central do Firefox OS, incluindo partes do Gonk,

O core do Firefox OS incluindo partes do Gonk, a conexão com o Gecko e o executável b2g.

userdata.img

O perfil Gecko do usuário e as aplicações web do Gaia para o dispositivo.

recovery.img

Um kernel Linux e uma imagem de sistema de arquivos raiz com uma ferramenta simples que possibilite aos usuários recuperar o sistema após uma instalação com erros.

Uma vez que essas quatro imagens tenham sido criadas, elas podem ser transferidas ao dispositivo.

O Firefox OS é compilado sobre o AOSP (Android Open Source Project). As ferramentas AOSP adb e fastboot são formas poderosas de acessar e manipular o dispositivo. O comando adb reboot-bootloader pode reiniciar um dispositivo conectado, permitindo ao usuário interromper o processo na fase inicial do processo onde o comando fastboot flash $partition $image pode ser usado para copiar uma imagem para o dispositivo.

A imagem de inicialização

A imagem de inicialização (boot.img) é uma combinação do kernel Linux e uma partição inicial que provê softwares utilitários e scripts de inicialização. Esses scripts são copiados na memória do dispositivo para um uso mais eficiente, e são chamados de "ramdisk". O arquivo boot.img será copiado na partição 'boot' do dispositivo e o conteúdo da ramdisk será acessível a partir diretório raiz em tempo de execuçã, bem como usando adb shell.

A imagem de inicialização também estabelece as permissões do usuário root no arquivo default.prop localizado no diretório raiz.

Também é possível modificar as imagens de inicialização existentes verificando o arquivo,  dividindo o arquivo entre o kernel e a imagem da ramdisk, modificando seu conteúdo, remontando a imagem da ramdisk e finalmente recompilando o arquivo boot.img. Veja, por exemplo a página Alcatel One Touch Fire Hacking (Mini) Guide.

Imagens de inicialização podem ser testadas antes de serem definitivamente instaladas. O dispositivo pode ser inicializado e ser interrompido durante a carga. Para inicializar o dispositivo com a Imagem a ser testada sem instalá-la utilize o comando fastboot boot /some/path/to/boot.img.

A imagem do Sistema

A imagem do sistema (system.img) possui o núcleo principal do Firefox OS:

  • Gonk: componentes de baixo nível do sistema operacional
  • Gecko: adaptação dos motores de layout HTML e JavaScript do Firefox
  • B2G: o núcelo dos processos de runtime do sistema operacional

Veja o guia a plataforma Firefox OS para mais informações sobre a arquitetura do Firefox OS.

A imagem do sistema será copiada para a partição system do dispositivo e acessadas no diretório /system/ quando o sistema de arquivos é acessado em tempo de execução.

Nota: A imagem do sistema também fornece blobs (Binary Large OBject) que pode ser usado pelo dispositivo, como por exemplo o blob RIL (Radio Interface Layer) que controla o rádio do dispositivo.

A Imagem de Dados do Usuário

A imagem de dados do usuário (userdata.img) fornece as aplicações Gaia carregadas em tempo de execução.

A imagem de dados do usuário será copiada para a partição userdata no dispositivo e seu conteúdo pode ser acessado no diretório /data/ quando o sistema de arquivos do dispositivo é acessado em tempo de execução. O diretório /data/b2g/ contem o perfil Mozila Gecko do usuário do dispositivo enquanto que o diretório /data/local/webapps/ contém os arquivos executáveis das aplicações web disponíveis para o usuário.

The User Data Image will be copied to the userdata partition on the device and the contents will be visible in the /data/ directory when the device filesystem is accessed at runtime. Notably the /data/b2g/ directory contains the Mozilla Gecko profile of the device user while the /data/local/webapps/ directory contains the actual web applications available to the user.

A imagem de recuperação

A imagem de recuperacão (recovery.img) contém o mesmo kernel e um ramdisk similar ao existente na partição da Imagem de inicializção (Boot Image). Porém, a imagem de recuperação utiliza um script de inicialização diferente, que apresenta ao usuário um conjunto de comandos de recuperação acessíveis pelos botões externos do dispositivo.

A imagem de recuperação é copiada na partição recovery do dispositivo, que por sua vez não é montada no sistema de arquivos durante sua execução normal.

O processo de compilação: preparacão, configuração, compilação e instalação

O processo completo de compilação e instalação do Firefox OS é composto de quatro passos:

Preparação Obter todos os programas a serem utilizados no processo de compilação, bem como seus compiladores e bibliotecas.
Configuração Baixar o código fonte que será compilado e criar o arquivo .configure que define as variáveis de ambiente como os caminhos e outros valores a serem utilizados na compilação.
Compilação Compilar o perfil do usuário do Gecko e as aplicações web do Gaia para o dispositivo.
Instalação Instalar os arquivos no dispositivo.

 

Preparação

A preparação inicial deve ser realizada para garantir que o computador a ser utilizado no processo de compilação tenha todo o software necessário como o compilador e as demais ferramentas de compilação.

Essa etapa pode ser feita manualmente ou utilizando um script. Maiores detalhes na página Pré requisitos para compilar o Firefox OS.

Nota: Em máquinas UNIX e UNIX-like, para checar a existência do software pode ser utilizado o comando which com o nome do programa como parâmetro.

Configuração

Na realidade, o processo de compilação inicia-se com a obtenção de uma cópia do software Firefox OS (ou B2G), usualmente com a criação de um clone com a ferramenta Git a partir do projeto B2G. A configuração da compilação compreende tanto baixar as cópias de todo o código fonte que será compilado como criar o arquivo de configuração .config, que especifica as variáveis ​de ambiente a serem utilizadas no processo de compilação.

A configuração é executada com o script config.sh. A página Preparando sua primeira compilação do B2G possuí detalhes desse proceso.

O script de configuracão necessita de um parâmetro que especifica o tipo de dispositivo para o qual o B2G será compilado. A codificação desse parâmetro é vinculada à arquitetura da CPU utilizada e não ao nome específico do dispositivo. Atualmente não há como estabelecer qual compilação funciona para cada dispositivo. Uma lista de códigos disponíveis pode se encontrada nessa página.

A etapa de configuração também utiliza a ferramenta repo do AOSP (Androis Open Source Project) para baixar (ou atualizar) a cópia de todo o código utilizado na compilação. Essas cópias são armazenadas no diretório .repo/projects. Devido a essa atividade a etapa de configuração consome muito tempo e muitos dados são trafegados para baixar todo o código necessário.

Compilação

A etapa da compilação é a qual todo o código fonte realmente é compilado e os arquivos imagens são gerados.

Deve ser executado o script build.sh. Detalhes são discutidos na página Compilando o Firefox OS.

Como padrão, a etapa de compilação é monolítica, ou seja, tudo é compilada de uma só vez a partir das ferramentas AOSP gerando o kernel do Linux e as aplicações web do Gaia. No caso de ocorrência de erros na compilação, pode não ficar claro em qual etapa ocorreu o erro.

Na compilação do Firefox é possível compilar somente algumas partes do conjunto completo que compõe o Firefox OS. Por exemplo, o sistema Gecko somente pode ser compilado através do script com o parâmetro gecko. Da mesma forma, o Gaia é compilado com o parâmetro gaia. Essas partes podem ser instaladas separadamente no dispositivo como será explicado a seguir.

Também é possivel construir as imagens apresentadas no início desse artigo. Por exemplo, a imagem de sistema pode ser compilada através do comando ./build.sh out/platform/$target/system.img, no qual o parâmetro $target é o mesmo que o apresentado na etapa de configuração.

Instalação

A etapa de instalação consiste em colocar o novo código compilado no dispositivo. É executada pelo script flash.sh.

A instalação pode ser realizada por etapas através de parâmetro no script flash.sh. Por exemplo, é possível instalar somente as aplicações web do Gaia com o comando ./flash.sh gaia.

Etiquetas do documento e colaboradores

Contributors to this page: rbrandao, gutierri
Última atualização por: gutierri,
Esconder painel