Avanti Indietro Indice

3. Come configurare realmente il kernel.

3.1 Procurarsi i sorgenti

È possibile ottenere i sorgenti in ftp anonimo da ftp.kernel.org nella directory /pub/linux/kernel/vx.y, dove x.y sono la versione (eg 2.2) e, come menzionato in precedenza, quelli che finiscono con un numero dispari sono le release di sviluppo e possono essere instabili. Tipicamente il file si chiama linux-x.y.z.tar.gz, dove x.y.z è il numero della versione. I siti solitamente conservano anche una versione con suffisso .bz2, che è stata compressa con bzip2 (questi file saranno più piccoli e necessiteranno di minor tempo per il trasferimento).

La cosa migliore è usare ftp.xx.kernel.org dove xx è il codice della propria nazione; ad esempio ftp.it.kernel.org per l'Italia e ftp.us.kernel.org per gli Stati Uniti.

3.2 Decomprimere i sorgenti

Si faccia il login (o si usi su) come `root', e si passi (con cd) in /usr/src. Se si sono installati i sorgenti del kernel quando si è installato per la prima volta linux (come fanno molti), là ci sarà già una directory chiamata `linux', che contiene l'intero vecchio albero dei sorgenti. Se si ha spazio su disco e si vuole andare sul sicuro, si conservi quella directory. Una buona idea è di scoprire quale versione gira nel proprio sistema e rinominare di conseguenza la directory. Il comando `uname -r' mostra la versione del kernel corrente. Quindi, se `uname -r' dice `1.0.9', si vorrà rinominare (con `mv') `linux' in `linux-1.0.9'. Se ci si sente abbastanza temerari, semplicemente si cancelli l'intera directory. In ogni caso, ci si assicuri che non esista una directory `linux' in /usr/src prima di decomprimere il codice sorgente.

Ora, in /usr/src, si decomprimano ("spacchettino") i sorgenti con `tar zxpvf linux-x.y.z.tar.gz' (se si ha semplicemente un file .tar senza .gz alla fine, basta `tar xpvf linux-x.y.z.tar'). Il contenuto dei sorgenti scorrerà sullo schermo. Al termine, ci sarà una nuova directory `linux' in /usr/src. Si faccia cd in linux e si dia un'occhiata al file README. Ci sarà una sezione etichettata `INSTALLING the kernel'. Si seguano le istruzioni quando appropriate: link simbolici da sistemare, rimozione di vecchi file .o, ecc.

Se si ha un file .bz2 e il programma bzip2 (si legga a proposito a http://www.muraroa.demon.co.uk/), si faccia questo:

     bz2cat linux-x.y.z.tar.bz2 | tar xvf -

3.3 Configurare il kernel

Nota: Alcune parti di questa sezione sono reiterazioni/chiarificazioni di una sezione simile nel file README di Linus.

Il comando `make config' lanciato in /usr/src/linux avvia uno script di configurazione che fa molte domande. Richiede la bash, e quindi si verifichi che bash sia /bin/bash, /bin/sh oppure $BASH.

Comunque, ci sono alcune alternative più carine a `make config' e molto facilmente le si troverà più facili e comode da usare. `make menuconfig' è probabilmente la più usata. Qualsiasi si scelga, è meglio che per prima cosa si familiarizzi con l'interfaccia poiché può capitare di doverci tornare prima di quanto si pensi. Quelli che ``usano X'', possono provare `make xconfig' se hanno installato Tk (`click-o-rama' - Nat). `make menuconfig' è per quelli che hanno le (n)curses e preferiscono un menù testuale. Queste interfacce hanno un vantaggio piuttosto evidente: se ci si incasina e si fa una scelta sbagliata durante la configurazione, è semplice tornare indietro e sistemarla.

Con `make menuconfig' e `make xconfig' le opzioni di configurazione appariranno in gerarchie.

Alle domande si risponde tipicamente con `y' (sì) o `n' (no). I device driver tipicamente hanno un'opzione `m', che significa ``modulo'', intendendo che il sistema lo compilerà, ma non direttamente dentro al kernel ma piuttosto come modulo caricabile. Un modo più comico per descriverla è come ``maybe'' (può essere). Alcune delle opzioni più ovvie e non critiche non sono qui descritte e per una breve descrizione di alcune altre si veda la sezione ``Altre opzioni di configurazione''. Con `make menuconfig', la barra spaziatrice attiva la selezione.

Nei kernel 2.0.x e successivi, c'è un'opzione `?', che fornisce una breve descrizione dei parametri di configurazione. Le informazioni probabilmente sono le più aggiornate. Qui di seguito un elenco di alcune importanti caratteristiche (tra parentesi la gerarchia alla quale appartengono) seguite da una breve spiegazione.

Kernel math emulation (Processor type and features)

Emulazione matematica a livello kernel (Tipo di processore e caratteristiche)

Se non si ha un coprocessore matematico (si ha un semplice 386 o un 486SX), si deve rispondere `y' a questa domanda. Se si ha un coprocessore e si risponde comunque `y', non ci si preoccupi troppo: è comunque usato il coprocessore ed è ignorata l'emulazione. Per qualsiasi macchina moderna, la risposta sarà negativa, ma non ci si preoccupi se accidentalmente si risponde sì; se non serve, non è usata.

Enhanced (MFM/RLL) disk and IDE disk/cdrom support (Block Devices)

Supporto per dischi Enhanced (MFM/RLL) e dischi/cdrom IDE (Dispositivi a Blocchi)

Probabilmente si ha bisogno di questo supporto; significa che il kernel supporterà i dischi fissi standard dei PC, che la maggior parte della gente ha. Questo driver non comprende i dischi SCSI; vengono dopo nella configurazione.

Poi verrà chiesto del supporto per ``old disk-only'' (solo dischi vecchi) e dei driver ``new IDE'' (nuovi IDE). Se ne scelga uno; la maggior differenza è che il vecchio driver supporta solo due dischi in una interfaccia, mentre il nuovo supporta una interfaccia secondaria e un lettore cdrom IDE/ATAPI. Il nuovo driver è 4k più grande del vecchio e si suppone sia pure ``migliorato'', intendendo che a parte contenere un numero diverso di bug, potrebbe migliorare le prestazioni dei dischi, specialmente se si ha dell'hardware recente (di tipo EIDE).

Networking support (General Setup)

Supporto di rete (Impostazioni Generali)

All'inizio, conviene rispondere semplicemente `y' se la propria macchina è in una rete come Internet o si vuole usare SLIP, PPP, term, ecc per avere l'accesso ad Internet. Comunque, poiché molti pacchetti (come l'X window system) richiedono il supporto di rete, si dovrebbe rispondere `y' anche se la propria macchina non risiede in una vera rete. Più tardi, verrà chiesto se si vuole il supporto per il networking TCP/IP; ancora, si risponda `y' anche lì a meno che non si sia assolutamente sicuri.

System V IPC (General Setup)

IPC System V (Impostazioni Generali)

Una delle migliori definizioni di IPC (Interprocess Communication - Comunicazione Interprocessi) è nel glossario del Perl book. Non è da sorprendersi se alcuni programmatori Perl l'adoperano per permettere ai processi di parlarsi l'un l'altro, come fanno molti altri programmi (DOOM, fra gli altri), e quindi non è una buona idea rispondere n a meno che non si sappia esattamente quello che si sta facendo.

Processor family (Processor type and features)

(in older kernels: Use -m486 flag for 486-specific optimizations)

Famiglia del processore (Tipo di processore e caratteristiche)
(nei vecchi kernel: Uso il flag -m486 per ottimizzazioni specifiche per il 486)

Tradizionalmente, si traduceva in alcune ottimizzazioni per un particolare processore; il kernel girava bene anche su altri chip, ma era un po' più grande. Comunque, nei nuovi kernel questo non è più vero, e quindi si può specificare il processore per il quale si sta compilando il kernel. Un kernel ``386'' funzionerà per tutte le macchine.

SCSI support

Supporto SCSI

Se si posseggono dispositivi SCSI, si risponda `y'. Saranno chieste ulteriori informazioni, come il supporto per CD-ROM, dischi e quale tipo di adattatore SCSI si possiede. Si veda lo SCSI HOWTO per maggiori dettagli.

Network device support

Supporto dei dispositivi di rete

Se si ha una scheda di rete o si vuole usare SLIP, PPP o un adattatore per porta parallela per connettersi ad Internet, si risponda `y'. Lo script di configurazione chiederà poi il tipo di scheda che si possiede e quale protocollo usare.

Filesystems

Filesystem

Lo script di configurazione chiede se si vuole il supporto per i seguenti filesystem:

Standard (minix) - Le distribuzioni più nuove non creano filesystem minix e molti non lo usano più, ma può ancora essere una buona idea configurarlo. Alcuni programmi per la creazione di ``dischi di ripristino''(rescue disk) lo usano e molti floppy hanno ancora un filesystem minix, poiché minix è meno doloroso da usare su un floppy.

Second extended - Questo è il filesystem standard di Linux. Sicuramente se ne ha uno di questo tipo e si deve rispondere `y'.

msdos - Se si vogliono usare partizioni MS-DOS del disco fisso, montare dischetti formattati in DOS, si risponda `y'.

Sono disponibili diversi altri tipi di filesystem di altri sistemi operativi.

/proc - (un idea dei Bell Labs, penso). Uno non crea un filesystem proc in un disco; è un interfaccia filesystem al kernel e ai processi. Molti visualizzatori di processi (come `ps') lo usano. Qualche volta si provi `cat /proc/meminfo' o `cat /proc/devices'. Alcune shell (rc, in particolare) usano /proc/self/fd (noto come /dev/fd su altri sistemi) per l'I/O. Si deve certamente rispondere `y' a questa domanda; molti strumenti importanti ne dipendono.

NFS - Se la propria macchina vive in una rete e si vogliono usare filesystem su altri sistemi con NFS, si risponda `y'.

ISO9660 - Presente nella maggior parte dei CD-ROM. Se si ha un lettore CD-ROM e lo si vuole usare sotto Linux, si risponda `y'.

Ma io non so di quali filesystem ho bisogno!

Ok, si digiti `mount'. L'output apparirà simile a questo:

    blah# mount
    /dev/hda1 on / type ext2 (defaults)
    /dev/hda3 on /usr type ext2 (defaults)
    none on /proc type proc (defaults)
    /dev/fd0 on /mnt type msdos (defaults)

i guardi ogni riga; la parola dopo `type' è il tipo di filesystem. In questo esempio, i miei filesystem / e /usr sono second extended, sto usando /proc, e c'è un dischetto montato usando il filesystem msdos (bleah).

Si può provare `cat /proc/filesystems' se si ha /proc attualmente abilitato; elencherà i filesystem presenti nel kernel corrente.

La configurazione di filesystem raramente usati e non critici può causare un ingrossamento del kernel; si veda la sezione sui moduli per un modo di evitarlo e la sezione ``Trabocchetti'' per capire perché non è desiderabile un kernel grosso.

Character devices

Dispositivi a caratteri

Qui si abilita il driver per la propria stampante (parallela), per il busmouse, per il mouse PS/2 (molti portatili usano il protocollo del mouse PS/2 per le loro trackball), per alcuni dispositivi a nastro e altri dispositivi ``a carattere'' di questo tipo. Si risponda `y' quando appropriato.

Nota: gpm è un programma che permette l'uso di un mouse fuori dall'ambiente X per il cut and paste ("taglia e incolla") tra le console virtuali. È piuttosto carino se si ha un mouse seriale, poiché coesiste bene con X, ma sono necessari alcuni altri trucchi per gli altri tipi di mouse.

Sound

Audio

Se si desidera ardentemente di sentire biff abbaiare, si risponda `y' e si potrà confessare tutto sulla propria scheda audio al programma di configurazione (una nota sulla configurazione della scheda audio: quando viene chiesto se si vuole installare la versione completa del driver, si può rispondere `n' risparmiando un po' di memoria scegliendo solo le caratteristiche che si giudicano necessarie).

Se si è seriamente interessati al supporto per la scheda audio, si dia un'occhiata sia al driver libero a http://www.linux.org.uk/OSS/ che all'Open Sound System commerciale a http://www.opensound.com/.

Altre opzioni di configurazione

Qui non sono state elencate tutte le opzioni di configurazione perché cambiano troppo spesso o sono piuttosto banali (per esempio, 3Com 3C509 support per compilare il device driver per questa particolare scheda ethernet). Esista una lista esaustiva di tutte le opzioni (più un metodo per metterle nello script Configure) in un lavoro avviato e mantenuto da Axel Boldt (boldt@math.ucsb.edu) e nel suo help in linea. È pure disponibile come un unico grosso file in Documentation/Configure.help nel proprio albero dei sorgenti del kernel a partire dalla versione 2.0.

Kernel hacking

>Dal README di Linus:

i dettagli della configurazione ``kernel hacking'' solitamente risultano in un kernel più grosso è più lento (o entrambi) e possono pure rendere il kernel meno stabile configurando alcune routine che provano attivamente a rompere il cattivo codice per trovare i problemi del kernel (kmalloc()). Quindi probabilmente si dovrebbe rispondere `n' alla domanda nel caso di un kernel di ``produzione''.

3.4 E ora cosa? (Il Makefile)

Dopo aver finito la configurazione, un messaggio comunica che il proprio kernel è stato configurato, e di ``controllare il Makefile di più alto livello per ulteriori configurazioni'' (``check the top-level Makefile for additional configuration''), ecc.

Quindi, si dia un'occhiata al Makefile. Probabilmente non sarà necessario modificarlo, ma non può far male guardarlo. Si possono pure cambiare le sue opzioni con il comando `rdev' una volta installato il nuovo kernel. Se ci si perde guardando quel file, non è da preoccuparsi.


Avanti Indietro Indice