Parchear el kernel

 

Hemos visto como recompilar el kernel para dejarlo como a nosotros nos interese dependiendo de nuestras necesidades. Ademas de esto también tendremos que recompilar nuestro kernel si queremos introducir un parche del mismo que pueda por ejemplo, corregir fallos de seguridad entre otras cosas. Intentaremos realizar esta operación a continuación.

Para llevar parchear el kernel necesitaremos imperiosamente el kernel y su parche. Anterioremente ya nos bajamos los fuentes del kernel asi que ahora tendremos que descargarnos un parche para esta versión de kernel.

Encontramos los parches de cada una de las versiones del kernel en esta dirección web:

http://www.kernel.org/pub/linux/kernel

Si queremos encontrar los parches para nuestro kernel tendremos que buscar un poco mas y lo podremos encontras en la siguiente web:

http://www.kernel.org/pub/linux/kernel/v2.6/

Podemos apreciar en la siguiente imagen varios parches para nuestra versión del kernel

clip_image002

En la imagen superior podremos ver que hay varios parches de cada versión del kernel. Esto es asi para que si por ejemplo estamos en la versión 2.6.26.7 y queremos tener la ultima versión del kernel que (imaginemos) que es la 2.6.26.8 en vez de descargarnos todo el kernel tan solo nos descargamos las líneas modificadas y asi nos ahorramos bajar de nuevo todo el kernel. Ahora bien si estamos en la versión 2.6.26.2 y queremos llegara la 2.6.26.8 tendremos que pasar por todas las anteriores asi que si estamos muy alejados de la versión a la que queremos llegar nos conviene bajarnos la ultima versión del kernel al completo y recompilarlo.

Si en nuestro sistema realizamos un úname –a en nuestra Shell

clip_image004

Veremos que tenemos la versión 2.6.26-2-686, supongo que si nos descargamos el patch para la versión 2.6.26.3 podremos volver a arrancar perfectamente. En la imagen superior podemos ver que los parches están publicados con diferente tipo de compresión.

Teclearemos en nuestra Shell el siguiente comando.

Wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.26.3.bz2

Mediante este comando nos podremos bajar el fichero que queremos desde la línea de comandos.

clip_image006

Si pulsamos intro obtendremos una pantalla similar a la siguiente

clip_image008

Si realizamos un ls de nuestro directorio home veremos que contiene

clip_image010

Como podemos apreciar nos lo hemos bajado en nuestro directorio home. Lo copiaremos en nuestra carpeta /usr/src que es donde tenemos nuestro kernel.

Para ello teclearemos en la Shellà cp ./patch-2.6.26.3.bz2 /usr/src/

clip_image012

Como podemos comprobar si no somos root no podremos hacerlo asi que vamos a validarnos como root de la manera habitual ( su + password)

clip_image014

Volvemos a lanar la misma orden que antes…

clip_image016

Si ahora listamos el directorio /usr/src nos debería de aparecer este fichero.

clip_image018

Parece que es correcto.

Ahora nos vamos a cambiar de directorio e iremos a /usr/src.

Cd /usr/src es lo que tenemos que teclear en la Shell

clip_image020

Una vez en este directorio descomprimiremos el fichero que acabamos de copiar de la siguiente manera:

Bzip2 -d patch-2.6.26.3.bz2

clip_image022

Si realizamos un ls deberíamos de tener nuestro parche descomprimido

clip_image024

Parece que asi es.

Una vez que ya tenemos todo lo que necesitamos parchearemos el kernel.

Ahora tendremos que escribir la siguiente orden

patch –s –p0 < patch-2.6.26.3

clip_image026

Mediante la opcion –s solo nos aparecerán los errores. A continuación vemos las siguientes imágenes en las que podemos apreciar ficheros a los cual no aplicaremos modificaciones.

clip_image028

Una vez acabados los errores que haya podido haber se nos devolverá el control al punto de comando.

Ahora una vez parcheado el kernel, tendremos que continuar con la compilación normal, para ello tendremos que escribir

make menuconfig oldconfig

aunque antes limpiaremos el sistema con make clean y make mrproper para eliminar las trazas y asi poder compilar sin problemas

make clean

clip_image030

Una vez terminado teclearemos make mrproper en nuestra Shell para poder borrar los ficheros ocultos.

clip_image032

clip_image034

Una vez terminado este proceso ejecutaremos nuestro kernel con nuestra configuración actual mediante make menuconfig oldconfig

clip_image036

clip_image038

Saldremos guardando la configuración actual.

clip_image040

clip_image042

Como podemos ver ya hemos configurado nuestro fichero con el cual podremos crear nuestra imagen y nuestros modulos.

Como ya hemos podido ver en la practica anterior tendremos que realizar 3 pasos para recompilar nuestro kernel como son los siguientes:

  • Make bzImageà Crea imagen comprimida del kernel
  • make modulesà Compilacion de los modulos que hemos seleccionado en menuconfig
  • make modules_installà generación modulos en /lib/modules/

Son 3 ordenes que podremos mandar a la vez mediante el siguiente comando.

Make bzImage && make modules && make modules_install

clip_image044

clip_image046clip_image048

clip_image050

clip_image052

clip_image054

clip_image056

Una vez que hayan terminado estas 3 ordenes tendremos que continuar el proceso de recompilacion normal.

Tendremos generados los ficheros que nos hacen falta y por tanto tendremos que copiarlos en su lugar correspondiente.

Vemos como no hay nada relacionado con patch3 en esta vista asi que tendremos que generarlo

clip_image058

Para el fichero generado desde make bzImage tendremos que copiarlo desde su ubicación ha /boot de la siguiente manera

Cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.26-patch3

clip_image060

Copiaremos tambien System.map tecleando la siguiente orden

Cp System.map /boot/ system.map-2.6.26-patch3

clip_image062

Por ultimo generaremos el sistema de ficheros initram con la siguiente orden

Mkinitramfs –o /boot/initrd.img-2.6.26-patch3 /lib/modules/2.6.26patch3

clip_image064

Si realizamos un ls veremos que se nos han creado los ficheros que hemos dicho correctamente

clip_image066

Ya tenemos todo en su sitio, estamos a falta de poder arrancarlo desde algún lado. En la primer parte del documento hemos visto como hacerlo a mano ahora lo haremos con un script preparado del sistema.

Si vemos nuestro fichero de configuración de grub que se encuentra en /boot/grub/menú.lst veremos la siguiente información

clip_image068

clip_image070

clip_image072

Teclearemos upgrade-grub y se nos generara la entrada que necesitamos para arrancar tal y como vemos en la imagen inferior

clip_image074

clip_image076

clip_image078

Si ahora reniciamos la maquina deberíamos de entrar en nuestro kernel modificado y parcheado.

clip_image080

Seleccionamos la primera opción que es la que acabmos de implementar.

Una vez que arranque nuestro sistema teclearemos úname –r para que nos salga que kernel estamos usando.Deberia de aparecernos el nuestro.

clip_image082

Parece que estamos en lo cierto, creo que hemos parcheado y recompilado perfectamente que era de lo que se trataba.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Time limit is exhausted. Please reload the CAPTCHA.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.