Herramientas de usuario

Herramientas del sitio


informatica:certificaciones:lpic:lpic-2:201_linux_kernel:201.1_kernel_components

201.1: Kernel Components

Perteneciente a LPI Topic 201: Linux Kernel.

  • Weight: 2
  • Description: Candidates should be able to utilize kernel components that are necessary to specific hardware, hardware drivers, system resources and requirements. This objective includes implementing different types of kernel images, identifying stable and development kernels and patches, as well as using kernel modules.
  • Key Knowledge Areas:
    • Kernel 2.6.x, 3.x and 4.x documentation
  • Terms and Utilities:
    • /usr/src/linux/
    • /usr/src/linux/Documentation/
    • zImage
    • bzImage
    • xz compression

El kernel de Linux es el responsable de la gestión del hardware. Es el núcleo del sistema donde se detecta todo el hardware y se cargan los controladores que sirven para que el hardware se comunique con el sistema.

Actualmente, el kernel tiene una estructura modular y solo se cargan en memoria los módulos necesarios para el correcto funcionamiento del sistema (originalmente el diseño del kernel era monolótico, es decir, contenía todos los controladores sin importar si el sistema utilizaba ese hardware)

Componentes del kernel:

  • El núcleo del kernel.
  • Módulos
  • Ramdisk (memoria para descomprimir el kernel en el momento en que se ejecuta)

Cuando se almacenan en disco, la mayoría de las imágenes del kernel se comprimen para ahorrar espacio. Hay dos tipos de compresión del kernel:

  • zImage: tiene un tamaño máximo de 502 kB (loaded into low memory)
  • bzImage: no tiene límite de tamaño, preferido para los kernel grandes (loaded into high memory)

Tanto zImage como bzImage utilizan la compresión gzip. El bz de bzImage se refieres a big zImage, no al algoritmo de compresión bzip.

Cuando se arranca el equipo, al llegar al cargador de arranque (GRUB, por ejemplo), este selecciona el kernel adecuado y lo descomprime sobre la ramdisk.

Nomenclatura del kernel

El kernel de Linux lo encontramos en un archivo llamado vmlinuz-A.B.C-D dentro de la partición /boot.

Hay 3 esquemas diferentes para la numeración de versiones:

  • Hasta la 2.6.0:
    • A: major release
    • B: minor release (número par: estable; impar: desarrollo)
    • C: patch level
  • Desde 2.6.0 hasta 3.0
    • C: número incrementado cada 2 o 3 meses
    • D: solución de bugs e incidencias de seguridad
  • Versión 3.0 y 4:
    • B: version number
    • C: patch level.

Para saber la versión del kernel en uso:

uname -r

Más información:

uname -a

Fuentes del kernel

Si queremos hacer nosotros la compilación del kernel, necesitamos descargar su código fuente que normalmente se almacenará en /usr/src/<VERSION_KERNEL>

Una buena práctica es crear un enlace a /usr/src/linux ya que es el directorio donde algunas utilidades buscarán los ficheros con el código fuente.

Para descargar las fuentes del kernel: https://www.kernel.org/

La documentación estaría en /usr/src/<VERSION_KERNEL>/Documentation

Categoría de lanzamientos de kernel

Ediciones sobre las que se lanzan los kernels:

  • Prepatch: aún en pruebas (ya no existe desde la rama 3.x)
  • Mainline: línea principal (ya no existe desde la rama 3.x)
  • Stable: estable
  • Longterm:

Módulos

Son como los drivers (controladores), programas que nos permitirán que el sistema detecte y se comunique con el hardware.

Los módulos se pueden cargar dinámicamente, es decir, con el kernel funcionando, podemos decidir qué módulos cargar.

Tiene extensión ko y se almacenan en /lib/modules/<VERSION_KERNEL>. Por ejemplo, para ver un módulo para un dispositivo puente de red: /lib/modules/4.19.0-14-amd64/kernel/net/bridge/bridge.ko

La configuración de los módulos para una versión del kernel instalada se encuentra en /boot/config-kernel-<VERSION_KERNEL>

RAM disk

Sistema de ficheros temporal sobre el que se descomprime el kernel al arrancar. Este disco virtual es el fichero initrd.img-<VERSION_KERNEL> (Debian) o initramfs-<VERSION_KERNEL> (Red Hat)

Es usado típicamente para hacer los arreglos necesarios antes de que el sistema de ficheros raíz pueda ser montado.

Hay dos versiones de ramdisk: initrd o initramfs

informatica/certificaciones/lpic/lpic-2/201_linux_kernel/201.1_kernel_components.txt · Última modificación: por tempwin