Como ya he dicho antes de la Nexus, Google pone al alcance de la gente todas las herramientas necesarias para poder manipular sus dispositivos, algunas de las cosas las pone por obligación (por temas de licencias como la GPL) y otras por interés propio ya que siempre acaban saliendo cosas mas que interesantes para sus dispositivos y seguramente ellos puedan nutrir futuras versiones de esas apariciones. Una de las cosas que he conseguido hacer es la compilación del kernel de linux para la Nexus, no aportaba nada nuevo, solo el hecho de que estaba compilado por mi. Por si hay algún interesado y para que no se me pasen los pasos para volverlo a hacer, esto es lo que he hecho:
[wp_ad_camp_4]
- Descargamos el NDK de Android y lo descomprimimos en /opt/ y mete en el path la carpeta con las herramientas, en mi casó añadí: /opt/android-ndk-r8d/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86/
- Descarga del repositorio del kernel del Nexus: «git clone https://github.com/drewis/android_kernel_grouper» y entramos en la carpeta creada.
- Conectamos la Nexus al pc (estando encendida) y le cogemos el fichero de configuración: «adb pull /proc/config.gz» y lo descomprimimos «gunzip config.gz«
- Movemos el config para que lo coja el make: «mv config arch/arm/configs/nexus7_defconfig«
- Ahora pasamos a establecer la configuración de nuestra Nexus al kernel: «make nexus7_defconfig ARCH=arm CROSS_COMPILE=arm-linux-androideabi-«
- Ahora vamos a modificar lo que queramos del kernel: «make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-androideabi-«
- Y por último, compilamos el kernel: «make -j4 ARCH=arm CROSS_COMPILE=arm-linux-androideabi-» La j4 indica que use los 4 cores de la CPU (si los tiene), si no tienes claro si tienes o no mas de 1 core, no lo pongas.
- Si todo ha salido bien, tendremos nuestro kernel modificado en arch/arm/boot, el fichero zImage.
- Ahora toca descargarse la imagen de fábrica de nuestra Nexus: https://developers.google.com/android/nexus/images#nakasijop40d para así poder extraer el boot.img que contiene el kernel y el ramdisk.
- Una vez bajada y descomprimida, veremos un zip, pues dentro tenemos varias imagenes que son las que se grabarán (recovery, boot, userdata y system). Sacamos el boot.img y lo reservamos
- Ahora necesitamos una herramienta para separar el kernel del ramdisk, yo usé el split_bootimg.pl
- Ahora lo separamos, llevamos el script donde hemos dejado el boot.img y lanzamos: «./split_bootimg.pl boot.img» y el script nos sacara 2 ficheros: boot.img-kernel y boot.img-ramdisk.gz
- Ahora necesitaremos crear nuevamente el boot.img, pero en vez de usar el kernel que viene de serie pondremos nuestro nuevo y flamante kernel, para eso, necesitamos el mkbootimg.
- Una vez tengamos el mkbootimg lanzamos la linea: «mkbootimg –kernel zImage –ramdisk boot.img-ramdisk.gz –cmdline «no_console_suspend=1 console=null» -o nuevoboot.img«
- Y ya tendremos el fichero nuevoboot.img que podremos lanzar directamente en la tablet por medio del fastboot o bien, lo renombramos como boot.img y lo metemos en el fichero oficial de Google para flashearlo como si de una ROM oficial se tratara. Yo mostraré como lo hice sin tener que flashear, para evitar, si nos hemos colado en alguna configuración, que no arranque la tablet.
- Nos vamos al directorio donde descomprimimos el fastboot cuando desbloqueamos el bootloader , y nos copiamos alli el nuevoboot.img que hemos generado.
- Apagamos la Nexus, arrancamos en modo bootloader (Vol – y power) y conectamos USB.
- Lanzamos: «fastboot boot newboot.img» . En unos segundos, el fastboot le lanza la imagen nueva de arranque por el usb y la ejecuta para que se inicie y arranque con el nuevo kernel, así, al no flashear, si falla, basta con apagar y volver a encender la Nexus.
[wp_ad_camp_1]
Y si vamos a ajustes veremos nuestro nuevo kernel: