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:
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.