Il kernel è il codice che gestisce le risorse presenti in un computer e le rende disponibili alle applicazioni con cui l'utente comunemente interagisce. In un sistema operativo, inteso in senso esteso, come può esserlo Windows completo di programmi accessori (Explorer, Internet Explorer, notepad e via dicendo), il kernel costituisce solo lo strato più profondo, quello che si occupa del "lavoro sporco" di interagire direttamente con l'hardware.
Il kernel si occupa principalmente di gestire:
- le comunicazioni con le memorie di massa (hard disk, floppy cdrom, dispositivi usb rimuovibili... ),
- i file system, cioè il modo con cui sono organizzate le informazioni sulle memorie di massa (fat, fat32, ntfs, ext3, reiserfs...),
- la memoria RAM, l'accesso dei singoli programmi alla stessa e il paging della memoria su hard disk,
- l'utilizzo della CPU e la condivisione della stessa fra i vari programmi,
- l'interfacciamento e la comunicazione con hardware vario (schede di rete, porte seriali, USB, parallele, schede audio, schede video ecc.
Le versioni del kernel Linux sono identificate con numeri a tre cifre separate da un punto (ed: 2.1.45) con una convenzione ben precisa.
Per esempio il kernel 2.4.15 ha:
2- Il major number, la serie principale. I kernel della serie 1.x sono ormai piuttosto vecchi e poco usati, quelli della serie 0.x sono ancora più vecchi e ormai rarità da collezionista (si fa per dire, dal sito ufficiale del kernel Linux sono ancora scaricabili.
4- Il minor number, il numero di versione principale. Se è pari il kernel viene considerato stable e pronto per sistemi in produzione, se è dispari lo si considera in development e da usare con cautela o per sperimentazione. Le release stable sono sempre figlie delle devel precedenti. Ad esempio il kernel attualmente considerato stabile, il 2.6, deriva dal 2.5 che era la versione in sviluppo mentre la 2.4 era quella considerata stabile. Solitamente nei kernel stable si tende a fare maintenance ed a implementare solo le feature strettamente necessarie, lasciando a quello in development lo sviluppo di nuove funzionalità.
15- E' la revisione (patch) corrente. Questo è un numero progressivo che parte da 0. Da una revisione alla successiva possono passare da pochi giorni a varie settimane.
Esistono inoltre varie patch temporanee, anche non di Torvalds stesso (comuni sono le -ac patch, di Alan Cox) che rappresentano stadi intermedi prima della release di una revisione definitiva.
Ha senso utilizzarle subito solo in caso di utilizzo di kernel con gravi problemi di sicurezza o stabilità (sul proprio sistema) che vengono risolte con le relative patch parziali.
Il kernel in development è attualmente composto da sorgenti realizzati da centinaia di programmatori e assemblati da Linus Torvalds che rilascia personalmente le nuove versioni.
Navigare e leggere il codice sorgente del kernel
Poter avere accesso completo al codice sorgente del proprio sistema operativo può essere per molti totalmente irrilevante ma per alcuni è una fonte inesauribile di studio, approfondimento e supporto allo sviluppo.
Esistono in rete progetti che favoriscono la possibilità di lettura ed analisi dei sorgenti di Linux, fra questi Cross-Referencing Linux.
E' un sito che permette il browsing all'interno del codice del kernel. E' particolarmente affascinante ed utile perchè, tramite una moltitudine di link, permette di correlare funzioni, variabili e strutture risultando piuttosto interessante, anche per il semplice curioso senza particolari cognizioni di programmazione in C.
Le discussioni sul kernel
Gli sviluppatori che affiancano Torvalds sono molti e tipicamente discutono e comunicano in una mailing list dedicata e piuttosto affollata: la linux-kernel mailing-list (è fortemente sconsigliato iscriversi, a meno che si sia direttamente coinvolti nello sviluppo del kernel.
Esistono in rete siti che riassumono le attività in corso sul kernel e le presentano in forme più accessibili a chi non è un kernel hacker:
Kernel Trap è un blog completo e aggiornato sugli sviluppi del kernel.
Kernel Traffic è una mailing list che riassume le principali discussioni su linux-kernel.
Kernel Newbies è un sito indicato per chi il kernel lo deve usare, compilare e imparare. Di fatto è il punto di partenza ideale per un sistemista Linux che vuole approfondire le sue conoscenze sul kernel.