Compilando el kernel de GNU/Linux en Debian lenny
Este es un articulo basado en el tema sobre el cual muchas personas se han preguntado alguna vez en su vida de usuarios de GNU/Linux, para decirlo a ciencia cierta no se puede decir que eres un usuario "linuxero" si nunca te has preguntado o al menos quitado el taboo de saber como funciona nuestros kernel preferido, esto no es cosas de gurus o de personas super dotadas simplemente es el centro de nuestro OS.
En este articulo aprenderás a quitarte ese miedo y a conocer realmente como funciona el núcleo de GNU/Linux, ahora bien.. muchos se preguntaran para que me sirve compilar el kernel, porque arriesgarme en esta aventura sin retorno?
Existen varios puntos importantes por los cuales nosotros podemos compilar nuestro núcleo algunos puntos fuertes pueden ser los siguientes:
Antes de comenzar con este tutoríal podemos agregar que este método es aplicable tanto a imágenes y código fuente del kernel descargados directamente desde el repositorio oficial como al Source descargado directamente desde www.kernel.org
Que es un Kernel?
En informática, el núcleo (también conocido en español con el anglicismo kernel, de la raíz germánica Kern) es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más 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, el núcleo 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 para el programador. (Parrafo textual de wikipedia)
Requisitos para poder compilar el kernel
Ahora bien para poder compilar nuestro núcleo necesitamos de una serie de librerías y aplicaciones para ejecutar esta acción, así que en este instante abrimos el terminal e ingresamos como root poder ejecutar las siguientes
lineas directamente desde el bash:
aptitude install pciutils usbutils gcc autoconf libncurses5 libncurses5-dev ncurses-base ncurses-bin ncurses-term make g++ initrd-tools libqt3-mt-dev
Conociendo nuestros módulos en ejecución
Para iniciar un proceso de compilación del kernel necesitamos conocer el hardware que nuestros módulos soportaran.
En GNU/Linux existen varias formas de verificar el hardware y sus módulos, abajo se muestran algunos comandos interesantes que nos proporcionan información sobre nuestros sistema (directorio /proc/):
# cat /proc/modules
# cat /proc/cpuinfo
# cat /proc/interrupts
# cat /proc/meminfo
# cat /proc/ioports
# update-pciids
# update-usbids
# lspci
# lsusb
Para listar los módulos que están activos o en ejecución:
# lsmod
Para verificar los módulos compilados:
# modprobe -l
Para identificar lo que cada modulo hace:
modinfo
Ejemplo:
# modinfo ext3
Bajar y descomprimir el nuevo kernel
Navegar a el sitio www.kernel.org, ahora vamos a ejecutar el comando que se muestra abajo para poder descargar desde el sitio la version de kernel que necesitamos, ahora bien la versión del kernel que estamos utilizando en el ejemplo fue liberada el 24/04/2009
Descargando el nuevo kernel:
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.2.tar.bz2
Ahora copiamos y descomprimimos el source del kernel en el directorio /usr/src/:
# tar xjf linux-2.6.30.2.tar.bz2
Con el comando ln -s creamos un enlace dinámico desde nuestro directorio real a uno llamado linux:
# ln -s linux-2.6.30.2 linux
Ahora modificamos el parámetro llamado EXTRAVERSION para facilitar la organización del directorio /lib/modules/2.6.29-EXTRAVERSION.
# cd /usr/src/linux
# vim Makefile
EXTRAVERSION=-21Jul2009
Compilando y configurando el nuevo kernel
Generamos un archivo .config de configuración del código fuente de nuestro nuevo kernel:
# cd /usr/src/linux
Limpiamos cualquier archivo temporal innecesario de compilación anteriores de nuestro kernel:
# make clean
# make mrproper
Configuramos el kernel a través del terminal con el siguiente comando:
# make menuconfig

Al final guardamos los cambios que realizamos, luego se generara un archivo de configuración el cual guardaremos en la ruta correcta para que podamos iniciar nuestro sistema de forma correcta:
# cat /usr/src/linux/.config
# cp /usr/src/linux/.config /boot/config-2.6.30.2
Compilamos nuestro nuevo núcleo:
# make
Módulos, imagen e initrd del nuevo kernel
Copiamos los módulos del nuevo kernel en la ruta correcta (/lib/modules):
# make modules_install
Copiando el archivo de imagen del nuevo kernel:
# cd /usr/src/linux/arch/i386/boot/
# file bzImage
# stat bzImage
# cp bzImage /boot/kernel-2.6.30.2
Visualizando el nombre de dos módulos:
# ls /lib/modules
Creando el initrd:
# mkinitramfs -o /boot/initrd-2.6.30.2-21Jul2009 (versión encontrada a través del comando "ls /lib/modules")
Configurando el Grub
Ahora vamos a configurar el gestor de arranque (Boot) llamado Grub:
# update-grub
Podemos también configurar el Grub manualmente, agregando las lineas referentes a nuestro nuevo Kernel:
# vim /boot/grub/menu.lst
title Meu kernel-2.6.29.2
root (hd0,0)
kernel /boot/kernel-2.6.29.2 root=/dev/hda1 ro
initrd /boot/initrd-2.6.29.2
savedefault
Ahora solamente nos resta reiniciar nuestra computadora e iniciar con el nuevo kernel, recordemos que esto nos puede servir para mejorar el rendimiento de nuestro sistema o agregar nuevas funciones que no están contempladas por defecto.
Recordemos cualquier duda puede ser comentada en este post o si tenemos alguna modificación o mejora a este archivo lo podemos hacer por medio del wiki de linuxmaya.
- Inicie sesión o regístrese para enviar comentarios
Nunca pude instalar el bendito debian lenny, por mas que le di, me baje la iso con kde, gnome, netisntall y nada, hasta una mini que tienen ellos mismos pq siempre te da un error desde la usb, en el cual te pide cd-rom :S, cuando al fin instale el sistema base, comienza a descargar los paquetes y pluff, se queda pegado al 25% en el ultimo paquete que descarga. Pase 35 horas tratando de instalarlo y nada. Creo que me sale mejor pedir los 5 dvd. Pq ni para atraz ni para adelante.
Me voy a hacer Ubuntero mejor.
pd: Ese ultimo comentario es sarcastico, conste no tengo nada contra los que lo usan pero si con el OS XD
EDITO: De todo lo de arriba me retracto. NOW POWERED BY DEBIAN LENNY XD, hoy si papa. y con KDE, gnome apesta.
- Inicie sesión o regístrese para enviar comentarios


Algo interesante es que la versión testing no trae el grub, sino que trae grub2 que es totalmente escrito desde cero y no tiene nada que ver con la configuración del grub normal, esto es una ventaja ya que proporciona mas configuración al gestor de arranque pero se instala de forma diferente o al menos cambian unos pasos.
El siguiente tutorial a crear es sobre como configurar y recupera el grub2 en debian testing ya que el día de ayer me dio unos problemas y me gustaría compartir como los solvente.
saludos y los animo a crear documentación para el sitio.