Logo Espacio Linux Paypal - Acepta pagos con tarjeta en tu negocio      
Portada Manuales Linux Descargas Foros Buscar Mapa del sitio Ayuda BlogEL
   Iniciar sesión | Registrarse    
 
Principal

Patrocinadores

Boletín Espacio Linux
Las novedades del sitio y el mundo Linux en tu email.


Taller Linux
 Estación de Trabajo en Audio
 HOWTO: Configuración básica de Ratpoison
 Guía de remasterización de Knoppix
 HOWTO: Nano, mi editor favorito
 HOWTO: Configuración Básica de IceWM


Sitios amigos

Accede a la renovada sección del Taller Linux, en donde puedes encontrar nuevos contenidos:
http://manuales.espaciolinux.com



Compilación de un Kernel de la serie 2.6 en Slackware


Una de las cosas a las que todo usuario de Linux termina enfrentándose antes o después es a la compilación de un núcleo. Esto es así por diversos motivos:


  1. Búsqueda de una mejora del rendimiento. Un núcleo preparado específicamente para nuestra arquitectura nos proporciona una mejora de las prestaciones de nuestro software.

  2. Querer tener la última versión del núcleo. Con esto corregiremos los agujeros de seguridad que se vayan conociendo e incluiremos nuevas funcionalidades. Es frecuente que las distribuciones no se centren en ofrecer los últimos núcleos, ya que se centran más en tener actualizados los paquetes y solo incorporen nuevos núcleos cada vez que sacan versiones estables de las distribuciones.

En este documento vamos a compilar un núcleo de la serie 2.6 en mi distribución de Linux, la Slackware 10.2. Esto no quiere decir que estos pasos no tengan validez para otra distribución, solo que en esta distribución está comprobado que el funcionamiento es el correcto.
Asimismo decir que el gestor de arranque que utilizo es el LILO, con lo cual si usas GRUB los últimos pasos serán ligeramente distintos.

1- Convenciones.

Seguiré la siguiente notación en el documento:

# mv linux-2.6.14.2.tar.gz /usr/src

Esto significa que lo que estamos ejecutando es un comando, que se introduce tal cual en la linea de comandos. El símbolo # sirve para representar que estos comandos han de ejecutarse con permisos de root.

map = /boot/System-2.6.14.2.map

Esto significa que son lineas que hay que copiar tal cual pero que van dentro de un fichero, con lo cual se edita dicho fichero y se copia la linea en su interior.

2- Primeros pasos.

Lo primero que debemos hacer es bajar el núcleo, escogemos un servidor, por ejemplo la página Web oficial (http://www.kernel.org) y bajamos el núcleo más moderno, en este caso el 2.6.14.2. Podemos descargarlo en diversos formatos de compresión, en mi caso elijo el tar.gz, con lo cual el archivo descargado es el linux-2.6.14.2.tar.gz. Una vez descargado lo colocamos en el directorio /usr/src:

# mv linux-2.6.14.2.tar.gz /usr/src

Y lo descomprimimos y desempaquetamos:

# tar zxvf linux-2.6.14.2.tar.gz

Entramos al directorio donde hemos descomprimido las fuentes del núcleo:

# cd linux-2.6.14.2


3- Configuración y compilación.

Ahora procedemos a uno de los pasos más importantes, la generación del archivo de configuración en base al cual se compilará el núcleo:

# make xconfig

Hay que destacar que tenemos varias opciones, xconfig es para realizar la configuración en modo gráfico, menuconfig es para realizarlo en ncurses o incluso config para modo texto.
Es muy recomendable guardar la configuración en un archivo para utilizarlo por ejemplo en la compilación de núcleos posteriores, por defecto se guardará en el fichero /usr/src/linux-2.6.14.2/.config. La configuración del núcleo determina para qué va a tener soporte nuestro núcleo, los módulos que serán creados y las opciones de sistema de archivos, red, etc.
Es importante saber muy bien lo que se está haciendo, si no hacemos este paso correctamente el núcleo probablemente no arrancará bien o incluso funcionará pero fallarán ciertas cosas.

Acto seguido procedemos a la compilación:

# make

Después compilamos los módulos:

# make modules

Una vez realizada la compilación de los módulos los instalamos:

# make modules_install

Esto nos colocará los módulos en el directorio /lib/modules/2.6.14.2

4- Colocar cada cosa en su sitio.

Primero copiaremos el mapa del sistema al directorio de arranque:

# cp System.map /boot/System-2.6.14.2.map

El System-2.6.14.2.map es un fichero de texto plano que contiene dos columnas, en una están situadas las direcciones de memoria y en la contigua las funciones y llamadas al sistema que están alojadas en dichas direcciones. Ahora entramos al directorio en el cual se ha creado el núcleo:

# cd arch/i386/boot

Copiamos el núcleo al directorio de arranque:

# cp bzImage /boot/vmlinuz-2.6.14.2

Este fichero vmlinuz-2.6.14.2 es el núcleo propiamente dicho.

5- Editando el gestor de arranque (lilo).

Ahora debemos hacer que el núcleo pueda arrancar al iniciar el sistema, para ello tendremos en cuenta una consideración muy importante: No borrar la entrada ni el núcleo que utilizamos en este momento. Esto es así porque la carga de nuestro núcleo puede fallar por lo tanto debemos guardar tanto el núcleo como su entrada en el gestor de arranque para poder entrar a nuestro Slackware. Editamos el fichero lilo.conf:

# vi /etc/lilo.conf

Ahora debemos meter por debajo de la opción boot la siguiente linea:

map = /boot/System-2.6.14.2.map

Y debajo de nuestra entrada actual de Linux meter la nueva entrada para nuestro núcleo:

image = /boot/vmlinuz-2.6.14.2 root = /dev/hda5 label = Slackware

La etiqueta image sirve para indicarle a LILO la ubicación del núcleo, la etiqueta root le indica en qué partición tenemos nuestro Linux (probablemente la vuestra difiera de la mía), la etiqueta label es simplemente el nombre que LILO mostrará en el arranque, es importante que no haya varias etiquetas label con el mismo identificador. Una vez echo esto guardamos el fichero y actualizamos LILO:

# lilo

Si no ejecutamos esta orden los datos del fichero /etc/lilo.conf no serán transferidos al MBR (Sector de Arranque Maestro) del disco duro con lo cual al iniciar el ordenador no se nos ofrecerá la opción de entrar a Slackware con nuestro nuevo núcleo. Una vez realizado esto ya solo debemos reiniciar el ordenador y ver si nuestro nuevo núcleo funciona. Recomiendo no borrar la entrada en /etc/lilo.conf del antiguo núcleo hasta no haber comprobado que el nuevo funciona perfectamente. Hasta entonces no debemos borrar el antiguo núcleo. No es infrecuente que tengamos ciertos fallos del tipo de que no funcione Internet, que no se escuche el sonido, etc.

6- Borrado del antiguo kernel.

Vamos a suponer que nuestro núcleo anterior era el 2.6.10 y que el que acabamos de compilar funciona correctamente, pues bien para borrar el antiguo tendremos que borrar los siguientes ficheros:

# rm /boot/vmlinuz-2.6.10
# rm /boot/System-2.6.10.map
# rm -r /lib/modules/2.6.10

También debemos borrar o comentar la entrada en /etc/lilo.conf, y si tenemos instaladas las fuentes del núcleo anterior borrarlas también:

# rm -r /usr/src/linux-2.6.10
# rm /usr/src/linux-2.6.10.tar.gz


Comentarios

Para cualquier duda, observación o sugerencia sobre este documento puedes hacerlo a través del siguiente enlace:

Foro: Compilación de un Kernel de la serie 2.6 en Slackware


Licencia del documento

Derechos de Autor © 2005 por Daniel Medianero García.
Este documento esta liberado bajo la licencia creative commons.



Si queréis contactar conmigo podéis encontrarme en los foros de Espacio Espacio Linux ( http://www.espaciolinux.com/ ) con el nick de Meleagro, en el IRC servidor Freenode en los canales slackware-es y bsd-es como Meleagro, en mi Blog ( http://www.meleagro.esp.cc ) o en mi correo electrónico ( meleslack@gmail.com ).





Autor: Daniel Medianero García (Meleagro)
URL: http://www.meleagro.esp.cc
Colaboración para espaciolinux.com.
Fecha: 2005-11-24
(3108 Lecturas)



Copyright © 2003 por Espacio Linux


[ Volver Atrás ]
Content ©
 



Copyright | Términos de uso | Política de privacidad | Publicidad | Contáctanos | Blog