Hola estimados soy Chijure y en esta entrada aprenderemos como
Compilar un kernel para el sistema operativo android
Tratare de hacerlo lo mas didactico y facil de comprender explicando hasta
lo mas mínimo y pondré capturas de pantalla hasta donde no se necesiten
Antes de Empezar
¿Que es un kernel?
Un kernel o Núcleo es un software que constituye una parte fundamental del sistema operativo, y se define como la parte que se ejecuta en modo privilegiado. Es el principal responsable de facilitar a los distintos programas al hardware en forma básica, es el encargado de gestionar recursos, a través de
servicios de llamada al sistema. Como hay muchos programas y el acceso
al hardware es limitado, también se encarga de decidir qué programa
podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo,
lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware.
Esto permite esconder la complejidad, y proporciona una interfaz limpia
y uniforme al hardware subyacente, lo que facilita su uso al programador.
¿Por que compilar un Kernel?
Esta pregunta probablemente a pasado por su mente
"por que compilar uno si mi terminal ya funciona bien con el que trae de fabrica"
para añadir nuevas características que se adapten a lo que usted necesita
Ahora si empecemos
Necesitamos una PC con Ubuntu 12.04 de 32 o 64 bits
(no otra versión ya que este tutorial contiene solo los paquetes
de ubuntu 12.4 LTS)
con un procesador decente recomiendo un Intel Core 2 Duo
pero puedes compilar sin ningun problema desde una Pentium 4
una cierta cantidad de Memoria RAM recomiendo 2 Gb y mínimo 739 mb
tener instalado Ubuntu en una particion de minimo 10 Gb no se necesita
mucho espacio pero lo recomendable es 50 Gb mas espacio siempre es mejor
(imagen de Ejemplo)
Desde este punto del tutorial empesaremos por pasos
Iniciamos en Ubuntu
y abrimos la terminal pulsando las teclas control + alt + t
se abrirá la terminal
instalamos los paquetes necesarios para la compilacion
escribimos o simplemente copiamos lo siguiente
sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2 bin86 libqt3-headers libqt3-mt-dev wget libncurses5 git-core nautilus-open-terminal synaptic abootimg
y pulsamos enter les pedirá su contraseña no se asusten si no aparece nada
si esta escribiendo
las sources en android son las funtes la informacion en este caso
archivos necesarios para cierto fin (kernel,recovery,rom, etc)
archivos necesarios para cierto fin (kernel,recovery,rom, etc)
Aqui hos dejo unas de ellas:
-HTC Dev
-Samsung
-Sony
-LG
-Huawei
Una vez tengamos las sources de nuestro kernel continuamos.
-HTC Dev
-Samsung
-Sony
-LG
-Huawei
Una vez tengamos las sources de nuestro kernel continuamos.
Las Toolchains
cerramos la terminal y la volvemos a abrir
y escribimos o copiamos lo siguiente:
git clone git://github.com/DooMLoRD/android_prebuilt_toolchains.git toolchains
y pulsamos enter para comenzar a descargar
una vez descargadas las toolchains las tendremos en la ruta
home/nombredeusuario/toolchains
en mi caso
home/chijure/toolchains
Poniendo todo en su lugar
ya tenemos nuestras sources de nuestro kernel las tollchins
pero estan esparcidas por toda nuestra carpeta personal
para tener todo mas ordenado crearemos un carpeta llamada
"android" y dentro de ella dos mas "kernel" y "toolchain"
en la carpeta kernel pondremos nuestras sources yo soy muy ordenado y las tengo en una carpeta llamada "L3" asiendo referencia al terminal
y como es obvio en la carpeta "toolchain" nuestras toolchains
listo ya tenemos las sources en su lugar las toolchains en su lugar y todos los paquetes instalados empecemos el siguiente y penultimo paso
"Compilar"
abrimos la terminal
y entramos a la carpeta donde estan nuestras sources
con el comando "cd"
cd android/kernel/nombredetuterminal
en mi caso
cd android/kernel/L3
dentro de la carpeta le diremos a la terminal que se prepare para compilar
para la arquitectura arm con:
export ARCH=arm
luego le indicaremos a la terminal donde o con que toolchains queremos que compile.
ESTE PASO ES MUY IMPORTANTE POR QUE SI ESCRIBIMOS MAL LA RUTA NO COMPILARA Y SI LAS TOOLCHAINS NO SON COMPATIBLES CON NUESTRAS SOURCES TENDREMOS QUE USAR OTRAS
ejecutamos el comando
export CROSS_COMPILE=~/android/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
como podrán observar decidí usar las sources
"arm-eabi-4.4.3" si a ustedes no les compila elijan otra (cambiando la ruta)
listo ya pasamos los pasos mas importantes
ahora limpiaremos las sources de basura o erores con el comando:
make clean && make mrproper
este comando dejara las sources limpias y libres de basura para iniciar una compilación segura
ahora necesitas nuestra defconfig (configuracion por defecto de nuestro terminal)
este archivo se encuentra en un comprimido en un config.gz en la ruta
/proc/config.gz en nuestro terminal
y lo podemos obtener manualmente con un explorador de archivos con acceso root
como root explorer o es file manager
pero yo recomiendo obtenerlo por ADB ya que es mas sencillo
para continuar con este tutorial necesitas tener instalado el ADB
puedes ver el tutorial de la manera mas facil de instalarlo en Ubuntu aqui.
ejecutamos:
adb pull /proc/config.gz
con esto obtendremos el archivo config.gz
lo descomprimos con:
gunzip config.gz
ahora colocamos y cambiamos el nombre de nuestro "config" donde debería estar con:
mv config arch/arm/configs/nombredeterminal_defconfig
en mi caso
mv config arch/arm/configs/L3_defconfig
ahora hay que decirle a la terminal que use nuestra defonfig
en mi caso "L3_defconfig"
con el comando:
make nombredeterminal_defconfig
en mi caso
make L3_defconfig
con esto ya estamos listo para decirle a la terminal que empiece a compilar pero le pondremos un nombre ejecutamos:
make menuconfig
y se abrirá el menú de configuraciones por ahora no tocar nada explicare que hace cada opción y cual es recomendable usar y no usar en otro tutorial por ahora solo pondremos el nombre
nos movemos con las teclas direccionales FLECHAS
hasta "general setup" Ajustes Generales en español
y seleccionamos la opcion Local version - append to kernel release
y observamos que el kernel se llama -CM
ustedes le ponen el nombre que prefieran por motivo de este tutorial le pondre
tu..................trasero
"tutrasero-by-chijure"
y listo ya tendremos nuestro kernel con un nombre personalizado
pulsamos ok y luego salir y salir les aparecerá este menú
A compilar ejecutamos:
make zImage
este proceso puede durar de 4 a 5 minutos o de 20 a 30 minutos segun tu la velocidad del procesador y la ram de tu PC
listo ya tendremos nuestro kernel comprimido en el zImage
¿Ahora que?
ahora debemos meter el zImage dentro del boot.img de nuestro terminal
para ello pondremos el boot.img de nuestro terminal en la "carpeta personal"
abrimos una nueva terminal
y ejecutamos el siguiente comando:
abootimg -u ~/boot.img -k ~/android/kernel/nombredetuterminal/arch/arm/boot/zImage
en mi caso
abootimg -u ~/boot.img -k ~/android/kernel/L3/arch/arm/boot/zImage
Este comando reemplaza el zImage original por el que acabamos de compilar
Listo ya tenemos nuestro zImage dentro del boot.img listo para instalar
kernel tutrasero instalado en el LG OPTIMUS L3
:D
ResponderEliminarsoy jeremy te falto algo observa
ResponderEliminarexport CROSS_COMPILE=~/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
y adivina