Skip to Content

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:

  1. Mejorar el rendimiento de nuestro sistema
  2. Configurar drivers que no tienen módulos
  3. Activar nuevos recursos

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.

invitrum
servidor irc.debian.org, canal #debian-hn
Imagen de invitrum
Usuario Desconectado. Visto por última vez 5 días 23 horas. Desconectado
Integró: 05/27/2009
Debian testing y el grub

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.

motafresh
Now Powered by debian Lenny
Imagen de motafresh
Usuario Desconectado. Visto por última vez 6 días 4 horas. Desconectado
Integró: 06/16/2009
Nunca pude instalar el

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.