LPIC-2 Tema 201.3: gestión en tiempo de ejecución del kernel y solución de problemas

Nueva entrada sobre la serie LPIC-2. Ahora le toca el turno al Tema 201.3, dedicado a la gestión del kernel en tiempo de ejecución y solución de problemas. Eso implica desde saber solucionar algunos problemas básicos durante la ejecución del sistema operativo, hasta otros problemas que se pueden dar durante el arranque.

Los candidatos deberás demostrar sus conocimientos para cargar o descargar módulos del kernel de forma manual, obtener información de ellos, saber sobre el contenido de /boot y /lib/modules/, trabajar con udev y sus reglas, conocer /proc, etc. Todo para tratar de lidiar con algunos problemas frecuentes…

Gestión de módulos

*(Las herramientas de gestión de módulos del kernel ya las describí en el artículo LPIC-1 Tema 101.1.)

Aquí solo me falta comentar acerca del directorio /lib/modules/<versión-kernel>/. Allí es donde encontrarás algunos ficheros como:

  • modules.alias: contiene información de los alias de los módulos y que será usada por los comandos de gestión cuando se les pasa un nombre para que hagan alguna operación sobre él.
  • modules.order:registra el orden en el que aparecen los módulos en Makefiles. Lo usa modprobe para resolver alias que coinciden con múltiples módulos.
  • modules.builtin: enumera todos los módulos integrados en el kernel. Lo usa modprobe para no fallar al intentar cargar un módulo que ya está incorporado.
  • modules.builtin.modinfo: contiene información modificada de todos los módulos integrados en el kernel.
  • Subdirectorios con categorías de los módulos. Dentro de esos subdirectorios se encontrarán los módulos como tal, con extensión *.ko.

Otra ruta interesante que deberías conocer es /lib/modules/<versión-kernel>/modules.dep. En este fichero se establece la relación de dependencia entre los diferentes módulos de tu versión del kernel. Las líneas internas de este fichero tienen este formato:

<NOMBRE_MÓDULO>.ko : <DEPENDENCIAS ...>

Pueden ser muy esclarecedoras para ver si existen problemas de dependencias de algún módulo que esté generando problemas.

Por cierto, como suele haber varios subdirectorios de varias versiones del kernel conforme se ha ido actualizando, puedes usar un comodín para acceder a tu versión actual:

/lib/modules/$(uname -r)

También es importante que conozcas estos otros:

  • /etc/modprobe.conf y /etc/modprobe.d/: fichero de configuración y directorio respectivamente. Contiene la configuración para el comando con su mismo nombre, como puedes imaginar. Como este comando se usa para probar módulos, se necesita una configuración así para que sepa cómo debe utilizar los módulos (dependencias, alias, listas negras,…).

Configuraciones del kernel

El kernel también admite configurar algunos parámetros.  Ya introduje en otros artículos sobre /proc/sys/kernel, donde existe información sobre sysctl. Pero más allá de eso, existen otras rutas que tienes que conocer:

  • /etc/modules.conf o /etc/modules: por lo general, el hardware de una máquina no se suele cambiar frecuentemente, por lo que la configuración será siempre igual. La mayoría de módulos auto detectan su configuración, pero en ciertas ocasiones hay que parametrizarla en este fichero. Aquí es donde buscarán instrucciones herramientas como insmod y rmmod. Las líneas suelen tener el formato:
opción nombre-módulo op1 [op2 ... opn]
  • /etc/sysctl.conf y /etc/systctl.d/: nuevamente tenemos el fichero y el directorio de configuración del kernel o sistema, y va ligado a la herramienta sysctl. Podrás encontrar multitud de opciones, como las de red o referentes a la seguridad, sobre la memoria virtual, de scheduler, Cache Pressure, Swappiness, etc. Todos esos parámetros los puedes los puedes editar en estos ficheros para hacerlos permanentes, o puedes hacerlo con el comando.

En cuanto al comando sysctl, aquí tienes algunos ejemplos:

#Cambiar el valor Swappiness
sudo sysctl vm.swappiness=10

#Modificar el valor de Cache Pressure (-w hace que no sea persistente)
sudo sysctl -w vm.vfs_cache_pressure=50

#Control de IP Forwarding para paquetes (-w hace que no sea persistente)
sysctl -w net.ipv4.ip_forward=1

#Programar el reinicio 10 segundos tras un kernel Panic (-w hace que no sea persistente)
sudo sysctl -w kernel.panic=10

#Para ver todos los parámetros disponibles
sudo sysctl -a

#Para ver un parámetro concreto sin modificar su valor
sysctl net.ipv4.ip_forward

Más información – Ver LPIC-1 Tema 101.1

Obtener información

A parte de gestionar los módulos y de modificar algunas configuraciones, también deberías conocer algunos comandos con los que obtener información que te puede ayudar a detectar problemas.

udev y reglas

Ya he comentado algo en artículos previos sobre udev, udevadmin, y udevmonitor. Además, también comenté sobre las reglas y el contenido del fichero /etc/udev/ y las reglas en este otro.

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto:

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar