🎃 Grandes descuentos en libros en línea, eformaciones y vídeos*. Código CALABAZA30. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. LINUX
  3. El núcleo Linux
Extrait - LINUX Preparación a la certificación LPIC-2 (exámenes LPI 201 y LPI 202) – 5ª edición
Extractos del libro
LINUX Preparación a la certificación LPIC-2 (exámenes LPI 201 y LPI 202) – 5ª edición Volver a la página de compra del libro

El núcleo Linux

Requisitos y objetivos

1. Requisitos

Los conocimientos necesarios para la certificación LPIC-1:

Edición de archivos.

Comandos de gestión de directorios y archivos.

Comandos de compresión y descompresión.

2. Objetivos

Al final de este capítulo, deberá poder:

Comprender el rol y la estructura del núcleo Linux.

Configurar el núcleo en función del material y del rol del sistema.

Compilar e instalar una nueva versión del núcleo.

Administrar los módulos dinámicos del núcleo.

Diagnosticar y resolver los problemas corrientes vinculados al núcleo.

Conocer los principios de detección y de gestión de los periféricos por udev.

El núcleo Linux

Este tema está dividido en tres partes con pesos diferentes.

1. Los componentes del núcleo

Peso

2

Objetivos

Implementar los componentes del núcleo necesarios para el material específico, los drivers, los recursos y las necesidades del sistema. Esto incluye la instalación de diferentes tipos de imágenes del núcleo, la comprensión de las versiones estables y mantenidas a largo plazo del núcleo y de los parches, así como el uso de los módulos del núcleo.

a. Competencias principales

Documentación de las versiones del núcleo 2.6.x, 3.x y 4.x.

b. Elementos empleados

  • /usr/src/linux/

  • /usr/src/linux/Documentation/

  • zImage

  • Compresión xz

2. Compilación del núcleo

Peso

3

Objetivos

Configurar un núcleo incluyendo o excluyendo funcionalidades dependiendo de las necesidades del sistema. Esto incluye compilar y recompilar el núcleo si fuera necesario, actualizar y documentar las modificaciones de un nuevo núcleo, crear una imagen initrd e instalar nuevos núcleos.

a. Competencias principales

  • /usr/src/linux/

  • Archivos Makefile del núcleo.

  • Objetivos make para los núcleos 2.6.x, 3.x y 4.x.

  • Personalizar la configuración del núcleo actual.

  • Construir un nuevo núcleo y los módulos apropiados.

  • Instalar un nuevo núcleo con sus módulos.

  • Comprobar que el gestor de arranque puede acceder al nuevo núcleo y a los archivos asociados.

  • Archivos de configuración de los módulos....

Los componentes del núcleo

El núcleo Linux se encarga de administrar los recursos materiales de la máquina y de ponerlos a disposición de los diferentes programas que se ejecutan en esta máquina. De entre sus principales tareas, podemos citar:

  • Gestión del o de los microprocesadores: da acceso al procesador o a los procesadores a los diferentes programas, en función de su prioridad para que todos puedan acceder al recurso y que un programa no monopolice el o los procesadores (multitarea apropiativa).

  • Gestión de dispositivos: junto con los drivers de los dispositivos (drivers), gestiona los diferentes dispositivos de software y trata las solicitudes de los programas que quieren acceder a ellos.

  • Gestión de la memoria física y virtual: determina el reparto de memoria entre él mismo y los programas, y gestiona un mecanismo de memoria virtual que permite asignar más memoria de la que dispone físicamente la máquina.

  • Gestión del almacenamiento: gestiona el conjunto de los dispositivos de almacenamiento (con drivers de dispositivos y drivers de sistemas de archivos) y presenta a los programas una interfaz de acceso único, bajo la forma de una arborescencia de directorios y de archivos, construida a partir de diferentes sistemas de archivos.

  • Gestión de la red: toma en cuenta la comunicación en las redes en las que la máquina participa, a través de la tarjeta de interfaz de red y de sus drivers y permite que los diferentes programas emitan y reciban mensajes.

  • Gestión de los procesos: asegura la carga, la ejecución, el control y la finalización de los programas, bajo la forma de procesos, lo que les permite ejecutarse en simultaneidad aparente o real (según las capacidades del procesador de la máquina). Gestiona la seguridad mediante el control del acceso a los recursos en función de las habilitaciones de los procesos y a través del aislamiento de las zonas de memoria que le son asignadas.

  • Gestión del control de acceso a los recursos: con un modelo de seguridad basado en las nociones de cuenta de usuario y de grupo, proporciona un mecanismo que permite definir y controlar los permisos de acceso a los diferentes recursos que gestiona.

Para realizar estas tareas, el núcleo puede usar módulos de tipo software especializados, que pueden estar incluidos...

Compilación del núcleo

No es muy frecuente compilar una nueva versión del núcleo a partir de los archivos fuente. Esto puede ir en contra del contrato de soporte de la distribución usada.

Sin embargo podemos querer modificar los parámetros del núcleo, añadir o quitar componentes estáticos o módulos dinámicos, para integrar nuevos tipos de dispositivos, corregir algunos errores u optimizar el rendimiento y la ocupación de la memoria.

En este caso, el procedimiento que se tiene que seguir presenta distintas etapas, la configuración del núcleo que se generará es la más delicada. La compilación efectiva puede durar algunas decenas de minutos, o incluso más tiempo según el tipo de procesador y la memoria disponible. Cuando el nuevo núcleo haya sido generado, hay que probarlo con mucho cuidado antes de considerar ponerlo en producción.

1. Descarga de las fuentes del núcleo

Los archivos fuentes del núcleo están disponibles bajo dos formas: paquetes de software o archivos comprimidos.

a. Paquete

La distribución de la máquina objetivo proporciona generalmente paquetes de software que contienen los archivos fuentes del núcleo soportado por su versión de distribución. Si el paquete corresponde a la versión que desea compilar, es el método que deberá usar preferiblemente.

Los archivos fuentes del núcleo se instalarán en uno de los directorios en /usr/src/kernels o en el directorio /usr/src/linux*, el nombre del directorio corresponderá a la versión del núcleo.

Distribuciones de tipo Red Hat

A menudo, la compilación del núcleo está vinculada con un módulo del núcleo y no con el núcleo completo.

En este caso, las distribuciones de tipo Red Hat proponen un paquete de software adaptado: kernel-devel.

Si necesita compilar una versión personalizada del núcleo, tendrá que usar el método por archivo comprimido.

Ejemplo

Instalación del paquete kernel-devel en una distribución RHEL 8.5:

dnf install kernel-devel 
Se ha instalado el paquete kernel-devel-4.18.0-372.19.1.el8_6.x86_64. 
Resolviendo dependencias. 
¡Listo!. 

La versión del núcleo es algo más reciente que el del sistema:

uname...

Gestión y depuración del núcleo

Este tema es relativo al seguimiento y a la configuración dinámica del núcleo y sus módulos dinámicos. Estudiaremos diferentes comandos y herramientas que permiten listar, cargar y descargar los módulos LKM, visualizar y modificar dinámicamente los parámetros de los módulos y del núcleo, y forzar esos parámetros para aplicarlos durante el arranque del sistema.

El servicio udev y los comandos que permiten seguir el estado de los dispositivos detectados por el sistema son tratados en la sección Gestión de los discos duros locales del capítulo Administración avanzada de dispositivos de almacenamiento.

1. Gestión de los módulos de núcleo LKM

Los módulos de núcleo dinámicos (LKM, Loadable Kernel Module), definidos en la compilación del núcleo, son gestionados automáticamente. Algunos, necesarios durante la carga y la inicialización del núcleo, se cargan en memoria mediante el archivo de disco virtual initramfs. El núcleo carga también sistemáticamente durante el arranque todos los módulos específicados en un archivo de configuración.

Otros módulos se cargan en el momento que sean solicitados, la primera vez que un programa hace una llamada al sistema cuando necesita su uso. Por otro lado, se pueden descargar de la memoria los módulos que ya no estén siendo utilizados.

Si una aplicación necesita la carga de un módulo que no ha sido tomado en cuenta por el núcleo, éste generará un error en respuesta a su solicitud. Para que la aplicación pueda funcionar, habrá que copiar el archivo del módulo en el sistema (si todavía no se ha hecho), cargarlo manualmente y configurarlo en carga automática.

Distintos comandos y archivos de configuración permiten controlar el funcionamiento de los módulos, gestionar su carga y descarga, así como sus parámetros.

a. Ubicacion de los módulos

Los archivos que contienen el código ejecutable de los módulos están almacenados en la arborescencia en /lib/modules. Cada versión del núcleo instalado en el sistema tiene su propio directorio de almacenamiento de los módulos.

Ejemplo

Version del núcleo...

Validación de lo aprendido: preguntas/respuestas

Responda a estas preguntas abiertas, parecidas a las que le harán en el examen de la certificación, pero estas últimas serán de tipo test o pidiéndole una respuesta corta que introducirá mediante el teclado. 

1. Preguntas

1 ¿Cómo determinar si un archivo imagen del núcleo es de tipo bzImage o zImage?

2 ¿Qué significa LKM?

3 Desde un terminal remoto en modo consola, ¿cuál es el comando más práctico para generar el archivo .config del núcleo que se quiere generar?

4 ¿Qué comando o comandos pueden ser utilizados para crear un archivo de disco virtual de arranque?

5 ¿En qué directorio se encuentran los módulos del núcleo?

6 ¿Cuál es el rol del comando rmmod?

7 El comando insmod ext4 falla cuando intenta cargar un módulo. ¿Por qué?

8 ¿Para qué sirve el comando depmod?

9 ¿Qué comando da la lista y el valor actual de todos los parámetros del núcleo y de los módulos?

10 ¿Para qué sirve la línea alias ext3 ext4 en un archivo de configuración de tipo sysctl.conf?

11 ¿Qué comando muestra la información de los buses USB y de los dispositivos que están conectados a ellos?

2. Resultado

En las páginas siguientes encontrará...

Trabajos prácticos

Aquí se proponen ejercicios para implementar algunos de los puntos abordados en el capítulo. En cada uno de ellos se da un ejemplo comentado de la realización del ejercicio, que deberá adaptar a la configuración de sus sistemas.

1. Gestión de un módulo de núcleo LKM

En un sistema donde corre una distribución Debian, decidimos comprobar el funcionamiento del módulo dinámico de gestión de los sistemas de archivos de tipo Btrfs.

Para ello, utilizamos una memoria USB (o un espacio de almacenamiento disponible) para crear un sistema de archivos de tipo Btrfs. Iremos comprobando poco a poco el comportamiento en las operaciones del módulo dinámico correspondiente.

Comandos y archivos útiles

  • /proc/modules

  • lsusb

  • blkid

  • mkfs

  • mount

  • umount

  • lsmod

  • modinfo

  • modprobe

  • /lib/modules

Etapas

1.

Compruebe que el módulo de gestión de los sistemas de archivos de tipo Btrfs no está cargado en memoria. Compruebe que forma parte de los módulos instalados.

2.

Después de haber insertado la memoria USB, muestre su información, especialmente su archivo especial asociado.

3.

Cree un sistema de archivos de tipo Btrfs en la memoria USB.

4.

Compruebe que el módulo de gestión de los sistemas de archivos de tipo Btrfs haya sido automáticamente cargado en memoria.

5.

Descargue el módulo de la memoria.

6.

Monte el sistema de archivos de la memoria USB en la arborescencia global. Compruebe que el módulo de gestión de los sistemas de archivos de tipo Btrfs esté cargado en memoria. Intente descargarlo. 

7.

Desmonte el sistema de archivos. Descargue el módulo btrfs. Renombre su archivo en el directorio de los módulos. Intente montar de nuevo el sistema de archivos de la memoria USB en la arborescencia global. Corrija el problema.

Resumen de los comandos y resultados en pantalla

1.

Compruebe que el módulo de gestión de los sistemas de archivos de tipo Btrfs no está cargado en memoria. Compruebe que forma parte de los módulos instalados.

El servidor srvdebian (distribución Debian 11) no tiene ningún sistema de archivos de tipo Btrfs, el módulo no debería estar cargado en memoria.

Usamos el pseudoarchivo /proc/modules para asegurarnos:

root@srvdebian:~# grep -i btrfs /proc/modules   

El módulo...