A Linux kernel a Linux operációs rendszer magja. Ez a program indul el elsőként a rendszerbetöltő után, és a gép leállításáig folyamatosan fut. Ő kezeli a hardveres erőforrásokat (processzor, memória, lemezek, hálózati adapterek és egyéb eszközök), és ő szolgálja ki a programok rendszerhívásait (system call), például amikor egy program fájlt nyit meg, memóriát kér vagy hálózati kapcsolatot létesít.
A kernel az operációs rendszer legalsó szintje, amely közvetlenül kommunikál a hardverrel. A felhasználói programok, a parancssor és a grafikus felület nem érik el közvetlenül a hardvert, hanem a kernelen keresztül kérnek hozzáférést, így egy hibás program nem tudja tönkretenni a többi folyamat memóriáját.
A kernel fő feladatai
- Folyamatkezelés és ütemezés: eldönti, melyik folyamat mikor és melyik processzormagon fusson.
- Memóriakezelés: kiosztja a fizikai memóriát, kezeli a virtuális memóriát és a swapot, és memóriahiány esetén az OOM killer révén leállít egy folyamatot.
- Eszközkezelés: az eszközillesztők (driverek) a kernel részei vagy betölthető kernelmodulok.
- Fájlrendszerek: az ext4, az XFS, a Btrfs és a többi fájlrendszer támogatása.
- Hálózat: a TCP/IP protokollok és a tűzfal (netfilter, nftables) alapja.
Monolitikus, de moduláris
A Linux monolitikus kernel, vagyis a fenti funkciók egyetlen, közös címtérben futó programban működnek. A ritkábban használt részek, például egyes eszközillesztők, ugyanakkor menet közben betölthető modulként is elérhetők. A betöltött modulokat az lsmod parancs listázza ki.
Kernelverziók
A kernel fejlesztése nyilvánosan, a kernel.org köré szerveződve folyik, kiadásonként több ezer fejlesztő közreműködésével. Nagyjából két-három havonta jelenik meg új főverzió. Egyes verziókat hosszú távú (LTS) kiadásként évekig karbantartanak. A disztribúciók többnyire saját kernelt szállítanak: egy adott verziót választanak, és ahhoz a támogatási idő végéig visszaportolják a biztonsági javításokat. Ezért egy AlmaLinux vagy Ubuntu szerveren a kernel verziószáma régebbinek tűnhet, mint a kernel.org legfrissebb kiadása, mégis naprakész javításokat tartalmaz.
A kernel ellenőrzése a szerveren
uname -r # a futó kernel verziója
dmesg | tail -n 50 # a kernel legutóbbi üzenetei (root jog kell)
rpm -q kernel # a telepített kernelek AlmaLinux/Rocky Linux alatt
dpkg -l 'linux-image*' | grep ^ii # ugyanez Debian/Ubuntu alatt
Egy új kernel a csomagfrissítés után csak újraindítással lép életbe. Ha az uname -r régebbi verziót mutat, mint a legújabb telepített kernel, a szerver még a régit futtatja. Újraindítás nélküli kernelfrissítésre élő javító (live patching) megoldások szolgálnak, például a KernelCare vagy a kpatch.
Saját kernel a VPS-en
A KVM alapú virtualizáció teljes virtuális gépet ad, így a KVM VPS-en saját kernel fut, amelyet Ön frissíthet, és szükség esetén saját modulokat is betölthet. AlmaLinuxon a disztribúció kernelénél újabbat az ELRepo tárolóból telepíthet, lásd: Mainline Linux kernel telepítése AlmaLinuxon. Megosztott tárhelyen a kernelt a szolgáltató kezeli. A saját fordítású kernel előnyeiről és kockázatairól a testreszabott Linux kernelről szóló blogbejegyzésünk szól.
