Le novità del Linux kernel 2.2
  Sebastiani Fabrizio

In questo articolo passeremo in rassegna le novità principali del kernel di Linux 2.2 di prossimo rilascio. L'hardware supportato è davvero notevole e le sue nuove caratteristiche faranno di Linux un sistema operativo ancora più potente.

 

Cosa è il kernel ?

 

Letteralmente "kernel" vuol dire nocciolo, nucleo.

Dunque il kernel è il cuore del sistema operativo, in breve il software che interagisce con l'hardware, che fornisce ai processi i "servizi" di cui hanno bisogno, che gestisce la memoria, gli accessi ai filesystems e molto altro ancora.

Ad esempio in DOS il kernel è costituito dai file IO.SYS e MSDOS.SYS che vengono caricati subito dopo il boot.

Il kernel da solo non serve praticamente a niente: normalmente dopo il suo caricamento viene ricercato un programma speciale chiamato generalmente "shell" (in dos è il "COMMAND.COM", in linux "bash" e altre) che consenta almeno di caricare altri programmi, cioè le applicazioni.

In linux il kernel è "IL" sistema operativo; anche se spesso con il termine linux si indica anche l'insieme di applicazioni normalmente disponibili nelle varie distribuzioni, tecnicamente questa parola indica esclusivamente il kernel ; in questo articolo useremo indistintamente questi due termini.

Linux viene rilasciato sotto GPL (General Public License) e il suo sviluppo viene coordinato dall'autore e di fatto portato avanti da migliaia di sviluppatori in tutto il mondo; trattandosi si software libero di tipo "open source" sono disponibili (e quindi modificabili) i sorgenti, nello spirito del progetto GNU.

 

La numerazione del kernel

 

A partire dalla versione 1.0 di Linux, la comunità di sviluppatori sparsi nel mondo concordò di adottare il seguente criterio di numerazione.

Le versioni vengono descritte con tre numeri decimali separati da punti: "x.y.z".

"x" è il numero di versione principale, "y" è il numero di release, mentre "z" è il patchlevel.

Se il numero di release è dispari allora si tratta di una versione beta rivolta esclusivamente agli sviluppatori: si tratta di versioni instabili il cui uso dovrebbe essere evitato per il lavoro quotidiano. Il patchlevel indica lo stato di perfezionamento della versione: a mano a mano che i bug e vari altri problemi vengono risolti, viene aumentato il patchlevel.

Ad esempio il kernel stabile piú recente che si trova in quasi tutte le distribuzioni è il 2.0.35. Se trovate un kernel con patchlevel maggiore di 35, potete star tranquilli che si tratta di un kernel sicuramente piú stabile e sicuro (con magari anche qualcosa in piú).

Diverso discorso invece per le versioni beta (con la "y" dispari). Attualmente si sta lavorando sul kernel 2.1.

Quando il kernel 2.1 sarà completo e sufficientemente stabile, verrà definitivamente rilasciata la versione 2.2.0, che sarà probabilmente inserita nelle nuove distribuzioni.

Il patchlevel in questo caso "corre" piú velocemente (il frenetico lavoro degli sviluppatori Linux ha portato la versione beta nel momento in cui questo articolo viene scritto alla 2.1.127!): infatti non si tratta semplicemente di bug-fix, ma del vero e proprio sviluppo del sistema operativo.

 

La compilazione del kernel

Nei sistemi operativi commerciali (Microsoft, IBM, Sun ...) il kernel viene fornito già in formato binario, cioè caricabile ed eseguibile dalla macchina. Il vantaggio di Linux e altri sistemi operativi aperti è che l'utente ha la disponibilità del codice sorgente (in linux è scritto in C e lo trovate in /usr/src/linux) e può quindi compilarsi da solo il proprio eseguibile.

Il bello è che si può inserire nel kernel solo le caratteristiche necessarie, ottimizzando cosí le prestazioni ed evitando sprechi di memoria.

Non solo: i sistemi operativi di questo tipo includono una vastissima gamma di supporti; si presuppone che l'utente compili solo quelli che gli occorrono. Ad esempio in linux chi non possiede hardware SCSI, disabiliterà la compilazion

e di quelle parti di codice che si occupano dell'interfaccia SCSI; chi ha una scheda audio Sound Blaster attiverà la compilazione del codice per questa scheda, disabilitando le altre schede sonore; chi ha una rete compilerà solo quelle parti di codice per il proprio tipo di rete; eccetera....

In questo modo il kernel sarà il piú piccolo possibile.

Quando linux viene installato per la prima volta viene utilizzato un kernel "standard" precompilato, funzionante con quasi tutte le macchine. Consiglio a tutti coloro che non avessero ancora compilato il proprio kernel di farlo quanto prima, iniziando a leggere il "Kernel HOWTO" di Brian Ward.

La versione 2.2

Notevoli sono i progressi che faranno di questa nuova release di prossimo rilascio un importante trapasso.

Vediamoli brevemente.

Processori e memoria

Per quanto riguarda i processori supportati, sappiamo che linux è già da tempo un sistema multipiattaforma (Intel, Sparc, Alpha, Amiga, PowerPC ...).

Con il nuovo kernel linux sarà in grado di autoadattarsi al processore utilizzato, sia in fase di compilazione, sia in fase di boot, risolvendo ad esempio il noto bug "F00F" del Pentium e bug di altri processori, come il K6, con apposita segnalazione in fase di boot.

Cresce anche il numero di processori supportati, come ARM, ma cresce anche in generale la quantità di memoria richiesta da Linux, intorno ai 5MB;

in compenso è stata migliorata la (già efficiente) gestione della memoria per quanto riguarda il caching avanzato.

Inoltre Linux, pur essendo a 32 bit è stato già portato su piattaforme a 64 bit, come Sparc64 e Alpha, e il porting su una futura architettura Intel a 64 bit, come il Merced, dovrebbe essere molto agevole ed efficiente.

Si sta anche lavorando per migliorarne le prestazioni dei porting su processori "vecchi" come 8086,8088,80286.

Molto interessanti sono le nuove capacità di SMP, ovvero l'architettura multiprocessore (fino a 16 processori).

Tale caratteristica è stata notevolmente ottimizzata in efficienza.

Bus

Per i bus di sistema, si sta facendo molto per rendere la vita degli sviluppator i piú semplice; saranno sfruttate le potenzialità del BIOS-PCI, per effettuare lo scan del bus PCI.

Sono ora pienamente supportate anche le vecchie architetture su bus Microchannel , un'architettura IBM poco diffusa.

Niente (o poco) di nuovo per i dispositivi ISA Plug-and-Play: per un pieno supporto del PnP bisognerà aspettare versioni successive, intanto si può continuare ad usare il programma "isapnp".

IDE/SCSI

Sarà ora possibile caricare il supporto IDE anche come modulo (cioè caricabile dinamicamente) ed inoltre tutte le schede IDE-PCI potranno essere configurate automaticamente.

La maggior parte dei driver IDE su porta parallela saranno ora supportati insieme a molti chipset SCSI nuovi.

I driver IOMEGA zip, molto diffusi e già utilizzabili in linux come driver "ftape", saranno nativamente supportati sia come versione SCSI che come versione parallela.

Per quanto riguarda i DVD linux già li "vede come ATAPI, ma poichè non è stato ancora definito uno standard per quanto riguarda i filesystem dei DVD, bisognerà aspettare qualche versione 2.2.x, prima di un pieno supporto.

Porte seriali e parallele

Il codice per le porte parallele è stato riveduto per adattarlo alle esigenze della multipiattaforma; ora sarà possibile condividere sulla stessa porta parallela anche piú di un device driver.

Novità anche per quanto riguarda le porte seriali: Linux supporterà fino a 4 porte seriali permettendone la condivisione degli interrupt.

Attualmente linux utilizza due dispositivi per una porta seriale: /dev/ttyS per i dati in ingresso e /dev/cua per i dati in uscita. Ora verrà utilizzata solo una porta: /dev/ttyS sia per l'input che per l'output.

Sarà ora possibile utilizzare un dispositivo seriale alternativo al video. Questo vuol dire che linux potrà funzionare anche senza video, redirezionando tutti i messaggi verso la seriale.

Linux Real-time

La possibilità di fare a meno del monitor risulta molto utile ad esempio per attività di controllo di processi industriali sui quali linux sta riscuotendo un buon successo; infatti, anche se è già presente un "clock real-time" simulato dal kernel che può essere sufficiente per il controllo di molti processi, è comunque disponibile già da tempo RT-linux, una particolare versione che lavora veramente in modalità real-time.

Ricordo brevemente che i sistemi operativi real-time sono tali che la risposta del sistema a certi segnali esterni deve essere perfettamente portata a termine entro certi intervalli temporali prestabiliti, pena l'assoluta inefficacia del sistema; il contrario avviene nel nostro PC di casa, dove se ad esempio un file viene letto con mezzo secondo di ritardo non muore certo nessuno, ma pensate per esempio al software di controllo di una centrale nucleare...

Filesystems

Un filesystem è il sistema di archiviazione utilizzato dal sistema operativo per ordinare razionalmente i dati sui vari supporti, ad esempio hard disk o CD.

Esso deve garantire operazioni di apertura, lettura, scrittura, chiusura dei file e deve mantenere la struttura ad albero delle directory (che altro non sono che speciali tipi di file).

Ogni filesystem ha le sue caratteristiche e regole di nomina dei file, delle directory e rispettivi attributi. Dos utilizza FAT-16, dove i nomi sono 8+3 caratteri. Windows 95 utilizza una versione "compatibile" con FAT-16 che gli permette di utilizzare nomi lunghi, ma recentemente utilizza un nuovo formato: FAT-32, incluso definitivamente in Windows 98. Windows NT utilizza NTFS, simile nella nominazione a FAT-32, ma differente a livello interno. OS/2 ha invece HPFS.

Linux li ha tutti (e anche di piú)! Infatti ogni sistema proprietario cerca di imporre il proprio standard, per motivi commerciali. Linux invece è un sistema aperto e quindi vuole essere in grado di gestire ogni sorta di caratteristica utile, ovunque essa venga. Il risultato è che oggi linux legge (e in alcuni casi scrive) una quantità impressionante di filesystem. Il comando mount supporta: minix, ext, ext2, xiafs, hpfs, msdos, umsdos, vfat, proc, nfs, iso9660, smbfs, ncpfs, affs, ufs, romfs, sysv, xenix, coherent; "umsdos" è il filesystem che usa linux per funzionare su una partizione dos; "nfs" è il famoso Network File System di Sun;

iso9660

è il filesystem dei CD-ROM supportato con estensione Joilet per i nomi lunghi; ext ed ext2 sono rispettivamente il vecchio e il nuovo filesystem nativo di Linux ( ext verrà messo in pensione con il kernel 2.2).

Una parte del codice sorgente per supportare questi filesystem è stato riscritto e ottimizzato al fine di velocizzare le operazioni di caching. Il nuovo kernel sarà in grado sicuramente di leggere (ma forse, almeno nelle prime release, non di scrivere) NTFS, HPFS e la FAT-32 di Windows 98.

Potrà leggere e scrivere dischi Mac HFS e HFS+. Anche l'apertura verso altri sistemi UNIX è notevole: Linux 2.2 supporterà UFS (usato da sistemi UNIX-BSD); potrà leggere le tavole di partizione dei dischi SunOS e Solaris (due sistemi operativi di Sun) e FreeBSD (un "concorrente" di linux nel mercato free). Il codice di SYSVFS è stato inoltre aggiornato.

Linux offre inoltre la possibilità di montare i cosiddetti filesystem di "loopback" cioè dei normali file che costituiscono l'immagine (potremmo dire la fotocopia) di un disco reale su cui è presente un certo filesystem. Questo consente di gestire intere partizioni in modo virtuale.

Ad esempio per masterizzare i CD è possibile montare un filesystem iso9660 come loopback, lavorarci su e poi alla fine "copiarlo" sul dispositivo con la masterizzazione vera e propria.

Linux 2.2 migliora ulteriormente queste caratteristiche dando la possibilità di lavorare con filesystem di loopback criptati, una caratteristica utile se vogliamo ad esempio inviare l'immagine della partizione via internet in modo sicuro.

 

Multimedia e Grafica

 

Il codice sorgente del suono è stato riscritto in parte per consentire a linux di avere un driver del suono completamente modulare. Questo faciliterà la vita degli sviluppatori, consentendo una piú agevole scrittura del codice.

Linux avrà anche un supporto per hardware multimediale meno convenzionale: schede "radio tuner" e videocamere digitali.

Considerato che linux è anche un'ottima workstation grafica, quella di poter gestire filmati (magari anche con le potenzialità di DVD) è una caratteristica non indifferente, ma non è questa la novità piú importante per la grafica.

La vera novità è che ora linux kernel (per Intel) non solo sarà in grado di dialogare con dispositivi testo (console), ma anche con quelli grafici. Fino ad oggi per lavorare in grafica è necessario utilizzare librerie esterne: "svgalib", oppure il server X per un sistema a finestre.

Ora linux sarà in grado di gestire direttamente dispositivi grafici, anche se presumibilmente, almeno all'inizio, non saranno molte le schede grafiche supportate.

Networking Hardware

Per quanto riguarda le schede di rete, i modem e i dispositivi ISDN sappiamo che è già vasta la gamma dell' hardware riconosciuto.

D' altra parte linux è nato in ambito internet, ed è normale che questo sia uno dei suoi punti di forza.

Tuttavia il numero di questi dispositivi riconosciuti è ulteriormente aumentato, specialmente le schede ethernet (impossibile fare qui una lista, anche parziale)

 

Networking protocols

La novità piú importante riguarda il supporto per il protocollo internet di nuova generazione: IPv6; attualmente Linux implementa l'Internet Protocol ver 4 (IPv4).

IPv6 garantirà connessioni piú sicure e accettabili soprattutto per quanto riguarda i dati "multimediali", tipo suono e video e risolverà inoltre il problema della carenza di indirizzi IP che saranno ora a 128 bit, invece che a 32.

Sono stati inoltre migliorati i protocolli AppleTalk (le reti di Apple), i sistemi di firewall, routing e tunnelling.

Hamradio

Novità anche per i radioamatori.

Linux è il sistema preferito di molti radioamatori in quanto supporta nativamente caratteristiche utili a questa schiera di appassionati di tutto il mondo. Il kernel 2.2 avrà la possibilità di creare una rete di piú macchine via onde radio.

 

Ed inoltre:

Sarà possibile eliminare il supporto per i terminali virtuali (attivati con ALT+Fn), risparmiando memoria.

Sarà possibile caricare le codepage UNICODE, utili per una maggiore internazionalizzazione.

Le funzionalità di caricamento dei moduli (kmod) saranno al 100% in modalità kernel, mentre attualmente (kerneld) opera in parte in modalità utente.

Conclusioni

Quanto detto risulta essere interessante sia per gli utenti che per gli sviluppatori.

I primi hanno a disposizione una gamma di hardware sempre piú vasta: ormai (a meno di non avere hardware molto particolare) è sempre piú facile per un utente che il proprio hardware sia pienamente supportato in linux, e i tempi in cui tutti gli utenti linux erano assimilati ad "hakers" sono finiti! Questo dimostra che Linux ha veramente qualcosa da offrire nei piú svariati campi (scuola e ricerca, reti, grafica, controllo di processi, multimedia, publishing...).

Chi vedrà i maggiori vantaggi sono però gli sviluppatori, che dovranno sempre meno preoccuparsi sull'hardware, utilizzando le primitive del kernel.

Ma i benefici per gli sviluppatori si ripercuotono automaticamente sugli utenti; si prepara uno scenario futuro positivo per linux: se sviluppare diventa piú facile avremo piú sviluppatori che si orienteranno verso questo sistema, accrescendone non solo il già altissimo numero di applicazioni utente, ma anche la relativa qualità.