KERNEL E DISTRIBUZIONI

Precedente
Programma
Seguente
Kernel - Che cos'è?
Per kernel si intende il cuore di un sistema operativo, il codice che gestisce le risorse presenti sul nostro sistema e le rende disponibili alle applicazioni.
Il kernel si occupa principalmente di gestire:
- le comunicazioni con l'hardware del sistema,
- i file system, la memoria,
- l'accesso a queste risorse da parte dei processi (le applicazioni che girano sul sistema)...

Le versioni del kernel Linux sono identificate con numeri dal significato ben preciso. Per esempio il kernel 2.4.15 ha:
2- Il major number. I kernel della serie 1.x sono ormai piuttosto vecchi e pochissimo usati.
4- Il minor number. 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. Per esempio al momento in cui si scrive, il kernel stable è alla versione 2.4.18, mentre quello in sviluppo è alla 2.5.7 (da cui deriverà la 2.6.x o direttamente la 3.0.x). Solitamente nei kernel stable si tende a fare maintenance ed a implementare solo le features 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 Torwalds 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.

Kernel Monolitico Vs Kernel Modulare
Esistono diversi tipi di kernel:
Monolitico E' un singolo file binario eseguibile in modalità "kernel" che contiene il gestore del processo, della memoria, del sistema e tutto il resto.
Esempi di tali sistemi sono UNIX, Linux, MS-DOS.
Microkernel E' un piccolo nucleo ridotto ai minimi termini che ha il compito di gestire le comunicazioni fra i gestori di sistema, processi separati eseguiti al di fuori dal kernel. Esempi di tali sistemi sono BE OS, GNU HURD, MINIX.
Modulare Per kernel Modulare si intende un' estensione del kernel monolitico, con la capacità di caricare/scaricare parti di codice (moduli) secondo necessità e richieste. Può esserlo Linux se lo si definisce in fase di configurazione pre-compilazione.
Il kernel monolitico è più veloce, poichè tutto il codice è già stato caricato al bootstrap dell'OS, ma di contro occupa maggiori risorse del sistema.
Un altro punto a favore è la maggiore stabilità: non richiede moduli evitando così pericolose dipendenze.
Il kernel modulare è quello utilizzato da tutte le distribuzioni in fase di installazione di LINUX su una macchina.

Le distribuzioni

Una Distribuzione (distro) è un confezionamento (packaging) di Linux, con procedure che rendono comoda e semplice l'installazione.
Si consideri che il "Linux di Linus" non è veramente un OS ma il semplice kernel. A questo ogni distribuzione aggiunge tutto il software necessario per avere un sistema operativo completo di software applicativo e di servizio. Anche per questo Stallman insiste nel chiamarlo GNU Linux poiché tutte le utility di base, dal gcc (compilatore) alle utility di gestione file fanno parte del progetto gnu.
Notare che essendo queste utility (bash, vi, emacs, awk, gcc ecc.) scritte in tempi successivi rispetto agli equivalenti Unix, sono generalmente più evolute e migliori per l'inevitabile progresso della scienza informatica.
Le distribuzioni differiscono per:
- Numero e versioni dei programmi installabili;
- Versione del kernel utilizzata e modalità di pre-installazione (il kernel solitamente non viene compilato durante una normale installazione);
- Procedura di installazione (interfaccia utente e possibilità di definire opzioni e scegliere quale software installare);
- Organizzazione di file di configurazione, programmi, log nel file system;
- Configurazioni predefinite del software installato.

Le distribuzioni più note sono:

Red Hat Red Hat è la più popolare distribuzione Linux e si adatta bene ad usi diversi (desktop, server, laptop). Pioniera nell'includere un meccanismo di update User Friendly e l'aggiornamento automatico tramite il RedHat Network. Ha introdotto il sistema di gestione di pacchetti software con estensione .RPM che facilita installazione e aggiornamento del software.
Debian Distribuzione completamente sviluppata da una comunità che consta di centinaia di persone in tutto il mondo; fornisce un proprio sistema di pacchettizzazione simile all'RPM (pacchetti .DEB). Viene considerata per puristi ed esperti e risulta generalmente meno user-friendly delle altre.
S.U.S.E. Distribuzione più diffusa in Europa, solida e ben accessoriata, RPM compatibile.
Utilizza un software di gestione e configurazione (YAST) completo, semplice, ma poco compatibile.
Mandrake In crescente diffusione, usa pacchetti simili a RPM (MDK) che sono aggiornati molto rapidamente. E' molto user friendly e probabilmente è la più adeguata per un sistema desktop.
Slackware Slackware è una delle prime distribuzioni. Si differenzia dalle altre per non usare package tipo RPM o DEB e viene generalmente considerata più ostica da installare. Per puristi.

Quale distribuzione usare?

E' difficile suggerire una specifica distribuzione da utilizzare per i propri server.
In questo corso viene utilizzata Red Hat perchè è la più diffusa, perchè è ben bilanciata per diversi campi di attività, è ben supportata dalla casa madre (che offre anche servizi di supporto a pagamento) e generalmente è ben strutturata.
In genere, la migliore distribuzione da usare è quella che meglio si conosce e se si devono gestire diverse macchine è opportuno averle tutte con la stessa distribuzione e possibilmente versione, per facilità di aggiornamente e manutenzione.
Qualunque sia la distro adottata è sempre consigliabile installarne l'ultima versione disponibile (contiene pacchetti e kernel più recenti) e seguirne sul relativo sito la segnalazione di eventuali aggiornamenti ( "errata"), possibilmente aspettando alcune settimane prima di metterla in produzione, visto che ogni nuova distribuzione tende ad avere bug e falle nella sicurezza che vengono aggiornate dopo l'iniziale diffusione pubblica.

Considerare che dopo l'installazione di una qualsiasi distribuzione, se si sta lavorando su un server che deve andare in produzione, sono auspicabili, consigliati e necessari una serie di interventi di post-installazione:
- Aggiornamento di tutti i pacchetti per i quali esistono degli errata (nuove versioni che aggiornano bug o buchi di quelle rilasciata con il CDROM originale);
- Rimozione di tutti i servizi non utilizzati;
- Eventuale aggiornamento del kernel;
- Implemementazione di script o configurazioni custom.

WEB RESOURCES
http://www.linuxhq.com/dist.html Panoramica delle Distribuzioni disponibili sul mercato
http://www.linuxfromscratch.org/ Guida alla costruzione di un proprio sistema Linux da zero.
http://www.distrowatch.com Confronto fra le varie distribuzioni