Red de conocimiento informático - Conocimiento sistemático - ¿Cómo utilizar el código fuente del sistema sin el kernel de Android?

¿Cómo utilizar el código fuente del sistema sin el kernel de Android?

1. Obtenga el código fuente

Ejecute el siguiente comando en cd ~/myandroid/kernel.

git clone git://Android.git.kernel.org/kernel/common.git

Esto llevará mucho tiempo ya que copiará todo el código del kernel de Linux.

Luego ingrese al directorio común y luego use el siguiente comando para obtener la rama Goldfish:

git check out origin/Android-Goldfish-2.6.27 -bGoldfish

De esta manera, hemos establecido una rama local de Android-goldgish-2.6.27 y el código se ha sincronizado con android-goldgish-2.6.27.

Todas las sucursales locales se pueden enumerar a través de git Branch.

2. Prepare el entorno de compilación en el sistema operativo host.

Aunque lo primero que mucha gente hace después de instalar Ubuntu es instalar build-essential, todavía quiero recordarles a todos los presentes que la biblioteca ncurses-devel también es esencial al hacer menuconfig. Ejecute el siguiente comando para realizar el trabajo de inmediato:

sudo apt-get install-build-basic ncurses-dev

3. Prepare la cadena de herramientas de compilación cruzada

<. p>Código de Android Hay un proyecto prediseñado en el árbol que contiene las herramientas de compilación cruzada que necesitamos para compilar el kernel. Si toma el árbol de código completo para la plataforma Android, estará en el directorio prediseñado. No importa si no obtienes el árbol de código completo. Simplemente usa el clon de Git o descarga un proyecto prediseñado de GitWeb. Si lo descargas desde GitWeb, recuerda descomprimirlo.

4. Establecer variables de entorno

Agregue el compilador arm-eabi prediseñado a $PATH.

$ export PATH = $ PATH:/myandroid/Android src/pre build/Linux-x86/tool ​​chain/arm-eabi-4 2 . El objetivo son los arcos establecidos como armas.

$export ARCH=arm

Abra el Makefile en el directorio del kernel y apunte CROSS_COMPILE al compilador arm-eabi prediseñado que acaba de descargar.

¿Recopilación cruzada? = arm-eabi-

Mantener

banderas LD _ BUILD _ ID = $(patsubst-Wl $(coma)%, %, /

$( Llame a ld-option, -Wl$(comma)-build-id, ))

Comente esa línea y agregue una definición LDFLAGS_BUILD_ID vacía como esta:

LDFLAGS_BUILD_ID =

La siguiente explicación proviene del blog de Chen Gang.

La razón por la que lo comento es porque el kernel de Android actualmente no admite esta opción. La opción --build-id se usa principalmente para agregar una ID de compilación al ejecutable elf generado para que el módulo pueda ubicarse rápidamente al compilarlo durante los volcados de núcleo o la información de depuración. Esto evita tener que verificar todo el archivo cada vez antes de compilarlo. Esta es una muy buena idea para los desarrolladores del kernel, ya que les ahorra tiempo al localizar las versiones de los módulos y su impacto. Esta función aún se encuentra en una etapa inicial y es posible que Android la admita en el futuro, pero al menos no es compatible con la versión actual.

Los amigos que estén interesados ​​en esta opción-build-id pueden visitar el siguiente sitio web, su autor lo ha explicado muy claramente:

http://fedoraproject.org/ wiki/Releases /FeatureBuildId

5. Obtenga el archivo de configuración del kernel del SDK.

Como todos sabemos, hay un paso en la compilación del kernel llamado make menuconfig, que se utiliza para configurar el kernel. Aquí podemos obtener primero la configuración oficial y luego realizar cambios si es necesario. Primero inicie el emulador -avdxxxxx y luego use el comando adb pull (usado para copiar archivos del dispositivo al local) para completar.

$adb pull /proc/config.gz ~/

Ahora usemos gunzip para descomprimir config.gz y mover el archivo de configuración obtenido al directorio donde está el código fuente del kernel. ubicado. Luego cámbiele el nombre. configuración.

$ganzip config.gz

$ mv config ~/sources/金鱼-kernel/. Configuración

6. Empezar a compilar

Porque copiamos. config se coloca antes del directorio del kernel del SDK. Si necesita modificar la configuración, puede usarlo.

Crear configuración de menú

Modificar y guardar la configuración, puedes utilizarlo directamente sin necesidades especiales.

Crear

comando para compilar el kernel.

7. Pruebe la zImage generada.

El proceso de compilación del kernel debe ser sencillo, porque la configuración predeterminada simplifica enormemente el kernel y se puede compilar en aproximadamente 5 a 6 minutos. Finalmente, se generará una zImage en el directorio arch/arm/boot, que es la imagen del kernel que queremos ejecutar en el emulador.

Probemos la zImage que generamos en el simulador.

Emulador avd XXX-kernel. /zImage

Donde xxx es el nombre del AVD. Si desea generar registros del kernel, agregue el parámetro -show-kernel.

Acerca de compilar el kernel para un dispositivo real

Si desea recompilar la imagen del kernel para un dispositivo real, como G1, los pasos son básicamente los mismos que los anteriores para el kernel. imagen ejecutándose en el emulador Los pasos son los mismos, excepto que el código fuente requerido debe ser de la línea principal en lugar de la rama Goldfish. Además, la forma de cargar la imagen después de la compilación es diferente. La imagen debe grabarse en nand flash a través de USB.