Best View 1024 X 768

 

 

 

 

 

Home Page

 

W W W . J N E T W O R L D . C O M

 

Home > Tech > Linux > Kernel

 

Introduzione

Installazione

Kernel

Rete

Links

Linguaggi

 

 

 

 

  

 

LINUX

Il Kernel e la sua configurazione

 

COSA E' IL KERNEL
Si può immaginare il kernel come una specie di cuore del sistema operativo.
Esso, infatti, non è altro che una una sorta di "programma a basso livello", che si prende cura dei processi (ovvero dei programmi in esecuzione) e che funge da interfaccia tra il livello delle applicazioni e l'hardware sottostante; i suoi compiti principali, oltre a filtrare le richieste dei processi verso l'hardware, sono quelle di mantenere traccia degli stessi, di riservare a ciascuno uno spazio nella memoria e di gestire quello che in termini informatici viene definito come "scheduling", una funzione atta a garantire che tutti i programmi in esecuzione possano fruire della CPU per le elaborazioni.

 

IL KERNEL DI LINUX
Il kernel di Linux, sviluppato dall'ormai ultraosannato Linus Torlvalds e da altri volontari, viene innanzitutto distribuito come sorgente in linguaggio C, ed è proprio per questo motivo che deve essere compilato "personalmente" per poterlo utilizzare (un listato in linguaggio C non può infatti essere eseguito direttamente dal computer... deve venire prima trasformato in un formato fruibile direttamente - il formato eseguibile - attraverso una fase che viene detta "compilazione"). Esistono varie versioni del kernel, in quanto questo viene costantemente aggiornato per migliorarne le prestazioni e/o correggere Bug presenti nelle versioni precedenti.

 

VERSIONI DI KERNEL:
Esistono in contemporanea due versioni differenti dei sorgenti del kernel, una assolutamente stabile per gli utenti "normali" e una più "sperimentale" (ma comunque altamente stabile in linea di massima) per gli sviluppatori e gli smanettoni: attualmente le versioni stabili sono quelle contraddistinte con il numero di versione 2.0.X, mentre quelle per gli sviluppatori hanno il numero di versione 2.1.X. Per capire se una versione del kernel è stabile o meno si osserva il secondo numero di versione (quello in mezzo): numeri pari = stabile, numeri dispari = sperimentale (infatti 2.0.X è stabile, 2.1.X è sperimentale).
Per conoscere quali siano le release più recenti del kernel occorre digitare al prompt dei comandi, una volta collegati alla rete:
finger @ftp.kernel.org

Questo è quanto appare a me in questo momento:

jvan:~> finger @ftp.kernel.org

[linux.kernel.org]
The latest stable version of the Linux kernel is: 2.0.35
The latest *beta* version of the Linux kernel is: 2.1.126
jvan:~>

(jvan è il nome della mia macchina).

 

^ On Top

 

A COSA SERVE IL KERNEL
Oltre all'ultima versione di kernel scaricato (possibilmente stabile...), vi servirà il compilatore gcc e una conoscenza per lo meno approssimativa del hardware del proprio Pc: tipo di hard disk che si utilizza (IDE o SCSI), il CD-ROM (oggigiorno dovrebbero essere tutti IDE o SCSI, tuttavia alcuni rimasugli del passato utilizzavano un controller proprietario), ma anche i dati inerenti alla scheda sonora, come ad esempio i numeri di DMA o IRQ. Queste informazioni le possiamo ottenere "a scrocco" dal caro e amato Windows 9X semplicemente premendo il pulsante destro su "risorse del computer".

 

^ On Top

 

LA SUA COMPILAZIONE
Una volta determinato i vari componenti hardware con i relativi indirizzi, bisogna entriare come root nel Pc e spostarsi innanzitutto nella directory /usr/src (comando "cd /usr/src"); dovremmo a questo punto trovare per lo meno due directory (utilizzate il comando "ls" per mostrare il contenuto della directory in questione): una si chiama linux-2.0.X (la versione del kernel, sempre che l'abbiate installata, contenuta nella distribuzione da voi utilizzata e quasi sicuramente non la più recente disponibile), mentre l'altra è un link a detta directory (ovvero scrivendo "cd linux-2.0.X" o "cd linux" si entra in pratica nella stessa directory). Visto che si è in possesso di una versione più recente fare in modo di sostituire i sorgenti obsoleti con quelli nuovi. L'operazione in questione è eseguita dai seguenti comandi (da eseguire ovviamente in /usr/src):

  1. mkdir linux-2.2.5 (crea la directory che andrà a contenere la versione del kernel 2.2.5)

  2. rm linux (cancella il link simbolico che punta alla vecchia directory dei sorgenti linux-2.0.X

  3. ln -s linux-2.2.5 linux (crea un nuovo link simbolico di nome linux che punta alla directory 2.2.5)

  4. tar xzvf /percorso/linux-2.2.5.tar.gz (al posto di percorso va sostituito il percorso in cui avete scaricato i sorgenti; questa operazione estrae dall'archivio compresso i sorgenti del kernel e li mette nella directory linux-2.2.5 creata in precedenza).

  5. rm -rf linux-2.0.X (cancella la vecchia directory dei sorgenti 2.0.X; -rf aggiunto al comando rm (remove) serve a dire "ricorsivo e forzato", in quanto il comando in questione solitamente non cancella directory che non sono vuote).

A questo punto occorre entrare nella directory linux con un bel "cd linux" al fine di eseguire la fase di messa a punto del kernel, che permetterà di scegliere quali componenti dello stesso includere in quello che sarà il nuovo cuore del Pc. A seconda del gusto personale sono disponibili tre differenti comandi per compiere questa operazione; la differenza sta esclusivamente nell'interfaccia che si vuole utilizzare:

  1. make config (modalità ascii: verrà visualizzato un elenco in cui selezionare i componenti con Y (yes), N (no) e M.

  2. make menuconfig (sempre modalità testo ma che si caratterizza per dei comodi menu in cui effettuare la selezione con il tasto spazio).

  3. make xconfig (da utilizzare se si ha attivo X Window. Permetterà di selezionare i componenti del kernel con pratici click del mouse).

Esistono 3 tipi di scelte da attribuire ai vari componenti : è possibile includerne uno con yes (asterisco se avete usato menuconfig), escluderlo con no (e in questo caso non verrà compilato nel Kernel), ma è anche possibile renderlo un "modulo" con la lettera "M". Uno si chiederà: cosa significa "modulo".È presto detto: sempre per alleggerire il kernel e non includere al suo interno componenti che non si utilizzano spesso, è possibile rendere questi ultimi modulari; in questo caso sarà possibile caricarli e scaricarli dalla memoria a seconda della necessità (se utilizzate i moduli vi consiglio vivamente di dire yes al supporto di kerneld che troverete tra le varie opzioni: esso fa in modo che queste operazioni siano automatiche e trasparenti all'utente; in caso contrario dovrete farle a mano!).
N.B. Aggiungere elementi che non servono al kernel non comporta nulla di particolare, se non aumentarne la dimensione e/o renderlo un po' più "pesante".

 

^ On Top

 

UN PO' DI AIUTO...
Code maturity level options: conviene lasciare questa voce così com'è, ovvero con la sola voce presente non selezionata
Loadable module support: aggiungete al supporto dei moduli nel kernel (voce Enable loadable module support) anche kernel deamon support: serve a far caricare al kernel i moduli in automatico.
General setup: in questo menu si seleziona il tipo di processore, si abilita l'emulazione del coprocessore matematico virtuale (per chi non ce lo avesse perché è ad esempio in possesso di un processore 486SX) e si limita la memoria a meno di 16 mega (l'opzione serve per alcune scheda madri bacate del passato che non riuscivano bene a gestire la memoria). Per un processore Pentium o superiore coviene lasciare le cose così come stanno (a meno di non possedere un PPro: in questo caso è possibile specificare questo tipo di CPU).
Floppy, IDE and other block devices: questa sezione è abbastanza lunga, ma per fortuna c'è ben poco da cambiare... Innanzitutto, a meno di non essere in possesso di una scheda madre che monta il chipset CMD640 o RZ1000, conviene eliminare queste 2 voci (il 90% delle schede madri montano in genere un chipset Intel, per lo meno per ora). Per il resto lasciare tutto così com'è.
Networking options: è una buona scelta lasciare le impostazioni così come stanno!
SCSI support: stessa cosa per questo menu... Se non disponete di un controller SCSI o non intendete accedere a un eventuale masterizzatore EIDE attivando l’emulazione SCSI-ATAPI, lasciate tutto disabilitato (scelta di default).
Network device support: nel caso di una macchina che si collega ad Internet mediante un modem selezionate come modulo la voce "ppp"; opzionalmente selezionate anche, sempre come modulo, la voce "plip": potrebbe tornare utile per creare connessioni TCP/IP tra due computer con un cavo null-modem parallelo. Infine, a meno che non possediate una scheda di rete ethernet, consiglio di deselezionare la voce "ethernet" e lasciare tutto il resto così come è.
ISDN subsystem: se non si possiede di una connessione ISDN lasciare tutto così come sta, ovvero con niente selezionato.
CD-ROM drivers: questa voce serve ad includere nel kernel il supporto per CD-ROM non ATAPI (quelli insomma che fanno uso di controller proprietario). Se si possiede un CD-ROM ATAPI lasciare tutto deselezionato.
Filesystems: seleziona i tipi di filesystem che il kernel supporterà una volta compilato... Suggerisco di mettere come modulo il filesystem "minix" e l'"extended" (non si sa mai, potrebbero anche servirvi!), di lasciare selezionato il "second extended" (se lo deselezionate non riuscirete più a fare il boot della macchina: è quello che utilizza Linux per le sue partizioni!!), e di selezionare con "yes" le voci "native language support", "ISO9660" (il filesystem dei CD-ROM!), "DOS FAT", "MSDOS", "FVAT" (i nomi lunghi nelle partizioni di Windows 95), "codepage 423", "NLS ISO 8859-1" "proc". Se si pensa di aver bisogno di NFS (network filesystem, serve per importare ed esportare il proprio filesystem in rete) selezionarlo come modulo. Lasciare il resto con le impostazioni di default.
Character devices: lasciare pure le cose come stanno, a meno che non possesiate una stampate; in quest'ultimo caso consiglio di selezionare il "parallel printer support" come modulo, in quanto l'utilizzo della stampante non è cosa indispensabile. NB: se si è in possesso di un mouse diverso da quello seriale (ad esempio PS/2) sarà necessario selezionare anche la voce "mouse support" e scegliere il proprio mouse dall'elenco sottostante.
Sound card support: se si è in possesso di una scheda sonora abilitare il supporto al sonoro.
Kernel hacking: queste due voci... per ora conviene deselezionarle.
La procedura di configurazione è conclusa!!! Ora occore quindi salvare la configurazione corrente con l'apposita opzione e uscire dal programma.


^ On Top

 

I COMANDI
Una volta eseguite le procedure precedenti occorre eseguire questi 5 comandi:

make dep; make clean; make bzImage; make modules; make modules_install

Questa operazione potrebbe richiedere diverso tempo e, come al solito, ciò viene notevolemente influenzato dal tipo di macchina che si sta utilizzando.

  • make dep; make clean: servono a ripulire i sorgenti di compilazioni precedenti; se si ha appena installato dei nuovi sorgenti, si possono anche evitare questi passaggi, ma in ogni caso è buona abitudine eseguirli (non si sa mai...).

  • make zImage: compila il nucleo del kernel

  • make modules; make modules_install: compilano ed installano i moduli al posto giusto.

Le ulrime operazioni da eseguire sono:

  1. Rinominare il vecchio kernel (solitamente si chiama vmlinuz) con estensione Old (non si sa mai, potrebbe sempre servire, almeno fino a quando non sie è sicuri che il nuovo kernel funzioni correttamente. In questo caso cancellarlo).
    N.b. Se non trovi la directory in cui è situato il kernel vecchio edita il file lilo.conf situato nella directory etc...

  2. cp /usr/src/linux/arch/i386/boot/bzImage /vmlinuz (copia il nuovo kernel, contenuto in /usr/src/linux/arch/i386/boot/ - ... il comando bzImage - nella root directory e lo chiama vmlinux, proprio come quello vecchio).

  3. lilo (serve ad aggiornare il LInux LOader per fargli caricare il nuovo kernel).

  4. shutdown -r now (fa il reboot della macchina)

Se dopo il riavvio il Pc non ha dato messaggi anomali e si è sicuri della stabilità del nuovo kernel, conviene eliminare la vecchia directory di linux, ovvero la 2.0.x. Si noti che in fase di avvio potrebbero scorgere alcuni messaggi di errore che reclamano la presenza dei moduli "char-major-10", "net-pf-4" e "net-pf-5". Si possono tranquillamente ignorarli, ma se vi danno fastidio editate il file /etc/conf.modules ed aggiungere le seguenti linee:
alias char-major-10 off
alias net-pf-4 off
alias net-pf-5 off

Al prossimo reboot tutto sarà sistemato...

 

^ On Top

 

ICQ: 64895872 - E-mail: jnet@iol.it

Best view: 1024 x 768 / all right reserved © 2000/2001 The Last Day in the Web 

   

 

 

On Top