Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo modificar el kernel de arranque de Android Cómo solucionarlo

Cómo modificar el kernel de arranque de Android Cómo solucionarlo

El formato del kernel de los productos Android es zImage estándar de Linux y el sistema de archivos raíz utiliza el formato ramdisk. En el sistema Android, los dos se fusionan directamente y se denominan boot.img, que se colocará en una partición separada. El formato de partición es el formato propio de Android.

El método de desarrollo de Android más estándar es recompilar el kernel y el sistema de archivos raíz, y luego llamar al archivo de línea de comando mkbootimg (out/host/linux-x86/bin/) proporcionado por Android para empaquetarlo.

Al crear ROM para teléfonos móviles, a veces compilo el kernel por separado o invoco el archivo raíz para modificar el contenido. Por ejemplo, solo compilo el kernel y dejo el resto sin cambios. No es rentable reinstalar el enorme entorno de desarrollo de Android. Como resultado, han surgido muchas herramientas de descompresión de boot.img, algunas de las cuales pueden extraer el kernel y el sistema de archivos raíz de un boot.img ya preparado, reparar el cabello y luego descomprimirlo y restaurarlo nuevamente.

I. Herramientas de descompresión comunes

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

Tanta gente ha desarrollado herramientas de análisis, incluidos scripts de shell de Linux como repack-zImage, ¿algunas personas usan perl y unbootimg escrito en C?

La ubicación del código fuente del mkbootimg que uso es system/ núcleo/mkbootimg/. Para simplificar, Bluepoint Studio usó mkbootimg para extraer e incluir la biblioteca libmincrpty en las herramientas de empaquetado y desempaquetado, y reescribió un Makefile como un proyecto de código abierto.

Los usuarios solo necesitan ejecutar make bajo la línea de comando de Linux (es necesario instalar gcc y make, generalmente estándar) o Windows (es necesario instalar mingw) para generar los archivos ejecutables mkbootimg y unpackbootimg. Herramienta de desembalaje/empaquetado utilizada

Herramienta de desembalaje: unpackbootimg

¿Formato común?

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

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

Descomprimirá los siguientes archivos:

boot.img-zImage (archivo del kernel)

boot.img-ramdisk.gz (archivo de empaquetado del sistema de archivos raíz)?

boot.img-cmdline (parámetro mkbootimg cmdline)?

boot.img-pagesize (parámetro de tamaño de página mkbootimg)?

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

Herramienta de empaquetado: mkbootimg (Android viene con ella)

Formato de comando común:?

./mkbootimg?--cmdline 'no_console_suspend=1 console=null'?

Esta oración significa agregar el archivo del kernel zImage y el archivo raíz ramdisk en el directorio de inicio boot.img --base 02e00000 .gz comprimido en boot.img.

¿Los valores de cmdline y base provienen de los resultados de unpackbootimg?