Knowledge Administración de Sistemas Administración de Sistemas
Este material didáctico forma parte del Curso online de Administración Avanzada de Linux (LPIC-2)

El kernel de Linux y sus módulos

Como ya sabrá, el kernel es el software que sirve de puente entre el hardware y el resto de funciones del sistema operativo, que maneja el sistema de ficheros, el acceso a la red y otras tareas de bajo nivel que son críticas para el rendimiento.

El kernel está formado por un fichero principal, que

Normalmente reside en /boot (o en el directorio raíz) y se denomina (generalmente) vmlinuz-a.b.c-d

Es el fichero que se indica al gestor de arranque En gestor de arranque (en inglés «bootloader») es un programa sencillo que no tiene la totalidad de las funcionalidades de un sistema operativo, y que está diseñado exclusivamente para preparar todo lo que necesita el sistema operativo para funcionar. Normalmente se utilizan los cargadores de arranque multietapas, en los que varios programas pequeños se suman los unos a los otros, hasta que el último de ellos carga el sistema operativo. ( bootloader Un gestor de arranque (en inglés «bootloader») es un programa sencillo que no tiene la totalidad de las funcionalidades de un sistema operativo, y que está diseñado exclusivamente para preparar todo lo que necesita el sistema operativo para funcionar. Normalmente se utilizan los cargadores de arranque multietapas, en los que varios programas pequeños se suman los unos a los otros, hasta que el último de ellos carga el sistema operativo. ) para que cargue el sistema operativo cuando el equipo arranca.

Bastaría con indicar en el gestor de arranque un kernel diferente y reiniciar el equipo para cambiar de kernel si varios están instalados.

Normalmente se le añade al nombre de fichero el número de versión, de manera que se pueden almacenar varios kernel aunque sólo uno de ellos esté operativo.

Además de este fichero, se instalan varios módulos de kernel,  que normalmente se encuentran en /lib/modules

Un módulo del kernel es un archivo que contiene código objeto que puede extender al kernel.
Son generalmente utilizados para brindar soporte a nuevos dispositivos de hardware o nuevos sistemas de ficheros, así como para agregar llamadas al sistema.
Cuando la funcionalidad provista por un módulo del núcleo deja de ser requerida, normalmente éste puede ser descargado, liberando su memoria.
Un ejemplo típico de módulo cargable son los Controladores de Dispositivo (drivers).

Descarga e instalación del kernel

El kernel de Linux es común a todas las  distribuciones Una distribución Linux (coloquialmente llamada distro) es una distribución de software basada en el núcleo Linux que incluye determinados paquetes de software para satisfacer las necesidades de un grupo específico de usuarios, dando así origen a ediciones domésticas, empresariales y para servidores. Por lo general están compuestas, total o mayoritariamente, de software libre, aunque a menudo incorporan aplicaciones o controladores propietarios. Además del núcleo Linux, las distribuciones incluyen habitualmente las bibliotecas y herramientas del proyecto GNU y el sistema de ventanas X Window System. Existen distribuciones que están soportadas comercialmente, como Fedora (Red Hat), openSUSE (Novell), Ubuntu (Canonical Ltd.), Mandriva, y distribuciones mantenidas por la comunidad como Debian y Gentoo. , y se descarga desde la página web www.kernel.org. Ahí están disponibles todas las versiones como tarballs El programa tar, es usado para almacenar archivos y directorios en un solo archivo. El fichero resultante tiene la extensión .tar y se denomina coloquialmente "tarball". de código fuente, que se compilan e instalan como cualquier otro software. Tal vez es necesario reconfigurar el boot loader para que localice el nuevo fichero de arranque del sistema operativo, y siempre es necesario reiniciar el sistema para que se apliquen las actualizaciones de kernel.

También es posible descargar actualizaciones (patch) del kernel actual a la versión inmediatamente siguiente, y aplicarlos con el comando patch al código fuente del kernel actual desde el directorio de dicho kernel.


#gzip -cd ../patch-version.gz | patch -pl
 

A continuación, se compila e instala el kernel actualizado como cualquier otro kernel. La descarga del parche siempre será más rápida que la de un kernel completo.

Tenga cuidado siempre de aplicar sólo parches correspondientes a la versión actual de kernel, y no a otra. Para conocer cuál e la versión del kernel actual, se utiliza el comando
#uname -r

Versiones del Kernel

La versión viene indicada por una cadena de 4 número (a.b.c-d) en el nombre del fichero de kernel. El tercer número identifica una nueva "release", con nuevas funcionalidades, mientras que  cambios en el último número indican simplemente que se han solucionado algunos errores (bugs). Las versiones del kernel se dividen en varias categorías:

Mainline
El árbol principal de actualizaciones del kernel es mantenido por Linus Torvalds. Las versiones mainline corresponden al desarrollo de nuevas funcionalidades, y se liberan cada 2-3 meses.
Prepatch
Corresponden a pre-lanzamientos de versiones mainline dirigidas a desarrolladores y entusiastas de Linux. No es aconsejable instalarlas en un sistema de producción, y su finalidad es la de que las nuevas funciones sean probadas por la comunidad antes de ser incluidas en una versión estable. Las versiones prepatch también son mantenidas y divulgadas por Linus Torvalds.
Estable
Después de una versión mainline se libera, se la considera "estable". Las correcciones de errores para un núcleo estable son portadas desde el árbol principal mantenido por Linus Torvalds y asignadas a otro desarrollador. Por lo general hay sólo unas pocas versiones del kernel de corrección de errores hasta que el núcleo principal siguiente está disponible - a menos que se designe un kernel de mantenimiento a largo plazo (longterm).
Longterm
Desde el árbol principal de actualizaciones se abren otras líneas de mantenimiento de versiones con el fin de proporcionar soporte a quienes no actualizan a versiones más nuevas. Solamente se aplican las correcciones más importante a esos núcleos y no suelen ser muy frecuentes, sobre todo para los árboles más viejos. Hay un desarrollador (maintainer) encargado de cada línea de mantenimiento que sale de la línea principal.

Gráficamente, se puede explicar de la siguiente manera:

En la siguiente tabla (extraída de kernel.org) se muestran cuáles son las líneas Longterm abiertas en el momento de editar este  curso, quién es su desarrollador (maintainer) encargado, y cuál es la fecha prevista de finalización del mantenimiento (EOL, end-of-line):

Versión Desarrollador Fecha EOL
3.4 Greg Kroah-Hartman Octubre 2014
3.2 Ben Hutchings 2016
3.0 Greg Kroah-Hartman Octubre 2013
2.6.34 Paul Gortmaker Mediados 2013
2.6.32 Willy Tarreau Mediados 2014

El código fuente del kernel instalado en nuestro sistema se encuentra normalmente en /usr/src/linux. Es recomendable conservarlo este directorio incluso después de haber compilado e instalado el kernel, ya que contiene un directorio con la documentación asociada a dicho kernel, que nos puede ser de utilidad a la hora de necesitar un nuevo driver, por ejemplo. También es posible que instalemos software a partir de sus fuentes, que utilice alguna de las librerías declaradas en el kernel, y serían necesarias para poder compilarlo.

En la práctica, cada distribución de Linux pone a disposición actualizaciones propias del kernel, que no se obtienen desde kernel.org, sino que se distribuyen como cualquier otra actualización del sistema operativo. Estas actualizaciones son independientes a las mencionadas anteriormente, y por lo general se instalan a partir de paquetes (yum, rpm...) denominados linux-source, kernel-devel, linux-headers, kernel-headers (para las librerías), etc. En este caso, la actualización del kernel se hace de la misma manera que el resto de actualizaciones del sistema operativo, o paquetes de otras aplicaciones.
 

Este contenido didáctico abierto está extraído del Curso online de Administración Avanzada de Linux (LPIC-2).

Amplía tus conocimientos con el Curso Online de Administración Avanzada de Linux (LPIC-2)

Puedes continuar ahora la formación matriculándote en el curso, o si lo prefieres, consultar nuestro catálogo con cerca de 400 actividades formativas acreditadas.

Benefíciate del crédito para formación bonificando el curso.

Este sitio web utiliza cookies de terceros con la finalidad de analizar el uso que hace de nuestra web y personalizar el contenido de los anuncios. Si continúa navegando entendemos que acepta su uso. Más información