<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>The Linux Kernel HOWTO: Come configurare effettivamente il kernel </TITLE> <LINK HREF="Kernel-HOWTO-5.html" REL=next> <LINK HREF="Kernel-HOWTO-3.html" REL=previous> <LINK HREF="Kernel-HOWTO.html#toc4" REL=contents> </HEAD> <BODY> <A HREF="Kernel-HOWTO-5.html">Avanti</A> <A HREF="Kernel-HOWTO-3.html">Indietro</A> <A HREF="Kernel-HOWTO.html#toc4">Indice</A> <HR> <H2><A NAME="s4">4. Come configurare effettivamente il kernel </A></H2> <P> <P> <H2><A NAME="ss4.1">4.1 Procurarsi i sorgenti </A> </H2> <P> <P>È possibile ottenere i sorgenti in ftp anonimo da <CODE>ftp.kernel.org</CODE> nella directory <CODE>/pub/linux/kernel/vx.y</CODE>, dove <CODE>x.y</CODE> sono la versione (es. 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 <CODE>linux-x.y.z.tar.gz</CODE>, dove <CODE>x.y.z</CODE> è il numero della versione. I siti solitamente conservano anche una versione con suffisso <CODE>.bz2</CODE>, che è stata compressa con bzip2 (questi file saranno più piccoli e richiederanno di minor tempo per il trasferimento). <P>La cosa migliore è usare <CODE>ftp.xx.kernel.org</CODE> dove <CODE>xx</CODE> è il codice della propria nazione; ad esempio <CODE>ftp.it.kernel.org</CODE> per l'Italia e <CODE>ftp.us.kernel.org</CODE> per gli Stati Uniti. <P> <P> <H2><A NAME="ss4.2">4.2 Decomprimere i sorgenti </A> </H2> <P> <P>Si faccia il login (o si usi <CODE>su</CODE>) come "<CODE>root</CODE>" e si cambi directory in <CODE>/usr/src</CODE>. Se si sono installati i sorgenti del kernel quando si è installato per la prima volta Linux (come fanno molti), ci sarà già una directory chiamata "<CODE>linux</CODE>", 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 "<CODE>uname -r</CODE>" mostra la versione del kernel corrente. Quindi, se "<CODE>uname -r</CODE>" dice "<CODE>1.0.9</CODE>", si vorrà rinominare (con "<CODE>mv</CODE>") "<CODE>linux</CODE>" in "<CODE>linux-1.0.9</CODE>". Se ci si sente abbastanza temerari, semplicemente si cancelli l'intera directory. In ogni caso, ci si assicuri che non esista una directory "<CODE>linux</CODE>" in <CODE>/usr/src</CODE> prima di decomprimere il codice sorgente. <P> <P>Ora, in <CODE>/usr/src</CODE>, si scompattino i sorgenti con "<CODE>tar zxpvf linux-x.y.z.tar.gz</CODE>" (se si ha semplicemente un file <CODE>.tar</CODE> senza <CODE>.gz</CODE> alla fine, basta <CODE>tar xpvf linux-x.y.z.tar</CODE>"). Il contenuto dei sorgenti scorrerà sullo schermo. Al termine, ci sarà una nuova directory "<CODE>linux</CODE>" in <CODE>/usr/src</CODE>. Si faccia "<CODE>cd linux</CODE>" e si dia un'occhiata al file <CODE>README</CODE>. Ci sarà una sezione etichettata "<CODE>INSTALLING the kernel</CODE>". Si seguano le istruzioni quando appropriate: link simbolici da sistemare, rimozione di vecchi file <CODE>.o</CODE>, ecc. <P>Se si ha un file <CODE>.bz2</CODE> e il programma bzip2 (si consulti <CODE>http://www.muraroa.demon.co.uk/</CODE>), si dia: <P> <PRE> bz2cat linux-x.y.z.tar.bz2 | tar xvf - </PRE> <P> <H2><A NAME="ss4.3">4.3 Configurare il kernel </A> </H2> <P> <P>Nota: Alcune parti di questa sezione sono reiterazioni/chiarificazioni di una sezione simile nel file <CODE>README</CODE> di Linus. <P> <P>Il comando "<CODE>make config</CODE>" lanciato in <CODE>/usr/src/linux</CODE> avvia uno script di configurazione che pone molte domande. Richiede la bash, quindi si verifichi che bash sia <CODE>/bin/bash</CODE>, <CODE>/bin/sh</CODE> oppure <CODE>$BASH</CODE>. <P> <P>Comunque, ci sono alcune alternative più carine a "<CODE>make config</CODE>" e molto probabilmente le si troverà più facili e comode da usare. "<CODE>make menuconfig</CODE>" è probabilmente la più usata. Qualsiasi si scelga, è meglio che per prima cosa familiarizzare con l'interfaccia poiché può capitare di doverci tornare prima di quanto si pensi. Quelli che non possono fare a meno di X possono provare "<CODE>make xconfig</CODE>" se hanno installato Tk ("click-o-rama" - Nat). "<CODE>make menuconfig</CODE>" è per quelli che hanno le (n)curses e preferiscono un menu 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. <P> <P>Con "<CODE>make menuconfig</CODE>" e "<CODE>make xconfig</CODE>" le opzioni di configurazione appariranno ordinate gerarchicamente. <P> <P>Alle domande si risponde tipicamente con "<CODE>y</CODE>" (Sì) o "<CODE>n</CODE>" (No). I device driver tipicamente hanno un'opzione "<CODE>m</CODE>", che significa "modulo", intendendo che il sistema lo compilerà 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, per una breve descrizione di alcune altre si veda la sezione "Altre opzioni di configurazione". Con "<CODE>make menuconfig</CODE>", la barra spaziatrice attiva la selezione. <P> <P>Nei kernel 2.0.x e successivi c'è un'opzione "?", che fornisce una breve descrizione dei parametri di configurazione. Si tratta di informazioni di solito davvero aggiornate. Qui di seguito un elenco di alcune importanti funzionalità (tra parentesi la gerarchia alla quale appartengono) seguite da una breve spiegazione. <P> <P> <H3>Kernel math emulation (Processor type and features)</H3> <P> <P><EM>Emulazione matematica a livello kernel (Tipo di processore e caratteristiche)</EM> <P>Se non si ha un coprocessore matematico (si ha un semplice 386 o un 486SX), si deve rispondere "<CODE>y</CODE>" a questa domanda. Se si ha un coprocessore e si risponde comunque "<CODE>y</CODE>", non ci si preoccupi troppo: verrà 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. <P> <P> <H3>Enhanced (MFM/RLL) disk and IDE disk/cdrom support (Block Devices)</H3> <P> <P><EM>Supporto per dischi Enhanced (MFM/RLL) e dischi/cdrom IDE (Dispositivi a blocchi)</EM> <P>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. <P>Poi verrà chiesto del supporto per "old disk-only" (solo dischi vecchi) e dei driver "new IDE" (IDE recenti). Se ne scelga uno; la maggior differenza è che il vecchio driver supporta solo due dischi su una singola interfaccia, mentre il nuovo supporta una interfaccia secondaria e i lettori 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). <P> <P> <H3>Networking support (General Setup)</H3> <P> <P><EM>Supporto di rete (Impostazioni generali)</EM> <P> <P>All'inizio, conviene rispondere semplicemente "<CODE>y</CODE>" se la propria macchina è già in rete o si vuole usare SLIP, PPP, term ecc. per avere accesso a Internet. Comunque, dato che molti pacchetti (come X Window) richiedono il supporto di rete, si dovrebbe rispondere "<CODE>y</CODE>" anche se la propria macchina non è collegata in rete. Più tardi, verrà chiesto se si vuole il supporto per il networking TCP/IP; ancora una volta, si risponda "<CODE>y</CODE>" a meno di non essere assolutamente sicuri del contrario. <P> <P> <H3>System V IPC (General Setup)</H3> <P> <P><EM>IPC System V (Impostazioni generali)</EM> <P> <P>Una delle migliori definizioni di IPC (InterProcess Communication) si trova nel glossario del libro del Perl. Non c'è 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), quindi non è una buona idea rispondere <CODE>n</CODE> a meno che non si sappia esattamente quello che si sta facendo. <P> <P> <H3>Processor family (Processor type and features)</H3> <P>(in older kernels: Use -m486 flag for 486-specific optimizations) <P> <P><EM>Famiglia del processore (Tipo di processore e caratteristiche) <BR> (nei vecchi kernel: usare il flag -m486 per ottimizzazioni specifiche per il 486)</EM> <P> <P>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, quindi si può specificare il processore per il quale si sta compilando il kernel. Un kernel "386" funzionerà su tutte le macchine. <P> <P> <H3>SCSI support</H3> <P> <P><EM>Supporto SCSI</EM> <P> <P>Se si posseggono dispositivi SCSI, si risponda "<CODE>y</CODE>". 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. <P> <P> <H3>Network device support</H3> <P> <P><EM>Supporto ai dispositivi di rete</EM> <P> <P>Se si ha una scheda di rete o si vuole usare SLIP, PPP o un adattatore per porta parallela per connettersi a Internet, si risponda "<CODE>y</CODE>". Lo script di configurazione chiederà poi il tipo di scheda che si possiede e quale protocollo usare. <P> <P> <H3>Filesystems</H3> <P> <P><EM>Filesystem</EM> <P> <P>Lo script di configurazione chiede se si vuole il supporto per i seguenti filesystem: <P> <P>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 lo usano e molti dischetti hanno ancora un filesystem minix, poiché minix è meno complicato da usare su un dischetto. <P> <P>Second extended (ext2) -- Questo è il filesystem standard di Linux. Sicuramente se ne ha uno di questo tipo e si deve rispondere "<CODE>y</CODE>". <P> <P>msdos -- Se si vogliono usare partizioni MS-DOS del disco fisso o montare dischetti formattati in DOS, si risponda "<CODE>y</CODE>". <P> <P>Sono disponibili diversi altri tipi di filesystem di altri sistemi operativi. <P> <P>/proc -- (un'idea dei Bell Labs, penso). Non si crea un vero filesystem proc in un disco; è un interfaccia stile filesystem al kernel e ai processi. Molti visualizzatori di processi (come "<CODE>ps</CODE>") lo usano. Magari si provi "<CODE>cat /proc/meminfo</CODE>" o "<CODE>cat /proc/devices</CODE>". Alcune shell (rc, in particolare) usano <CODE>/proc/self/fd</CODE> (noto come <CODE>/dev/fd</CODE> su altri sistemi) per l'I/O. Si deve certamente rispondere "<CODE>y</CODE>" a questa domanda, molti strumenti importanti dipendono da <CODE>/proc</CODE>. <P> <P>NFS -- Se la propria macchina sta su una rete e si vogliono usare filesystem che risiedono fisicamente su altri sistemi con NFS, si risponda "<CODE>y</CODE>". <P> <P>ISO9660 -- Presente nella maggior parte dei CD-ROM. Se si ha un lettore CD-ROM e lo si vuole usare sotto Linux, si risponda "<CODE>y</CODE>". <P> <P> <H3>Ma io non so di quali filesystem ho bisogno!</H3> <P> <P>Ok, basta digitare "<CODE>mount</CODE>". L'output sarà una cosa del genere: <P> <P> <BLOCKQUOTE><CODE> <PRE> 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) </PRE> </CODE></BLOCKQUOTE> <P>Si osservi ogni riga; la parola dopo "<CODE>type</CODE>" è il tipo di filesystem. In questo esempio, i filesystem <CODE>/</CODE> e <CODE>/usr</CODE> sono ext2, si sta usando <CODE>/proc</CODE> e c'è un dischetto montato usando il filesystem msdos (bleah!). <P>Si può provare "<CODE>cat /proc/filesystems</CODE>" se si ha <CODE>/proc</CODE> attualmente abilitato; elencherà i filesystem presenti nel kernel corrente. <P>La configurazione di filesystem raramente usati e non critici può causare un inutile aumento delle dimensioni del kernel; si veda la sezione sui moduli per sapere come evitarlo e la sezione "Alcuni trabocchetti" per capire perché non è desiderabile un kernel voluminoso. <P> <P> <H3>Character devices </H3> <P> <P><EM>Dispositivi a carattere</EM> <P> <P>Qui si abilitano i 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 "<CODE>y</CODE>" quando appropriato. <P> <P>Nota: <CODE>gpm</CODE> è un programma che permette l'uso di un mouse fuori dall'ambiente X per il "taglia e incolla" tra le console virtuali. È piuttosto carino se si ha un mouse seriale, poiché coesiste bene con X, ma necessita di trucchi particolari con altri tipi di mouse. <P> <P> <H3>Sound</H3> <P> <P><EM>Audio</EM> <P> <P>Se si desidera ardentemente di sentire qualche bel <CODE>bau bau</CODE>, si risponda "<CODE>y</CODE>" 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 "<CODE>n</CODE>" per risparmiare un po' di memoria scegliendo solo le caratteristiche che si giudicano necessarie). <P> <P>Se si è seriamente interessati al supporto per la scheda audio, si dia un'occhiata sia ai driver libero a <CODE>http://www.linux.org.uk/OSS/</CODE> sia all'Open Sound System commerciale a <CODE>http://www.opensound.com/</CODE>. <P> <P> <H3>Altre opzioni di configurazione</H3> <P> <P>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). C'è una lista esaustiva di tutte le opzioni (più un metodo per metterle nello script <CODE>Configure</CODE>) in un lavoro avviato e mantenuto da Axel Boldt (<CODE>boldt@math.ucsb.edu</CODE>) e nel suo help in linea. È pure disponibile come un unico grosso file in <CODE>Documentation/Configure.help</CODE> nel proprio albero dei sorgenti del kernel a partire dalla versione 2.0. <P> <P> <H3>Kernel hacking </H3> <P> <P>>Dal README di Linus: <P> <BLOCKQUOTE> con la configurazione per il "kernel hacking" solitamente si ottiene un kernel più grosso o più lento (o entrambi), spesso meno stabile a causa di alcune routine che provano attivamente a rompere codice scorretto per scovare problemi nel kernel (kmalloc()). Quindi probabilmente si dovrebbe rispondere "n" alla domanda in caso si voglia compilare un kernel di produzione. </BLOCKQUOTE> <P> <P> <H2><A NAME="ss4.4">4.4 E adesso? (Il Makefile) </A> </H2> <P> <P>Dopo aver finito la configurazione, un messaggio comunica che il proprio kernel è stato configurato, e di "controllare il <CODE>Makefile</CODE> di livello più alto per ulteriori configurazioni" ("check the top-level <CODE>Makefile</CODE> for additional configuration") ecc. <P> <P>Quindi, si dia un'occhiata al <CODE>Makefile</CODE>. Probabilmente non sarà necessario modificarlo, ma non può far male guardarlo. Si possono pure cambiare le sue opzioni con il comando "<CODE>rdev</CODE>" una volta installato il nuovo kernel. Se ci si perde guardando quel file, non c'è da preoccuparsi. <P> <P> <HR> <A HREF="Kernel-HOWTO-5.html">Avanti</A> <A HREF="Kernel-HOWTO-3.html">Indietro</A> <A HREF="Kernel-HOWTO.html#toc4">Indice</A> </BODY> </HTML>