Jedro Linux je srce operacijskega sistema Linux. To je program, ki se zažene prvi po zagonskem nalagalniku in teče ves čas do izklopa računalnika. Upravlja vire strojne opreme (procesor, pomnilnik, diske, omrežne vmesnike in druge naprave) in streže sistemskim klicem programov (system call), na primer ko program odpre datoteko, zahteva pomnilnik ali vzpostavi omrežno povezavo.
Jedro je najnižja raven operacijskega sistema, ki neposredno komunicira s strojno opremo. Uporabniški programi, ukazna vrstica in grafični vmesnik ne dostopajo neposredno do strojne opreme, temveč dostop zahtevajo prek jedra, zato program z napako ne more uničiti pomnilnika drugih procesov.
Glavne naloge jedra
- Upravljanje in razporejanje procesov: odloča, kateri proces teče kdaj in na katerem procesorskem jedru.
- Upravljanje pomnilnika: dodeljuje fizični pomnilnik, upravlja navidezni pomnilnik in swap, ob pomanjkanju pomnilnika pa z OOM killerjem ustavi proces.
- Upravljanje naprav: gonilniki naprav so del jedra ali naložljivi moduli jedra.
- Datotečni sistemi: podpora za ext4, XFS, Btrfs in druge datotečne sisteme.
- Omrežje: osnova protokolov TCP/IP in požarnega zidu (netfilter, nftables).
Monolitno, a modularno
Linux je monolitno jedro, kar pomeni, da zgornje funkcije delujejo v enem programu, ki teče v skupnem naslovnem prostoru. Redkeje uporabljeni deli, na primer nekateri gonilniki naprav, pa so na voljo tudi kot moduli, ki jih je mogoče naložiti med delovanjem. Naložene module izpiše ukaz lsmod.
Različice jedra
Razvoj jedra poteka javno, okoli kernel.org, pri vsaki izdaji sodeluje več tisoč razvijalcev. Približno vsaka dva do tri mesece izide nova glavna različica. Nekatere različice leta vzdržujejo kot izdaje z dolgoročno podporo (LTS). Distribucije večinoma dobavljajo lastno jedro: izberejo določeno različico in vanjo do konca časa podpore prenašajo varnostne popravke. Zato je lahko številka različice jedra na strežniku AlmaLinux ali Ubuntu videti starejša od najnovejše izdaje na kernel.org, pa vseeno vsebuje sveže popravke.
Preverjanje jedra na strežniku
uname -r # različica tekočega jedra
dmesg | tail -n 50 # zadnja sporočila jedra (potrebne so pravice root)
rpm -q kernel # nameščena jedra v AlmaLinux/Rocky Linux
dpkg -l 'linux-image*' | grep ^ii # ugyanez Debian/Ubuntu alatt
Novo jedro po posodobitvi paketov začne veljati šele po ponovnem zagonu. Če uname -r kaže starejšo različico od najnovejšega nameščenega jedra, strežnik še poganja staro. Za posodobitev jedra brez ponovnega zagona so rešitve za popravljanje v živo (live patching), na primer KernelCare ali kpatch.
Lastno jedro na VPS
Virtualizacija KVM da celoten navidezni računalnik, zato na KVM VPS teče lastno jedro, ki ga posodabljaš sam, po potrebi pa lahko naložiš tudi lastne module. V AlmaLinux lahko novejše jedro od distribucijskega namestiš iz repozitorija ELRepo, glej: Namestitev jedra Linux mainline v AlmaLinux. Na deljenem gostovanju jedro upravlja ponudnik. O prednostih in tveganjih lastno prevedenega jedra govori naš blogovski zapis o prilagojenem jedru Linux.
