Terminologická poznámka: 
    Hoci Linux je pôvodne a správne názvom pre konkrétne jadro operačného systému, často sa spája
    s operačným systémom ako takým. Aby sme sa  vyhnuli terminologickým problémom, v ďalšom
    texte budeme namiesto Linux používať jadro Linuxu, prípadne jadro.
  
  
  Jadro Linuxu je používané v tzv. UNIX-like operačných systémoch. 
  Distribuované je pod licenciou GNU GPLv2 a na jeho vývoji sa podiela komunita vývojárov
  po celom svete. Kód je takmer výhradne písaný v jazyku C až na úseky
  assembleru, hoci nepriamo sú využité i rôzne skriptovacie jazyky a Fortran či
  C++. V súčasnosti je toto jadro jedným z najviac portovaných vôbec - od
  Apple iPod, cez PDA a PC až po väčšinu superpočítačov z Top 500.
  
  
  Z architektonického hľadiska sa
  jedná o monolitické jadro s podporou modulov (od verzie 1.2),
  tj. napr. ovládače zariadení je možné zavádzať do systému za behu v podobe
  modulov. Zmyslom jadra je veľmi zjednodušene povedané abstrahovať všetok hardvér do
  podoby istého konzistentného virtuálneho rozhrania.
  Jadro Linuxu podporuje preemptívny multitasking, virtuálnu pamäť ale napr. i vlákna.
  
  Správcovia dvoch najhlavnejších vývojových stromov sú pôvodný autor Linus
  Torvalds a Andrew Morton, pričom primárnym zdrojom jadier na internete je
  "The Linux Kernel Archives"
  (kernel.org) (ftp,http,rsync). Posledná stabilná verzia
  2.6.26.5 je na adrese:
  
 
  
V súčasnosti tvoria verziu jadra Linuxu štyri čísla písané v tvare A.B.C[.D], kde význam jednotlivých čísel je nasledujúci:
  Moduly reprezentujú funkcionalitu zavádzanú a odoberanú z jadra podľa potreby
  bez nutnosti reštartovať systém. Práve moduly odlišujú jadro Linuxu od
  tradičných monolitických jadier. Minimalizujú pamäť potrebnú pre jadro, čo má
  význam predovšetkým v embedded systémoch.
  
  Moduly Linuxu a pomocné súbory sú umistnené v adresári /lib/modules/kernel-version, majú
  príponu .ko (od verzie 2.6), čo je skratka pre "kernel
  object" (teda modul je prostý objektový kód najčastejšie asi ELF). S príslušnou konfiguráciou
  (kmod) dokáže jadro moduly zavádzať i bez zásahu užívateľa. Princíp vo verzii
  2.6 sa dá veľmi stručne popísať nasledovne (a v prípade užívateľskej práce s
  modulmi je spôsob takmer rovnaký):
  
  
modprobe(8), s požiadavkom na chýbajúci modul, meno modulu je buď
      priamo parametrom, alebo ho modprobe zisťuje v súbore /etc/modprobe.confmodprobe zistí prípadne závislosti spojene s požadovaným modulom
      prostredníctvom súboru modules.depmodprobe napokon volá insmod(8) pre všetky
      potrebné modulyinsmod vyvolá v user-space init_module, ktorý
      prakticky len skopíruje binárny kód modulu do kernel-space, čím je prakticky
      funkcionalita modulu dostupná jadrulinux/kernel/kmod.c, linux/include/linux/module.h
  a linux/include/linux/module.c. 
  Konfigurácia jadra je netriviálna úloha, ktorá vyžaduje jednak znalosti o
  hardvéri obecne a druhak o hardvéri daného počítača. Zistiť informácie o
  hardvéri počítača, na ktorom práve pracujeme, umožnuje hneď niekoľko systémových
  utilít: lspci(8), lsscsi(8), lsusb(8), 
  lshal(1) či dmidecode(8).
  Informacie o CPU a pamäti je možné zistiť i
  pomocou súborov /proc/cpuinfo a /proc/meminfo. 
  V prípade vyššie zmieňovaných utilít je často problém orientovať sa v ich
  výstupoch, veľmi zaujimavá sa v porovnaní s nimi preto javí utilita lshw (vid
  
  http://sourceforge.net/project/showfiles.php?group_id=32683). Jej výstup
  je pomerne ľahko zrozumiteľný a môže vyzerať napr. nasledovne:
  
     *-memory
          description: System Memory
          physical id: 2b
          slot: System board or motherboard
          size: 1280MB
        *-bank:0
             description: SODIMM DDR Synchronous
             physical id: 0
             slot: DIMM 1
             size: 256MB
             width: 64 bits
        *-bank:1
             description: SODIMM DDR Synchronous
             physical id: 1
             slot: DIMM 2
             size: 1GB
             width: 64 bits
  
  Dokonca i so znalosťou hardvéru daného počítača, stále zostáva otázka,
  ako určiť tie správne ovládače resp. konfiguračné voľby jadra? Bohužial neexistuje
  univerzálna odpoveď ... východiskom môže byť napr. projekt "LKDDb (Linux
  Kernel Driver DataBase)"
  (vid http://cateee.net/lkddb/). Ide o
  databázu rôzneho hardvéru spolu s príslušnými konfiguračnými voľbami a
  ovládačmi, napr.:
  lkddb acpi "IBM0068" :: CONFIG_THINKPAD_ACPI :: drivers/misc/thinkpad_acpi.cV spojení s "AutoKernConf" (vid http://cateee.net/autokernconf/) je tak možné v určitej miere automatizovať správnu konfiguráciu jadra. Princpíp je jednoduchý - skript pomocou systémových utilít a súborového systému
/sys (ide nám jadrá verzie  2.6) zistí
  hardvér počítača a pomocou databázy nastaví správne voľby.
  .config, vhodné pri priamych zásahoch do tohoto súborumake
  xconfig.  Výstupom konfigurácie je súbor .config.
  Nasleduje veľmi stručný prehľad hlavných konfiguračných volieb vo verzii
  jadra 2.6:
  
  sysctl(8), podpora pre uchovanie .config
      priamo v jadre, ...Preklad a nasadenie jadra pozostáva z niekoľkých krokov:
EXTRAVERSION v
      hlavnom súbore Makefile, neprídeme tak o súčasnú verziu modulov.config
    make
	mrpropermake dep)make cleanmake bzImage, zostavené
      jadro sa v prípade hladkého priebehu nachádza v adresári kernel-sources/arch/$ARCH/boot
    make modules a následne ich nainštalovať
      príkazom v privilegovanom režime make modules_install, moduly
      sa skopírujú do
      adresára /lib/modules/$VERSION.$PATCHLEVEL.$SUBLEVEL-$EXTRAVERSIONbzImage a
      súbor System.map do adresára /boot
    System.map. Obsahuje
  totiž adresy a mená symbolov preloženého jadra a používa ho
  utilita ksymoops pri preklade tzv. "kernel oops"
  (odchýlky od korektného chovania linuxu) do zrozumiteľnejšej podoby. Je
  zaujímavé, že napr. vo verzii 2.5 nebol tento súbor vobec potrebný, pretože funkcionalita
  utility ksymoops bola implementovaná priamo v jadre. Tradičné
  umiestnenie súboru je v /boot alebo /usr/src/linux.
  bootparam(7). Najpoužívanejšie parametre sú napr.: 
  /sbin/init
    bootparam(7)