lunes, 19 de mayo de 2008

Compilar Kernel en Debian

Holas

Bueno aca un pequeño jautu de como actualizar el kernel y no morir en el intento.
En lo posible si no lo has hecho antes, lo recomendable seria jugar dentro de una maquina virtual y hacer todas las pruebas que desees.

Parte 1:
El modo facil y sencillo.

Abrir una terminal como root

#apt-get update
#apt-cache search linux-image (buscando los nuevos kernels disponibles)

Salen bastantes alternativas para escoger, pero me interesan estas 2

linux-headers-2.6.25-2-amd64 - Header files for Linux 2.6.25 on AMD64
linux-image-2.6.25-2-amd64 - Linux 2.6.25 image on AMD64

En mi caso tengo un amd64 x2 asi que lo instalo.
#apt-get install linux-image-2.6.25-2-amd64

Empieza a descargar el paquete, si encuentra una dependencia la resuelve sin dramas, actualiza el grub automaticamente, y cuando reiniciamos tenemos nuestro nuevo kernel trabajando sin problemas.

Tambien es bueno instalar los headers ( basicamente algunos programas lo necesitan como el driver propietario de Nvidia, si tienes instalado el VMware, etc, etc, ...

apt-get install linux-headers-2.6.25-2-amd64

Parte 2:

Existe algunos casos cuando estas probando nuevo hardware, algunos programas de virtualizacion (Lguest por ejemplo) y necesitas los ultimos kernels para trabajar(trastear), entonces no queda otra que compilar el kernel (A la Debian Way).

Pasos a seguir:
Instalar los paquetes necesarios
#apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

Descargar el ultimo kernel estable de kernel.org.
The latest stable version of the Linux kernel is:2.6.25.4 (Al momento de escribrir este post)

Dirigirse a la carpeta /usr/src y descargarlo con wget
#cd /usr/src
#wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.4.tar.bz2

Descomprimir el paquetito
#tar jxvf linux-2.6.25.4.tar.bz2

Creamos un acceso directo a la carpeta linux-2.6.25.4
#ln -s linux-2.6.25.4 linux

Ahora nos interesa un archivito config, que es en donde se guarda la configuracion de nuestro kernel, este archivito se encuentra en la carpeta /boot ,para saber que config debemos copiar
en la terminal hacemos un:
#uname -r
2.6.24-1-amd64 ( nos da la ultima version que se esta usando)

entonces copiamos el archivo config actual, que sera nuestra base para configurar el nuevo kernel.

Nos ubicamos en la carpeta /usr/src/linux
#cd /usr/src/linux

Y ejecutamos el siguiente comando
#cp /boot/config-2.6.24-1-amd64 .config

Ejecutamos el siguiente comando para acceder al menu de configuracion del kernel
#make menu config

Sale algo parecido a esto



Nos dirigimos hacia



Seleccionamos la opcion load, luego aparece .config, aceptamos

Antes de empezar a configurar en las imagenes podemos observar que en la parte izquierda tenemos entre corchetes un asterisco luego la funcion a realizar en la parte derecha.
Basicamente hay tres modos
- Una letra M (Significa que esta seleccionado como modulo)
Lo activamos con la letra M
- Un asterisco (Significa que esta seleccionado como integrado)
Lo activamos con la letra Y
- Y cuando esta vacio, no esta activada la opcion
Para desmarcar las opciones presionas la barra espaciadora

Luego empezamos a configurar a nuestro gusto las opciones del kernel, habilitamos filesystems, dispositivos, opciones de virtualizacion, opciones del tipo de procesador. bluetooth, etc ...

Cosas a tener en cuenta
La opcion "device drivers", anteriormente tuve inconvenientes por que no configure bien esta opcion, aca se da soporte para los dispositivos soportados por el kernel. los drivers de los dispositivos pueden estar como moduloso integrados.

Si tenemos un disco IDE, dentro de "Device Drivers" buscamos "ATA/ATAPI/MFM/RLL support", lo marcamos como integrado, dentro de esa opcion (pulsamos enter) buscamos "Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support" (que esta casi al comienzo) y tambien lo ponemos como integrado

Si tenemos disco SATA dentro de "Device Drivers" buscamos "Serial ATA (prod) and Parallel ATA (experimental) drivers" lo marcamos como integrado.

Luego de que hallamos terminado de configurar el Kernel, vamos a la pantalla de inicio y seleccionamos exit, nos saldra un mensaje diciendo si deseamos guardar la configuracion hecha, le decimos que si

Ahora a compilar el kernel
Hacemos un
#make-kpkg clean
#make-kpkg --initrd --append-to-version=-vm kernel_image kernel_headers

Notas
despues de append-to-version=-vm ( puedes poner cualquier nombre, en mi caso puse mis iniciales vm)
Al final luego de un buen rato este comando nos botara el kernel y los headers.
Cuando termine ubicarse en la carpeta /usr/src
#cd /usr/src
#ls
y veran que se crearon dos archivos *.deb
linux-image-2.6.25.4-vm_*****.deb
linux-headers-2.6.25.4-vm_******.deb

Con los debs en nuestro poder ya podemos instalar el nuevo kernel
#dpkg -i linux-image-2.6.25.4-vm_*****.deb

Automaticamente modifica el grub, y demas cosillas

Reiniciamos, y nos saldra nuestro nuevo kernel compilado en el grub



Si no hay ningun problema estaremos con nuestro nuevo kernel

Saludos
PD: Jugando con el planet xD

Fuente
http://mogaal.com/articulos/kernel-a-la-debian.html
http://www.debian.org/doc/manuals/reference/ch-kernel.es.html
http://www.esdebian.org/forum/viewtopic.php?forum=4&showtopic=99203
http://www.howtoforge.com/kernel_compilation_debian_etch

1 comentario:

MCKAY Brothers dijo...

Entaro advnz joung debiano..

complacidos de encontrar un zealot debiano como nosotros, y con la receta mas simple de compilacion de kernel en deban..

Esta buena (basica en realidad, pero perderias tiempo explicando la diferencia entre integrado y modulo) para comenzar y como todo linux users, esta de parte de uno averiaguar preferencias despues de vivir la experiencia..

por favor, visita McKAY Debian emu & issues donde estoy empaquetando mucho soft no presente en stable y oldstable.. ademas, doy completo soporte a sarge y debian en maquinas viejas..

hay emuladores y juegos..

MAgnifico, me vas a ver mas seguido aqui...