¿Cómo modificar el kernel de Linux de 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 p>
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.