Cómo ver y navegar por la fuente del núcleo de Linux?

Cómo ver y navegar por la fuente del núcleo de Linux?

Este artículo explica brevemente que el kernel de Linux es y cómo navegar por su código fuente.

Este tutorial está optimizado para usuarios y programadores de Linux sin experiencia que desean leer el código fuente del núcleo o convertirse en desarrolladores de kernel de Linux. El núcleo de Linux es universal; Por lo tanto, el presente documento es útil para todas las distribuciones de Linux.

Al leer este artículo, comprenderá cuál es el núcleo, cómo está estructurado y cómo navegar a través de sus componentes. Este artículo se escribió inicialmente en 2019 y se actualizó en 2022.

¿Cuál es el núcleo de Linux y cómo navegarlo?

El kernel de Linux es el componente principal que permite la interacción entre el software y el hardware con la ayuda de los controladores de dispositivos. Puede pensar en el kernel de Linux como un traductor que permite la comunicación entre programas, el hardware y la interfaz de usuario.

Aprender a navegar por el núcleo de Linux es el primer paso para cualquier programador que quiera convertirse en desarrollador de kernel. También es útil para programadores o usuarios que desean leer su código fuente o modificarlo.

La estructura del núcleo de Linux

El núcleo de Linux está estructurado con directorios y subdirectorios conocidos como "Árbol del núcleo", los usuarios pueden navegar para acceder a secciones específicas de todo el código. Esto permite a los usuarios y desarrolladores centrarse en partes específicas del código.

Excepto por la distribución de Slackware Linux, cuyo kernel es mantenido por una sola persona, el resto de las grandes tareas de división de la comunidad de los desarrolladores de las distribuciones de Linux basadas en el árbol del núcleo. En contraste, varios desarrolladores se centran en los conductores, otros se centran en la seguridad y otros en la virtualización.

El árbol fuente del núcleo es la siguiente estructura descrita a través de la cual los usuarios pueden explorar el código fuente:

Ver y navegar el código fuente del núcleo de Linux

Por lo general, cuando instalamos Linux, no incluimos el código fuente. Podemos instalar Linux y mantener el código fuente en nuestro sistema. Pero la mayoría de los usuarios lo descartan para descargar una imagen ISO más pequeña. Después de todo, puede descargar el código fuente más tarde si lo necesita.

Si el código fuente del núcleo está presente en su sistema, puede encontrarlo en el directorio/usr/src/linux-, donde debe reemplazarse con la versión del núcleo del código fuente con la que está tratando.

También puede encontrar el último código fuente del núcleo en https: // github.com/Torvalds/Linux.

Como puede ver en la captura de pantalla anterior o en la URL proporcionada, dentro del árbol del código fuente, podemos encontrar los siguientes directorios y archivos principales:

  • arco: Este directorio contiene códigos de origen para diferentes arquitecturas de sistemas compatibles con el núcleo de Linux.
  • bloquear: El directorio de capa de E/S de bloque contiene código para la administración de dispositivos de bloque (como discos duros, DVD, disquetes, etc.) y sus solicitudes.
  • certs: El directorio CERTS contiene certificados y archivos de firma para permitir las firmas del módulo para que el núcleo cargue módulos firmados. Esto puede ser útil para evitar que el código malicioso se ejecute dentro de los módulos del núcleo como RootKits.
  • PROCESO DE COPIAR: Este archivo tiene información sobre licencias para el código fuente
  • Créditos: Una lista parcial de personas que han contribuido al código fuente del núcleo de Linux
  • Cripto: Este directorio contiene cifras criptográficas, que manejan tareas criptográficas y de compresión.
  • Documentación: Como su nombre indica, este directorio incluye toda la documentación sobre todos los componentes del núcleo.
  • conductores: El directorio de controladores contiene código fuente para que los controladores de dispositivos admitan hardware. Dentro de este directorio, encontrará subdirectorios para cada hardware, como video, Bluetooth, etc. (Cualquier hardware compatible).
  • FS: Este directorio contiene fuentes para sistemas de archivos, incluidos sistemas de archivos virtuales, además de sistemas de archivos de lectura y escritura.
  • incluir: Este directorio contiene encabezados C para archivos de kernel, como funciones para compilar el código.
  • en eso: El directorio de inicio contiene el código fuente relacionado con el proceso de arranque y la inicialización del kernel de Linux. El código fuente se almacena en un archivo llamado MainC.c dentro del directorio /init. El código inicializa el kernel y algunos procesos iniciales.
  • IPC: Comunicación entre procesos, como señales y tuberías.
  • Cebo: El archivo kbuild indica archivos de objeto para vmlinuz.
  • Kconfig: El archivo kconfig se usa para deshabilitar o habilitar las funciones del kernel. Los usuarios se ocupan de ejecutar el comando "hacer menuconfig".
  • núcleo: El directorio del núcleo incluye subsistemas centrales, como el código de manejo de la señal de programador.
  • lib: Este directorio incluye rutinas de biblioteca, operaciones de cadena comunes, operaciones dependientes de hardware, rutinas de depuración y código de análisis de línea de comandos.
  • Licencias: Contiene las licencias que se aplicarán a la fuente del núcleo y los archivos de origen individual, que pueden tener diferentes licencias. Dentro de este directorio, encontrará cuatro subdirectorios principales que contienen licencias compatibles como LGPL-X, Licencia Apache, etc.
  • Mantainers: El archivo de mantenedores muestra la lista de mantenedores del kernel y las instrucciones para enviar cambios en el kernel.
  • Makfile: Este archivo lee el .Archivo de configuración y construye módulos y vmlinux.
  • mm: El kernel de Linux administra hardware y memoria virtual (intercambio). Este es el directorio donde se almacena el código fuente para la gestión de la memoria.
  • neto: El directorio neto contiene la pila de red. Aquí, puede encontrar un código relacionado con protocolos de comunicación, como IP, TCP y UP.
  • Readme: El archivo ReadMe se refiere a guías para desarrolladores de núcleos en el directorio de documentación descrito anteriormente.
  • Muestras: El directorio de muestras incluye el código de muestra del núcleo y los archivos de configuración.
  • guiones: Aquí se almacenan los scripts necesarios para construir el kernel de Linux.
  • seguridad: El subdirectorio de seguridad contiene el marco de seguridad de Linux (Selinux) mejorado con seguridad (Selinux).
  • sonido: Aquí, puede encontrar el subsistema de sonido, que incluye controladores de sonido, arquitecturas de controladores y código relacionado con el sonido, como ALSA.
  • herramientas: Aquí hay herramientas para el desarrollo de núcleo comprimido, como ACPI, CGROUP, herramientas de prueba USB, Módulo de prueba VHOST, herramientas GPIO, IIO y SPI, y herramienta de política internos.
  • USR: Aquí, USR almacena el initramfs, que arraigue el sistema de archivos e init en el caché de memoria del núcleo. El código incluido le permite ejecutar el código en el espacio de usuario en el proceso de arranque cuando el kernel no está completamente cargado.
  • virtud: El directorio de virtualización contiene el módulo KVM (kernel virtual máquina) para hipervisores, incluidas las arquitecturas.

Estos son todos los archivos y directorios principales incluidos en el directorio de origen principal del kernel. Puede navegar por cada sección dependiendo de sus necesidades. Una vez que comprende el propósito de todos los archivos y directorios enumerados anteriormente, los subdirectorios son bastante intuitivos.

Conclusión

Como puede ver, este artículo fue escrito para usuarios novedosos y medianos para comprender los conceptos básicos del núcleo de Linux. Sin embargo, es necesario cierto conocimiento sobre el desarrollo bajo las características de Linux, Hardware y del sistema operativo para uso práctico. La conferencia anterior es excelente como introducción a la estructura del núcleo de Linux y la distribución de Linux. Tenga en cuenta que el núcleo de Linux evoluciona periódicamente. Por eso mantenemos el contenido descrito anteriormente actualizado.

Esperamos que hayas encontrado este artículo útil. Sigue leyendo Linuxhint para más artículos profesionales de Linux.