Il kernel Unix funge da mediatore tra i programmi e l'hardware. Per prima cosa si occupa della (o organizza le cose per la) gestione della memoria per tutti i programmi in esecuzione (processi), e assicura che tutti abbiano una giusta (o ingiusta, a seconda dei gusti) porzione dei cicli del processore. Inoltre fornisce una buona interfaccia abbastanza portabile per far dialogare i programmi con l'hardware.
Ci sono certamente molte altre operazioni del kernel oltre a queste, ma queste funzioni basilari sono le più importanti da conoscere.
I kernel più nuovi generalmente offrono la possibilità di dialogare con un maggior numero di tipi di hardware (ovvero, hanno più device driver), possono avere una gestione migliore dei processi, possono girare più velocemente delle versioni più vecchie, possono essere più stabili delle versioni precedenti e possono correggere alcuni sciocchi bug delle vecchie versioni. La maggior parte della gente aggiorna il suo kernel perché vuole i device driver e le correzioni dei bug.
Si veda l'Hardware-HOWTO. In alternativa si può dare una scorsa al
file `config.in
' nei sorgenti di Linux o scoprirlo quando si
fa `make config
'. Quest'ultimo mostra tutto l'hardware
supportato dalla distribuzione standard del kernel, ma non tutto
quello che Linux supporta; molti device driver comuni (come i driver
PCMCIA e alcuni driver di dispositivi a nastro) sono moduli caricabili
mantenuti e distribuiti a parte.
Linus consiglia nel file README
incluso con i sorgenti del kernel
una versione di gcc. Se non si ha questa versione, la documentazione
nella versione raccomandata di gcc dovrebbe dire se è necessario
aggiornare la propria libc. Questa non è una procedura difficile, ma
è importante seguire le istruzioni.
Sono pezzi del codice del kernel non inclusi direttamente nel kernel. Si possono compilare separatamente e inserirli e toglierli da un kernel in esecuzione praticamente in qualsiasi momento. Grazie a questa flessibilità, questo è ora il modo preferito per programmare certe caratteristiche del kernel. Molti device driver popolari, come i driver PCMCIA e il driver per il dispositivo a nastro QIC-80/40, sono moduli caricabili.
Dipende dalla particolare configurazione del proprio sistema. Per prima cosa, i sorgenti compressi di Linux 2.2.9 sono quasi 14 megabyte. Molti li conservano anche dopo averli decompressi. La decompressione e la compilazione con una configurazione normale, occupano fino ad altri 67 MB.
Con le macchine più nuove la compilazione dura decisamente meno tempo che con quelle vecchie; un AMD K6-2/300 con un disco veloce può creare un kernel 2.2.x in circa 4 minuti. Se si ha intenzione di compilarne uno con i vecchi Pentium, 486 e 386 ci si prepari ad aspettare anche ore, giorni.
Se ciò crea problemi, e capita di poter compilare su una macchina più veloce in giro per la rete, è possibile compilare il kernel nella macchina più veloce (assumendo che si siano specificati i parametri giusti, che le proprie utility siano aggiornate e così via) e poi trasferire l'immagine del kernel nella macchina più lenta.