mozilla

Revision 347255 of Portando a Boot to Gecko

  • Enlace amigable (slug) de la revisión: Mozilla/Firefox_OS/Portando
  • Título de la revisión: Portando a Boot to Gecko
  • Id de la revisión: 347255
  • Creada:
  • Creador: jvmjunior
  • ¿Es la revisión actual? No
  • Comentario

Contenido de la revisión

Boot to Gecko (FirefoxOS) utiliza un kernel derivado de Android, con una interfaz de usuario basada en Gecko sobre él. Este artículo provee la guía básica de cómo portar el sistema operativo en nuevos dispositivos.

Esta guía asume que tu estas portando en un dispositivo nuevo que está funcionando con Andriod; Si estás portando a otro dispositivo, el trabajo va a ser más enredado.

Configurando la compilación de tu sistema

El primer paso es configurar la compilación del sistema; puedes seguir la guía en prerequisitos para compilar B2G.

Clonar el repositorio B2G

El primer paso es clonar el repositorio de B2G.

git clone https://github.com/mozilla-b2g/B2G.git

Crear una copia de seguridad local del sistema original de Android

A continuación, deberás hacer una copia de seguridad de tu dispositivo Android antes de empezar a bombardearlo con tu compilación de pruebas de B2G. Además, algunos de estos comandos serán necesarios para el proceso de compilación e instalación.

mkdir my_device_backup
cd my_device_backup
adb pull /system system

Agrega un nuevo dispositivo al config.sh

El siguiente paso es agregar un nuevo dispositivo a config.sh; puedes usar uno de los existentes como plantilla. Esto básicamente consiste en proporcionar las instruciones para obtener los archivos correctos para hacer la compilación.

Crear el archivo de manifiesto para el nuevo dispositivo

Ahora necesitas agregar los repositorios requeridos para el archivo de manifiesto para el nuevo dispositivo; este archivo de manifiesto es llamado default.xml. Relacionarlo al archivo b2g-manifest en github para una plantilla. Cada dispositivo tiene su propia rama; puedes usar la rama del galaxy-s2 como una referencia.

Crear un árbol de configuración para el nuevo dispositivo

Crear un nuevo árbol de configuración para el nuevo dispositivo. Esto debería estar en device/<manufacturer>/<device_id>. Este árbol debería incluir, al menos:

  • AndroidBoard.mk
  • AndroidProducts.mk
  • BoardConfig.mk
  • extract-files.sh
  • full_<device_id>.mk
  • idc files for touchscreen
  • init files (init.rc, init.<target>.rc, uevent.rc, ...)

El contenido aqui puede variar en gran medida entre un dispositivo y otro. En particular, BoardConfig.mk y extract-files.sh podrian variar significativamente. Esta parte requiere un conjunto de hacking, pruebas, y depuración para averiguar que pedazos binarios deberán ser extraidos.

Nota: Si puedes encontrar una referencia existente en CyanogenMod para tu dispositivo, esta información te acelerará el proceso de portación. El Foro XDA  es otro buen lugar para debatir y ver recursos.

Recompilar boot.img

Una vez lo tengas todo hecho, necesitas recompilar la imágen de arranque. Esto no suele ser necesario para el propio Kernel, pero recoge los cambios en  init.rc.

Cambios a init.rc

El init.rc que utilizas no es el proporcionado por B2G; en su lugar, tienes que tirarlo desde el dispositivo

Las principales cosas que necesitarás modificar son:

Importar init.b2g.rc

Añade las siguientes líneas para importar init.b2g.rc:

on early-init
    start ueventd
    import /init.b2g.rc

Fijar permisos

Corrige los permisos en los archivos /system/b2g/b2g, /system/b2g/updater, /system/b2g/plugin-container; esto se deberá hacer después de las líneas que montan los archivos del sistema de lectura/escritura:

chmod 0755 /system/b2g/b2g
chmod 0755 /system/b2g/updater
chmod 0755 /system/b2g/plugin-container

Es posible que quieras iniciar modificando init.rc del nuevo dispositivo en vez de usar el init.rc proveido por la compilación del sistema; si es así, necesitas recordar configurar TARGET_PROVIDES_INIT_RC en BoardConfig.mk.

Kernel precompilado vs. compilando el kernel desde una fuente

Puedes usar un Kernel precompilado, o podrías compilar el Kernel desde una fuente. Para compilar el Kernel desde una fuente, añade AndroidKernel.mk  y la configuración del kernel al árbol de configuración del dispositivo.

El maguro en la vieja compilación del sistema es un ejemplo de compilación del kernel desde una fuente.

Añade el nuevo dispositivo a flash.sh

Añade el nuevo dispositivo a  flash.sh; las especificaciones de como hacer esto dependerán de que herramientas necesitas usar para flashear el nuevo dispositivo.

Configura, compila y  flashea el nuevo dispositivo

Ahora puedes probar compilando y flasheando tu nuevo dispositivo:

ANDROIDFS_DIR=my_device_backup ./config.sh <device_id> default.xml
./build.sh
./flash.sh

Probar y depurar

Necesitamos añadir algunos detalles aqui; de hecho, este artículo podría usar algo de ayuda.

FAQ

Próximo

Mira también

Fuente de la revisión

<p>Boot to Gecko (FirefoxOS) utiliza un kernel derivado de <a href="http://www.android.com/" title="http://www.android.com/">Android</a>, con una interfaz de usuario basada en <a href="https://developer.mozilla.org/es/docs/Gecko" title="/en-US/docs/Gecko">Gecko</a> sobre él. Este artículo provee la guía básica de cómo portar el sistema operativo en nuevos dispositivos.</p>
<p>Esta guía asume que tu estas portando en un dispositivo nuevo que está funcionando con Andriod; Si estás portando a otro dispositivo, el trabajo va a ser más enredado.</p>
<h2 id="Set_up_your_build_system">Configurando la compilación de tu sistema</h2>
<p>El primer paso es configurar la compilación del sistema; puedes seguir la guía en <a href="https://developer.mozilla.org/es/docs/Mozilla/Boot_to_Gecko/Firefox_OS_build_prerequisites" title="/en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites">prerequisitos para compilar B2G</a>.</p>
<h2 id="Clone_the_B2G_repository">Clonar el repositorio B2G</h2>
<p>El primer paso es clonar el repositorio de B2G.</p>
<pre>
git clone https://github.com/mozilla-b2g/B2G.git</pre>
<h2 id="Create_a_local_backup_of_the_original_Android_system">Crear una copia de seguridad local del sistema original de Android</h2>
<p>A continuación, deberás hacer una copia de seguridad de tu dispositivo Android antes de empezar a bombardearlo con tu compilación de pruebas de B2G. Además, algunos de estos comandos serán necesarios para el proceso de compilación e instalación.</p>
<pre>
mkdir my_device_backup
cd my_device_backup
adb pull /system system</pre>
<h2 id="Add_a_new_device_to_config.sh">Agrega un nuevo dispositivo al config.sh</h2>
<p>El siguiente paso es agregar un nuevo dispositivo a <a href="https://github.com/mozilla-b2g/B2G/blob/master/config.sh" title="https://github.com/mozilla-b2g/B2G/blob/master/config.sh"><code>config.sh</code></a>; puedes usar uno de los existentes como plantilla. Esto básicamente consiste en proporcionar las instruciones para obtener los archivos correctos para hacer la compilación.</p>
<h2 id="Create_the_manifest_file_for_the_new_device">Crear el archivo de manifiesto para el nuevo dispositivo</h2>
<p>Ahora necesitas agregar los repositorios requeridos para el archivo de manifiesto para el nuevo dispositivo; este archivo de manifiesto es llamado default.xml. Relacionarlo al archivo <a href="https://github.com/mozilla-b2g/b2g-manifest" title="https://github.com/mozilla-b2g/b2g-manifest"><code>b2g-manifest</code></a> en github para una plantilla. Cada dispositivo tiene su propia rama; puedes usar la rama del<code> </code><a href="https://github.com/mozilla-b2g/b2g-manifest/tree/galaxy-s2" title="https://github.com/mozilla-b2g/b2g-manifest/tree/galaxy-s2"><code>galaxy-s2</code></a> como una referencia.</p>
<h2 id="Create_a_configuration_tree_for_the_new_device">Crear un árbol de configuración para el nuevo dispositivo</h2>
<p>Crear un nuevo árbol de configuración para el nuevo dispositivo. Esto debería estar en <code>device/<em>&lt;manufacturer&gt;</em>/<em>&lt;device_id&gt;</em></code>. Este árbol debería incluir, al menos:</p>
<ul>
  <li><code>AndroidBoard.mk</code></li>
  <li><code>AndroidProducts.mk</code></li>
  <li><code>BoardConfig.mk</code></li>
  <li><code>extract-files.sh</code></li>
  <li><code>full_&lt;device_id&gt;.mk</code></li>
  <li>idc files for touchscreen</li>
  <li>init files (<code>init.rc</code>, <code>init.&lt;target&gt;.rc</code>, <code>uevent.rc</code>, ...)</li>
</ul>
<p>El contenido aqui puede variar en gran medida entre un dispositivo y otro. En particular, BoardConfig.mk y extract-files.sh podrian variar significativamente. Esta parte requiere un conjunto de hacking, pruebas, y depuración para averiguar que pedazos binarios deberán ser extraidos.</p>
<div class="note">
  <p><strong>Nota:</strong> Si puedes encontrar una referencia existente en<a href="http://www.cyanogenmod.com/" title="http://www.cyanogenmod.com/"> CyanogenMod</a> para tu dispositivo, esta información te acelerará el proceso de portación. El <a href="http://forum.xda-developers.com/" title="http://forum.xda-developers.com/">Foro XDA&nbsp;</a> es otro buen lugar para debatir y ver recursos.</p>
</div>
<h2 id="Rebuilt_boot.img">Recompilar boot.img</h2>
<p>Una vez lo tengas todo hecho, necesitas recompilar la imágen de arranque. Esto no suele ser necesario para el propio Kernel, pero recoge los cambios en&nbsp; <code>init.rc</code>.</p>
<h3 id="Changes_to_init.rc">Cambios a init.rc</h3>
<p>El init.rc que utilizas <strong>no</strong> es el proporcionado por B2G; en su lugar, tienes que tirarlo desde el dispositivo</p>
<p>Las principales cosas que necesitarás modificar son:</p>
<h4 id="Import_init.b2g.rc">Importar init.b2g.rc</h4>
<p>Añade las siguientes líneas para importar <code>init.b2g.rc</code>:</p>
<pre>
on early-init
    start ueventd
    import /init.b2g.rc</pre>
<h4 id="Fix_permissions">Fijar permisos</h4>
<p>Corrige los permisos en los archivos <code>/system/b2g/b2g</code>, <code>/system/b2g/updater</code>, <code>/system/b2g/plugin-container</code>; esto se deberá hacer después de las líneas que montan los archivos del sistema de lectura/escritura:</p>
<pre>
chmod 0755 /system/b2g/b2g
chmod 0755 /system/b2g/updater
chmod 0755 /system/b2g/plugin-container</pre>
<p>Es posible que quieras iniciar modificando <code>init.rc</code> del nuevo dispositivo en vez de usar el <code>init.rc</code> proveido por la compilación del sistema; si es así, necesitas recordar configurar <code>TARGET_PROVIDES_INIT_RC</code> en <code>BoardConfig.mk</code>.</p>
<h3 id="Prebuilt_kernel_vs._building_the_kernel_from_source">Kernel precompilado vs. compilando el kernel desde una fuente</h3>
<p>Puedes usar un Kernel precompilado, o podrías compilar el Kernel desde una fuente. Para compilar el Kernel desde una fuente, añade AndroidKernel.mk&nbsp; y la configuración del kernel al árbol de configuración del dispositivo.</p>
<p>El <a href="https://github.com/andreasgal/B2G/tree/master/glue/gonk/device/toro/maguro" title="https://github.com/andreasgal/B2G/tree/master/glue/gonk/device/toro/maguro">maguro</a> en la vieja compilación del sistema es un ejemplo de compilación del kernel desde una fuente.</p>
<h2 id="Add_the_new_device_to_flash.sh">Añade el nuevo dispositivo a flash.sh</h2>
<p>Añade el nuevo dispositivo a&nbsp; <code>flash.sh</code>; las especificaciones de como hacer esto dependerán de que herramientas necesitas usar para flashear el nuevo dispositivo.</p>
<h2 id="Configure.2C_build.2C_and_flash_the_new_device">Configura, compila y&nbsp; flashea el nuevo dispositivo</h2>
<p>Ahora puedes probar compilando y flasheando tu nuevo dispositivo:</p>
<pre>
ANDROIDFS_DIR=my_device_backup ./config.sh &lt;device_id&gt; default.xml
./build.sh
./flash.sh</pre>
<h2 id="Test_and_debug">Probar y depurar</h2>
<p>Necesitamos añadir algunos detalles aqui; de hecho, este artículo podría usar algo de ayuda.</p>
<h2 id="FAQ">FAQ</h2>
<p>Próximo</p>
<h2 id="See_also">Mira también</h2>
<ul>
  <li><a href="https://developer.mozilla.org/es/docs/Mozilla/Firefox_OS" title="/en-US/docs/Mozilla/Boot_to_Gecko">Boot to Gecko</a></li>
  <li><a href="https://github.com/mozilla-b2g/B2G" title="https://github.com/mozilla-b2g/B2G">B2G source code on Github</a></li>
  <li><a href="http://www.android.com/" title="http://www.android.com/">Android web site</a></li>
</ul>
Revertir a esta revisión