Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo modificar el kernel de Linux de Android?

¿Cómo modificar el kernel de Linux de Android?

En los productos Android, el formato del kernel es el zImage estándar de Linux y el sistema de archivos raíz usa el formato ramdisk. Los dos se fusionan directamente en Android, se denominan boot.img y se colocarán en una partición independiente. Este formato de partición fue desarrollado por el propio Android.

Al desarrollar Android, la forma más estándar es volver a compilar en el kernel y el sistema de archivos raíz, y luego llamar al archivo de línea de comando mkboot img (out/host/Linux-x86/bin/) proporcionado por Android. para embalaje.

Al crear ROM para teléfonos móviles, a veces compilo el kernel por separado o extraigo el archivo raíz para modificar el contenido. Por ejemplo, sólo compilo el kernel y dejo el resto sin cambios. Reinstalar un enorme entorno de desarrollo de Android no es rentable. Por lo tanto, se han desarrollado muchas herramientas para descomprimir boot.img. Estas herramientas extraen el kernel y el sistema de archivos raíz de un boot.img ya preparado, lo reparan y lo empaquetan nuevamente para su restauración.

1. Herramientas de unboxing de uso común

Debido a que el formato de boot.img es relativamente simple, se divide principalmente en tres partes (algunas pueden tener cuatro).

Mucha gente desarrolla herramientas de análisis, incluidos scripts de shell de Linux, como repack-zImage, perl y unbootimg escritos en lenguaje C.

Estoy usando mkbootimg en la ubicación de origen system/core/mkbootimg/. Para simplificar, Blue Point Factory extrajo las herramientas de empaquetado y desempaquetado de las bibliotecas mkbootimg y libmincrpty y reescribió un Makefile como un proyecto de código abierto.

Los usuarios solo necesitan ejecutar make en la línea de comando de Linux (gcc, make suele ser estándar) o Windows (se requiere mingw) para generar archivos ejecutables mkbootimg y unpackbootimg.

Dos. Uso de herramientas de desembalaje/empaquetado

Herramienta de desembalaje: unpackbootimg

Formato común

unpackbootimg -i, \tmp\boot.img -o, \out

Esta línea de comando significa descomprimir boot.img y enviar todos los archivos al directorio de salida.

Extraerá los siguientes archivos:

Boot.img-zImage (archivo del kernel)

Boot.img-ramdisk.gz (archivo del paquete del sistema de archivos raíz )

boot . img-cmdline (parámetro mkboot img cmdline)

boot .img-pagesize (parámetro mkboot img pagesize)

Boot.img-base ( parámetro base mkbootimg)

Herramienta de empaquetado: mkboot img (incluido en Android)

Formato de comando común:

. /mkbootimg-cmdline 'no _ console _ suspend = 1 console = null '-kernel zi mage-ramdisk boot/boot . img-ramdisk boot . El archivo del kernel zImage y el paquete comprimido del archivo raíz boot.img-ramdisk.gz están empaquetados en boot.img.

Los valores de cmdline y base se derivan de los resultados de unpackbootimg.