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
1º
Normalmente reside en /boot
(o en el directorio raíz) y se denomina (generalmente) vmlinuz-a.b.c-d
.
2º
Es el fichero que se indica al gestor de arranque (bootloader) para que cargue el sistema operativo cuando el equipo arranca.
3º
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.
4º
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
1º
2º
3º
4º
Descarga e instalación del kernel
El kernel de Linux es común a todas las distribuciones, y se descarga desde la página web www.kernel.org. Ahí están disponibles todas las versiones como tarballs 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.
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
Prepatch
Estable
Longterm
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):
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.
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.