Modulo kernel Hello World

Modulo kernel Hello World
Questo è l'articolo per la persona che ha appena iniziato i moduli del kernel Linux. Utilizzeremo il codice di esempio di esempio per questo modulo e il makefile da utilizzare per compilare il modulo del kernel. Più tardi, passeremo attraverso i passaggi per eseguire il modulo del kernel e per visualizzare l'output dal modulo "Hello World".

Modulo "Hello World":

Questo è un semplice modulo del kernel, che se inserito al kernel Linux, stamperà il messaggio come "Hello World". E al rimozione stamperà il messaggio come "ciao!". Queste sono le due funzioni che sosterremo nel modulo kernel "Hello World".

Esempio di codice di esempio per il modulo del kernel:

#includere
#includere
#includere
Module_license ("GPL");
Module_description ("Hello World!");
static int __init hello_init (void)

printk (Kern_info "Hello World \ n");
restituzione 0;

statico void __exit hello_exit (void)

printk (kern_info "ciao ciao world \ n");

module_init (hello_init);
module_exit (hello_exit);

Campione makefile per compilare il modulo del kernel:

OBJ-M = Hello-World.o
Tutto:
make -c/lib/moduli/$ (shell uname -r)/build/m = $ (pwd) moduli
pulito:
fare -c/lib/moduli/$ (shell uname -r)/build m = $ (pwd) pulito

Passi per compilare il modulo del kernel:

Copia entrambi lo snippet di codice sopra nella stessa directory nell'host di build come mostrato di seguito:

Sushilrathore-2: ~/Hello-World $ ls
Ciao mondo.c makefile
Sushilrathore-2: ~/Hello-World $

Esegui il comando Make come mostrato di seguito e vedremo i registri come di seguito:

Sushilrathore-2: ~/Hello-World $ make
fare -c/lib/moduli/4.15.0-163-GENERIC/build/M =/Home/Cienauser/Hello-World Moduli
Make [1]: immettere la directory '/usr/src/linux-headers-4.15.0-163-Generic '
CC [M]/Home/Cienauser/Hello-World/Hello-World.o
Moduli di costruzione, Fase 2.
Moduli Modpost 1
CC/Home/Cienauser/Hello-World/Hello-World.mod.o
LD [M]/Home/Cienauser/Hello-World/Hello-World.ko
Make [1]: Leaving Directory '/USR/SRC/Linux-Headers-4.15.0-163-Generic '
Sushilrathore-2: ~/Hello-World $

Dai registri sopra, possiamo vedere che abbiamo eseguito il comando Make e avremo alcuni file creati nella stessa directory in cui abbiamo C e Makefile. "Ciao mondo.ko ”è il file che dovremmo guardare. Questo è il file dell'oggetto del kernel. Questo è il modulo che inseremo nel kernel Linux.

Passaggi per aggiungere il modulo Hello-World al kernel Linux:

Il comando insmod può essere utilizzato per inserire il modulo kernel nel kernel Linux. Quello che segue è il registro che mostra il processo di utilizzo di insmod.

Sushilrathore-2: ~/hello-world $ sudo insmod hello-world.ko
Sushilrathore-2: ~/Hello-World $

Passaggi per vedere il messaggio stampato da Hello-World:

"Dmesg" è il comando può essere usato per vedere l'output del modulo Kernel Hello World. Quello che segue è il registro che mostra il processo di utilizzo del comando dmesg.

Sushilrathore-2: ~/Hello-World $ sudo dmesg | grep -i ciao
[10500712.434672] Hello World
Sushilrathore-2: ~/Hello-World $

Sopra è il processo di aggiungere dinamicamente il modulo del kernel. È compilato al di fuori dell'immagine del kernel e in fase di esecuzione viene aggiunto all'immagine del kernel. In questo modo mentre il kernel è in esecuzione, possiamo espandere la funzionalità del kernel.

Linux fornisce questo modo per estendere le funzioni del kernel senza abbattere il sistema. L'utente dovrebbe stare molto attento durante la scrittura di tali moduli. Durante lo scarico del modulo del kernel, l'utente dovrebbe rilasciare attentamente tutta la risorsa assegnata quando il modulo è stato caricato.

Hello World Module può anche essere aggiunto come parte dell'immagine del kernel. Se l'utente desidera aggiungere l'applicazione Hello World come parte dell'immagine del kernel.

I seguenti passaggi possono essere seguiti per raggiungerlo:

  1. Identifica il percorso nell'albero del kernel in cui questo deve essere aggiunto.
  2. Modifica il kconfig per introdurre il nuovo modulo.
  3. Modifica il makefile per aggiungere il nuovo modulo.
  4. Aggiorna il file di configurazione se il modulo verrà aggiunto in base a alcuni file di configurazione.

Come compilare il modulo che è stato aggiunto in questi 4 passaggi.

Kernel Makefile definisce i "moduli" come bersaglio build che può essere utilizzato per costruire tutti i moduli nel kernel Linux. Una volta che l'utente emette i "Make Moduli", anche il nostro Hello World/Nuovo modulo viene compilato e otteniamo il .file ko del modulo.

Questo modo di compilazione è facile quando abbiamo bisogno di costruire il kernel completo e il nostro modulo che vogliamo aggiungere nel sistema come modulo carico.

Conclusione

Abbiamo discusso del semplice modulo del kernel Hello World e diversi modi per compilare il modulo.

Abbiamo anche discusso dei modi per aggiungere il modulo al kernel Linux. Abbiamo anche fatto riferimento al codice di esempio e al makefile per la compilation. Inoltre, abbiamo dimostrato i concetti con i registri sperimentali.