Módulo de núcleo Hola mundo

Módulo de núcleo Hola mundo
Este es el artículo para la persona que recién comienza con los módulos de kernel de Linux. Emplearemos el código de ejemplo de muestra para este módulo y el makfile que se utilizará para compilar el módulo del núcleo. Más tarde, pasaremos por los pasos para ejecutar el módulo del núcleo y ver la salida del módulo "Hello World".

Módulo "Hola mundo":

Este es un módulo de núcleo simple, que cuando se inserta en el núcleo de Linux, imprimirá el mensaje como "Hello World". Y al eliminarlo imprimirá el mensaje como "Bye Bye World!". Estas son las dos funciones que apoyaremos en el módulo del núcleo "Hello World".

Ejemplo de código de ejemplo para el módulo del núcleo:

#incluir
#incluir
#incluir
MODULE_LICENSE ("GPL");
Módulo_description ("Hola mundo!");
static int __init hello_init (void)

printk (kern_info "Hello World \ n");
regresar 0;

void estático __exit hello_exit (void)

printk (kern_info "Bye Bye World \ n");

módulo_init (hello_init);
MODULE_EXIT (Hello_Exit);

Muestra de makefile para compilar el módulo del núcleo:

obj-M = Hello-World.O
todo:
Módulos de make -c/lib/modules/$ (shell uname -r)/build/m = $ (pwd)
limpio:
hacer -c/lib/módulos/$ (shell uname -r)/construir m = $ (pwd) limpio

Pasos para compilar el módulo del núcleo:

Copie ambos fragmentos de código anteriores al mismo directorio en el host de compilación como se muestra a continuación:

Sushilrathore-2: ~/Hello-World $ LS
Hola Mundo.C Makefile
Sushilrathore-2: ~/Hello-World $

Ejecute el comando Make como se muestra a continuación y veremos los registros como se muestra a continuación:

Sushilrathore-2: ~/Hello-World $ Make
hacer -c/lib/módulos/4.15.0-163-Generic/Build/M =/Home/Cienauser/Hello-World Módulos
hacer [1]: ingresar directorio '/usr/src/linux-headers-4.15.0-163-Genérico '
CC [M]/Home/Cienauser/Hello-World/Hello-World.O
Módulos de construcción, etapa 2.
Módulos modpost 1
CC/Home/Cienauser/Hello-World/Hello-World.modificación.O
Ld [m]/home/cienauser/hello-world/hello-world.KO
hacer [1]: dejar el directorio '/usr/src/linux-headers-4.15.0-163-Genérico '
Sushilrathore-2: ~/Hello-World $

De los registros anteriores, podemos ver que hemos ejecutado el comando Make y obtendremos algunos archivos creados en el mismo directorio donde tenemos C y Makefile. "Hola Mundo.KO ”es el archivo que deberíamos estar mirando. Este es el archivo de objeto de kernel. Este es el módulo que insertaremos en el kernel de Linux.

Pasos para agregar el módulo Hello-World al kernel de Linux:

El comando INSMOD se puede usar para insertar el módulo del núcleo en el kernel de Linux. El siguiente es el registro que muestra el proceso de uso del INSMOD.

Sushilrathore-2: ~/Hello-World $ sudo Insmod Hello-World.KO
Sushilrathore-2: ~/Hello-World $

Pasos para ver el mensaje impreso por Hello-World:

"DMESG" es que el comando se puede usar para ver la salida del módulo Hello World Kernel. El siguiente es el registro que muestra el proceso de uso del comando dmesg.

Sushilrathore-2: ~/Hello-World $ sudo dmesg | Grep -i hola
[10500712.434672] Hola mundo
Sushilrathore-2: ~/Hello-World $

Arriba está el proceso de agregar dinámicamente el módulo del núcleo. Se compila fuera de la imagen del núcleo y en tiempo de ejecución se agrega a la imagen del núcleo. De esta manera mientras el núcleo se está ejecutando, podemos expandir la funcionalidad del núcleo.

Linux proporciona esta forma de extender las funciones del kernel sin derribar el sistema. El usuario debe tener mucho cuidado al escribir dichos módulos. Mientras descarga el módulo del núcleo, el usuario debe liberar cuidadosamente todos los recursos que se asignaron cuando se cargó el módulo.

Hello World Module también se puede agregar como parte de la imagen del kernel. Si el usuario quiere agregar la aplicación Hello World como parte de la imagen del kernel.

Se pueden seguir los siguientes pasos para lograrlo:

  1. Identificar la ruta en el árbol del núcleo donde se debe agregar esto.
  2. Modifique el kconfig para introducir el nuevo módulo.
  3. Modifique el makfile para agregar el nuevo módulo.
  4. Actualice el archivo de configuración si el módulo se agregará en función de algún archivo de configuración.

Cómo compilar el módulo que se agregó en estos 4 pasos.

Kernel MakeFile define el "módulos" como objetivo de compilación que se puede usar para construir todos los módulos en el núcleo de Linux. Una vez que el usuario emite los "módulos de fabricación", nuestro módulo Hello World/New también se compila y obtenemos el .archivo ko del módulo.

Esta forma de compilación es fácil cuando tenemos la necesidad de construir el núcleo completo y nuestro módulo que queremos agregar en el sistema como módulo cargable.

Conclusión

Hemos discutido el módulo de núcleo Hello World simple y las diferentes formas de compilar el módulo.

También hemos discutido las formas de agregar el módulo al núcleo de Linux. También nos referimos al código de ejemplo y a MakeFile para la compilación. Además, hemos demostrado los conceptos con los registros experimentales.