Apéndice C. Actualización del kernel de Debian Linux

Pablo Chamorro

Tabla de contenidos

1. Introducción
1.1. Acerca de esta guía
1.2. ¿Por qué compilar?
1.3. Versiones de producción y de desarrollo.
1.4. Acerca de los módulos
1.5. Software requerido
1.6. Tiempo de compilación
1.7. Espacio en disco requerido
2. Compilación del kernel
2.1. Obtención y descompresión de los fuentes
2.2. Descompresión de los fuentes
2.3. Creación de un archivo de configuración
2.4. Una guía de apoyo para definir un archivo de configuración
2.5. Compilación
3. Instalación del nuevo kernel
3.1. Instalación de los archivos del kernel
4. Referencias

El kernel o núcleo es una de las partes esenciales de un sistema operativo. El kernel proporciona todos los servicios básicos requeridos por otras partes del sistema operativo y aplicaciones, y en complemento, se encarga de la administración de la memoria, los procesos y los discos. El kernel es independiente de la distribución Linux utilizada, de tal forma que el mismo kernel debería servir en cualquier caso. La actualización del kernel se divide en 2 partes: compilación e instalación del nuevo kernel.

1. Introducción

1.1. Acerca de esta guía

En esta guía se desarrolla el ejemplo de la compilación del kernel versión 2.2.18 bajo Debian 2.1 Citius (kernel 2.0.36). Si desea compilar un kernel 2.4.x bajo un sistema con kernel 2.0.x o 2.2.x deberá consultar otros documentos que tratan específicamente sobre el tema.

De cualquier forma al final de este instructivo se presentan algunas referencias de documentos disponibles en Internet para mayor ilustración.

1.2. ¿Por qué compilar?

Hay diversas razones para querer reconstruir el kernel de Linux:

Es útil recompilar un kernel porque trabajando con kernels nuevos generalmente se obtiene:

  1. Un sistema más rápido, estable y robusto.

  2. Un sistema con soporte a elementos de hardware no encontrado en kernels viejos.

  3. Un sistema con soporte a características especiales disponibles pero no habilitadas en kernels viejos.

Una alternativa a recompilar el kernel es instalar una nueva versión de la distribución Linux que esté utilizando. Dependiendo de las circunstancias puede resultar conveniente o preferible lo uno o lo otro. Por ejemplo, si tiene un sistema Linux que le costó esfuerzo y tiempo para instalar y configurar, y no desea volver a realizar todo ese trabajo otra vez, es posible que recompilar el kernel sea lo más sencillo para dar solución a su necesidad particular.

Recompilar el kernel de Linux no es más que personalizar el kernel y como con cualquier aplicación, la personalización se hace para sacar un mayor provecho de las diferentes características que ofrece el software.

[Important]Importante

Si usted no tiene experiencia compilando el kernel es recomendable que utilice un equipo donde usted pueda practicar sin temor de que su sistema eventualmente vaya a quedar estropeado. No hay ningún riesgo al compilar el kernel (salvo que se quede sin espacio), en cambio, la instalación del mismo debe de realizarse con algo de cuidado.

1.3. Versiones de producción y de desarrollo.

Los kernels pueden corresponder a versiones de "producción" o a versiones de "desarrollo". Las versiones 2.0.x, 2.2.x y 2.4.x son versiones de producción, por el contrario, las versiones 2.1.x y 2.3.x son versiones de desarrollo. En forma particular se tiene que, por ejemplo, la versión 2.2.17 o la versión 2.2.18 son versiones de producción, estables y para usuarios finales y las versiones 2.1.1 o 2.1.2 corresponden a versiones de desarrollo, inestables, utilizadas por desarrolladores o por ciertos usuarios que desean probar.

[Important]Importante

No utilice kernels de desarrollo a menos que usted sepa lo que está haciendo.

1.4. Acerca de los módulos

Varias partes de código del kernel pueden compilarse por separado en forma de módulos, dando flexibilidad al sistema. Los módulos no están enlazados directamente en el kernel, siendo necesario insertarlos en él ya sea durante el proceso de arranque o si se quiere, posteriormente, de tal forma que sólo se usan cuando se necesitan, sin utilizar innecesariamente la memoria RAM del sistema.

[Important]Importante

Hay componentes que no deben compilarse como módulos porque son esenciales para hacer posible el arranque del sistema, por ejemplo el soporte para el sistema de archivos ext2, que Linux utiliza en forma predeterminada. Otros componentes si pueden hacerlo, por ejemplo, el soporte para una cierta tarjeta de red.

1.5. Software requerido

Los requisitos de software necesario para compilar el kernel varian considerablemente de una versión mayor del kernel a otra, por ejemplo para compilar un kernel 2.4.x bajo un sistema con kernel 2.2.x. Si es esa su necesidad, es mejor que consulte la nota respecto a la instalación de kernels 2.4.x, en la sección de Introducción de este documento.

Para compilar un nuevo kernel correspondiente a una misma versión mayor del kernel, como es el caso del ejemplo escogido (instalar kernel 2.2.18 bajo Red Hat 6.1/kernel 2.2.12), seguramente no necesitará software adicional al incluido en la distribución Linux que esté empleando.

Para compilar un nuevo kernel generalmente no necesitará software adicional al incluido en la distribución Linux que esté empleando, a menos que se trate de un kernel 2.4.x, caso en el cual es posible que si se lo requiera.

En cualquier caso es recomendable consultar primero el archivo README principal incluido en los fuentes del kernel a instalar bajo el directorio base linux.

[Important]Importante

En particular, para el ejercicio planteado en este documento basado en Debian 2.1 Citius, fue necesario instalar, adicionalmente al software base, el paquete bin86 para lograr el objetivo.

1.6. Tiempo de compilación

El tiempo necesario para compilar es muy variable, dependiendo del computador que se vaya a utilizar. En computadores recientes, por ejemplo en equipos Pentium Celeron o superiores, el proceso toma 10 minutos o menos. Tenga en cuenta que si utiliza computadores poco recientes, por ejemplo en equipos Pentium viejos, 486s y 386s el proceso puede tardar incluso varias horas.

[Important]Importante

El tiempo de compilación puede reducirse a la mitad o menos, si primero se optimiza el disco duro donde se encuentra instalado Linux, utilizando el comando hdparm. Las mejoras en velocidad de lectura/escritura en discos será mayor cuanto más nuevos sean los discos. La optimización de un disco debe realizarse con cuidado ya que existe algún riesgo de malograr los archivos contenidos en el disco. Al final se presentan algunas referencias al respecto. Una vez se consigue optimizar un disco, se configura el sistema operativo para trabajo en modo optimizado en forma permanente.

1.7. Espacio en disco requerido

El espacio necesario para compilar el kernel varía de acuerdo a la versión del kernel a utilizar. Los fuentes del kernel 2.2.18 ocupan cerca de 92 MB, así que para este caso tomado de ejemplo sería bueno disponer de al menos unos 100 MB libres.