Linux kernel

Linux eszközillesztő bemutató

Linux eszközillesztő bemutató

Linux eszközillesztő Bemutató Kezdőknek


A Linux operációs rendszer 3 fő részt tartalmaz: Root File System, Kernel és Bootloader.

Gyökér fájlrendszer:

Az operációs rendszer ezen része alkalmazás bináris fájlokat, könyvtárakat, szkripteket, konfigurációs fájlokat és a kernelbe tölthető modulfájlokat stb. Tartalmaz ..

Kernel:

Ez a rész az operációs rendszer lényege, a kernel felelős az operációs rendszer futtatásához szükséges összes műveletért, például a memóriakezelésért, a folyamatkezelésért és a bemeneti / kimeneti hardveres műveletekért stb

Bootloader:

Ez az első rész, amelyet a CPU indításkor végrehajt. A Bootloader tartalmazza a rendszer inicializálásához és a kernel futtatásának megkezdéséhez szükséges forráskódot, valamint parancsokat tartalmaz a kernel környezetének hibakeresésére és módosítására, valamint a kernel és a rendszerképek flash memóriába való letöltésére és frissítésére szolgáló parancsokat.

Az illesztőprogramok hídként működnek a hardver és a felhasználói alkalmazás között, a kern biztosítja a rendszerhívásnak nevezett mechanizmust, hogy beszéljen a kernellel.  A Linux-ban az illesztőprogramok kétféleképpen valósíthatók meg: az egyik az illesztőprogramok a kernel részeként fordíthatók le, a másik pedig az illesztőprogramok modulokká fordíthatók és futás közben tölthetők be.

Kezdjük egy egyszerű hello world kernel modullal. Itt található az egyszerű hello world kernel modul forráskódja.

Helló.c

#include // szükséges a module_init és a modul_exit #include fájlhoz // szükséges a KERN_INFO #include-hoz // szükséges a makrókhoz int __init hw_init (void) printk (KERN_INFO "Hello World \ n"); visszatér 0;  void __exit hw_exit (void) printk (KERN_INFO "Bye World \ n");  MODULE_LICENSE ("GPL"); modul_init (hw_init); module_exit (hw_exit); 

Makefile

obj-m: = szia.o all: make -C / lib / modules / $ (shell uname -r) / build M = $ (PWD) modulok tiszta: make -C / lib / modules / $ (shell uname -r) / build M = $ ( PWD) tiszta 

Hozzon létre egy nevű mappát Helló majd helyezze el a Helló.c és Makefile benne. Nyissa meg a terminál alkalmazást, és módosítsa a könyvtárat hello-ra. Most futtassa a parancsot készítsen és ha ez sikeres, akkor létre kell hoznia egy betölthető kernel modul fájlt Helló.ko.

Amikor futtatod a make-t, ha kimenetet kapsz make: Semmi tennivaló "mindenkiért".  Ezután kérjük, győződjön meg arról, hogy a Makefile-ben megadta a fület (szóköz nélkül), mielőtt a -C parancsot elkészítené. Ha a make sikeres, akkor az alábbiak szerint kell megszereznie a kimenetet.

make [1]: A '/ usr / src / linux-header-3 könyvtár megadása.13.0-128-generic 'CC [M] / home / John / Desktop / hello / hello.o Építési modulok, 2. szakasz. MODPOST 1 modulok CC / home / John / Desktop / hello / hello.mod.o LD [M] / home / John / Desktop / mvs / pers / kern / hello / hello.ko make [1]: Kilépés a '/ usr / src / linux-header-3 könyvtárból.13.0–128-általános ” 

Most teszteljük a modult úgy, hogy betöltjük a kernelbe. A kernelmodulok be- és kirakásához szuperfelhasználói engedéllyel kell rendelkeznünk. A következő paranccsal töltse be a kernelmodult a kernelbe.

sudo insmod hello.ko

A printk üzenet megtekintéséhez ellenőriznie kell a kernel naplóját, a kernel naplójának ellenőrzéséhez használja a következő parancsot.

dmesg

Ez a parancs kiadja a kernel naplóüzeneteit, a végén látnia kell, hogy az üzenetünk Helló Világ nyomtatott.

A modul kirakásához használja a következő parancsot.

sudo rmmod szia

A printk üzenet megjelenítéséhez használja újra a dmesg parancsot, és a kernel naplóban láthatja az üzenetünket Viszlát Világ.

Most értsük meg a forráskódot.

Helló.c

A rendszermag-illesztőprogram írásának megkezdéséhez használhat tetszőleges szerkesztőt vagy ide, de a rendszermag-fejlesztők általában ezt használják vi szerkesztő.

Minden kernelmodulnak tartalmaznia kell a fejlécfájlt linux / modul.h ebben vannak a deklarációk és a makrók a kernelfunkciókhoz, például module_init és module_exit stb.  A rendszermag-illesztőprogram két legfontosabb funkciója a module_init és a module_exit függvény. A függvény, amelynek mutatóját a module_init-nek továbbítja, akkor fog végrehajtódni, amikor betöltjük a modult a kernelbe, és azt a függvényt, amelynek mutatóját a module_exit-nek adjuk át, meghívjuk, amikor kipakoljuk vagy eltávolítjuk a modult a kernelből.

A napló hibakereséséhez és kinyomtatásához a rendszermagban használjuk printk függvény, amely hasonló az alkalmazásban használt printf függvényhez. A naplószint megadásához használhatja a makrókat, például a KERN_INFO, a KERN_ERR stb.

Ha illesztőprogramot írunk egy bizonyos hardverrel való beszélgetéshez, akkor az init függvénynek rendelkeznie kell a hardver inicializálására szolgáló kóddal, mielőtt elkezdenénk használni, és az exit funkciónak rendelkeznie kell egy kóddal az illesztőprogramban használt erőforrások (dinamikus memória stb.) Tisztítására mielőtt kilépnénk a kernelből.

Ebben a példában itt csak debug üzeneteket nyomtatunk az init és exit funkciókba.

Makefile

A kernelmodul felépítéséhez meg kell írnunk egy Makefile fájlt, amely útmutatást nyújt készítsen  segédprogram a modul fordításához. A szintaxis obj-m a kernel makefile megmondására szolgál, hogy az illesztőprogramot modulként kell lefordítani a megadott objektumfájl segítségével. Amikor csak futtatja a parancsot készítsen akkor az irányítás a minden: szakaszában, és ha futtatja a parancsot tisztává tenni akkor az irányítás a tiszta: szakasza a Makefile-ben. Ebből a Makefile-ból futtatjuk a make-et a kernel forráskönyvtárában a -C kapcsolóval. Kérjük, győződjön meg róla, hogy a rendszermag forráskönyvtára telepítve van. Ebben a példában a parancsot használtuk uname -r  hogy megtalálja a rendszer linux-rendszermagjának aktuális verzióját.

Az M = $ (PWD) opcióval jeleztük a kernel makefile-ben, hogy az illesztőprogram forrása a jelenlegi munkakönyvtárban található, és megadjuk a szót modulok mondani a kernel makefile-nak, hogy csak modulokat épít, és nem a teljes kernel forráskódját. Ban ben tiszta: A Makefile szakaszban azt mondjuk a kernel makefile-nek, hogy tisztítsa meg a modul felépítéséhez létrehozott objektumfájlokat.

Ezzel meg kell kezdeni az első kernelmodul fordítását és futtatását.

Az egér bal oldali gombja nem működik a Windows 10 rendszeren
Ha dedikált egeret használ laptopjával vagy asztali számítógépével, de a az egér bal gombja nem működik a Windows 10/8/7 rendszeren valamilyen oknál f...
A kurzor véletlenszerűen ugrik vagy mozog, miközben gépel a Windows 10-ben
Ha úgy találja, hogy az egér kurzor önállóan, automatikusan, véletlenszerűen ugrik vagy mozog, miközben gépel Windows laptopba vagy számítógépbe, akko...
Az egér és az érintőpadok görgetési irányának megfordítása a Windows 10 rendszerben
Egér és Érintőpads nemcsak a számítást könnyűvé, de hatékonyabbá és kevésbé időigényessé is teszi. Nem tudunk elképzelni egy életet ezek nélkül az esz...