“Hello World” Kernel -modul

“Hello World” Kernel -modul
Dette er artikkelen for personen som nettopp begynner med Linux Kernel -modulene. Vi bruker eksempleteksemplet for denne modulen og makefilen som skal brukes til å kompilere kjernemodulen. Senere vil vi gå gjennom trinnene for å utføre kjernemodulen og for å se utdataene fra "Hello World" -modulen.

“Hello World” -modul:

Dette er enkel kjernemodul, som når den settes inn i Linux -kjernen, vil skrive ut meldingen som "Hello World". Og ved å fjerne den vil den skrive ut meldingen som “Bye Bye World!”. Dette er de to funksjonene vi vil støtte i "Hello World" -kjernemodulen.

Eksempeleksempelkode for kjernemodul:

#inkludere
#inkludere
#inkludere
Module_license ("gpl");
Module_description ("Hello World!");
statisk int __init hello_init (ugyldig)

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

statisk tomrom __exit hello_exit (ugyldig)

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

module_init (hello_init);
module_exit (hello_exit);

Eksempel Makefile for å kompilere kjernemodul:

OBJ-M = Hello-World.o
alle:
lage -c/lib/modules/$ (shell uname -r)/build/m = $ (pwd) moduler
ren:
lage -c/lib/modules/$ (shell uname -r)/build m = $ (pwd) ren

Trinn for å kompilere kjernemodulen:

Kopier begge kodebiten ovenfor til samme katalog i byggverten som vist nedenfor:

Sushilrathore-2: ~/Hello-World $ ls
Hei Verden.c Makefile
Sushilrathore-2: ~/Hello-World $

Utfør Make -kommandoen som vist nedenfor, så ser vi loggene som nedenfor:

Sushilrathore-2: ~/Hello-World $ Make
lage -c/lib/modules/4.15.0-163-generisk/build/m =/home/cienauser/hallo-verden moduler
lage [1]: legge inn katalog '/usr/src/linux-headers-4.15.0-163-generisk '
CC [M]/Home/Cienauser/Hello-World/Hello-World.o
Bygningsmoduler, trinn 2.
Modpost 1 -moduler
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-generisk '
Sushilrathore-2: ~/Hello-World $

Fra loggene ovenfor kan vi se at vi har utført make -kommandoen, og vi vil få noen filer opprettet i samme katalog der vi har C og Makefile. "Hei Verden.ko ”er filen vi bør se på. Dette er kjerneobjektfilen. Dette er modulen som vi vil sette inn Linux -kjernen.

Trinn for å legge til Hello-World-modulen til Linux-kjernen:

InsMod -kommandoen kan brukes til å sette inn kjernemodulen til Linux -kjernen. Følgende er loggen som viser prosessen med å bruke InsMod.

Sushilrathore-2: ~/Hello-World $ Sudo Insmod Hello-World.ko
Sushilrathore-2: ~/Hello-World $

Trinn for å se meldingen trykt av Hello-World:

“DMESG” er kommandoen kan brukes til å se utdataene fra Hello World Kernel -modulen. Følgende er loggen som viser prosessen med å bruke DMESG -kommandoen.

Sushilrathore-2: ~/Hello-World $ sudo dmesg | grep -Jeg hei
[10500712.434672] Hei verden
Sushilrathore-2: ~/Hello-World $

Over er prosessen med å legge til kjernemodulen dynamisk. Det er samlet utenfor kjernebildet og blir lagt til kjernebildet ved runtime. På denne måten mens kjernen kjører, kan vi utvide funksjonaliteten til kjernen.

Linux gir denne måten å utvide funksjonene til kjernen uten å få ned systemet. Brukeren skal være veldig forsiktig mens han skriver slike moduler. Mens lossing av kjernemodulen, bør brukeren nøye frigjøre all ressursen som ble tildelt da modulen ble lastet inn.

Hello World Module kan også legges til som en del av kjernebildet. Hvis brukeren ønsker å legge til Hello World -applikasjonen som en del av kjernebildet.

Følgende trinn kan følges for å oppnå det:

  1. Identifiser banen i kjernetreet der dette må legges til.
  2. Endre Kconfig for å introdusere den nye modulen.
  3. Endre makefilen for å legge til den nye modulen.
  4. Oppdater konfigurasjonsfilen hvis modulen vil bli lagt til basert på noen konfigurasjonsfiler.

Hvordan kompilere modulen som ble lagt til i disse 4 trinnene.

Kernel Makefile definerer “Modulene” som Build -mål som kan brukes til å bygge alle modulene i Linux -kjernen. Når brukeren har utstedt “Make Modules”, blir vår Hello World/New Module også samlet, og vi får .KO -filen til modulen.

Denne måten å samle er enkel når vi har behov for å bygge hele kjernen og modulen vår vi ønsker å legge til systemet som lastbar modul.

Konklusjon

Vi har diskutert den enkle Hello World Kernel -modulen og forskjellige måter å kompilere modulen.

Vi har også diskutert måtene å legge modulen til Linux -kjernen. Vi refererte også til eksempelkoden og makefilen for samlingen. Vi har også demonstrert konseptene med eksperimentelle logger.