Android: cómo portar la partición boot (boot.img)

Como parte de una serie de tutoriales para cocinar ROMs en Android, el día de hoy comenzaremos un algo sencillo: portar el archivo boot.img que viene en todas las roms flasheables. Se trata de algo realmente sencillo, y esencial a la vez, ya que, si no se porta, nuestra ROM tendrá un bonito bootloop; no iniciaría.

Necesario

1. Boot stock y boot a portar
2. Una computadora

[mensaje]No confundir con el bootanimation, que se encuentra en system, no en boot.[/mensaje]
Lo primero que haremos será descargar la utilidad carliv image kitchen desde xda, como siempre, los archivos están al final del hilo (en xda, no aquí); recomiendo descargar la versión más nueva (actualmente, la 1.1)
carliv-descargar

En mi caso, he bajado la versión 1.0 (que no es la más nueva) para Linux, aunque también hay una para Windows, es algo que no importa, el procedimiento será el mismo.

Una vez que tengamos la utilidad, la extraeremos en algún lugar (el escritorio, por ejemplo)…una vez hecho eso, nos encontraremos con lo siguiente:
carliv-folder
la carpeta boot-resources será el lugar donde pondremos los archivos boot a modificar, la carpeta output (salida) será el lugar donde estará nuestro boot modificado (portado) al final, y el archivo carliv es el script que usaremos para empaquetar/desempaquetar el archivo boot.img tanto stock como el que portaremos.

Dicho eso, copiaremos el archivo boot.img de nuestra ROM stock y el boot.img de la ROM a portar…para no confundirlos, habrá que renombrarlos a boot-stock.img y boot-port.img. Una vez copiados, ejecutaremos el archivo carliv dando doble clic sobre el.
carliv-script
Ahora, seleccionaremos la opción b, es decir, boot.
carliv-boot
Seguido de eso, seleccionaremos el boot stock.
boot-extraer-carliv
Y finalmente, seleccionamos unpack (o unpack mtk, en caso de ser mediatek)

El mismo procedimiento para extraer el boot a portar, pueden abrir nuevamente el script carliv o pueden elegir E y después el boot-port.
Ahora, podremos ver 2 nuevas carpetas «boot-stock» y «boot-port«…abrimos ambas, pueden abrir otra ventana (u otra pestaña si usan Linux)
boot-portar

Aquí es donde empieza la magia, copiaremos los archivos boot.img-kernel y boot.img-kernel_offset de la carpeta boot-stock a la carpeta boot-port… Seguido de eso, abriremos la carpeta ramdisk en ambas carpetas (boot-stock y boot-port) y copiaremos el archivo ueventd.rc de la carpeta boot-stock a la carpeta port.
[mensaje]Nota: no siempre es necesario remplazar el ueventd.rc, prueben portar el boot sin remplazar ese archivo, y si la ROM no funciona, entonces lo remplazan.[/mensaje]

Ahora regresamos nuevamente al script de carliv, seleccionamos boot, luego el archivo boot-port (sólo ese) y luego a la inversa: en lugar de elegir unpack, elegimos repack.
boot-port-repack
Y listo! ahora, en la carpeta output tendremos un nuevo archivo, el boot.img portado y listo para ser usado.
boot-port-resultado

Finalmente, sólo queda renombrarlo a boot.img y ponerlo en la ROM que portaremos.