È possibile ottenere i sorgenti in ftp anonimo da
ftp.kernel.org
nella directory
/pub/linux/kernel/vx.y
, dove x.y
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 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 richiederanno
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.
Si faccia il login (o si usi su
) come "root
" e si cambi directory in /usr/src
.
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 "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 scompattino 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 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 consulti
http://www.muraroa.demon.co.uk/
), si dia:
bz2cat linux-x.y.z.tar.bz2 | tar xvf -
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 pone molte domande. Richiede la
bash, quindi si verifichi che bash sia /bin/bash
,
/bin/sh
oppure $BASH
.
Comunque, ci sono alcune alternative più carine a "make
config
" e molto probabilmente le si troverà più facili e comode da
usare. "make menuconfig
" è 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 "make
xconfig
" se hanno installato Tk ("click-o-rama" - Nat).
"make menuconfig
" è 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.
Con "make menuconfig
" e "make xconfig
" le opzioni di
configurazione appariranno ordinate gerarchicamente.
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à 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 "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. 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.
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: 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.
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" (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).
Supporto di rete (Impostazioni generali)
All'inizio, conviene rispondere semplicemente "y
" 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 "y
" 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 "y
"
a meno di non essere assolutamente sicuri del contrario.
IPC System V (Impostazioni generali)
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
n
a meno che non si sappia esattamente quello che si sta
facendo.
(in older kernels: Use -m486 flag for 486-specific optimizations)
Famiglia del processore (Tipo di processore e caratteristiche)
(nei vecchi kernel: usare 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, quindi si può specificare il processore per il quale si sta compilando il kernel. Un kernel "386" funzionerà su tutte le macchine.
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.
Supporto ai dispositivi di rete
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 "y
". Lo script di configurazione chiederà poi il
tipo di scheda che si possiede e quale protocollo usare.
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 lo usano e molti dischetti hanno ancora un filesystem minix, poiché minix è meno complicato da usare su un dischetto.
Second extended (ext2) -- 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 o
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). Non si crea un vero filesystem
proc in un disco; è un interfaccia stile filesystem al kernel e ai processi.
Molti visualizzatori di processi (come "ps
") lo usano.
Magari 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 dipendono da /proc
.
NFS -- Se la propria macchina sta su una rete e si vogliono usare
filesystem che risiedono fisicamente 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
".
Ok, basta digitare "mount
". L'output sarà una cosa del genere:
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)
Si osservi ogni riga; la parola dopo "type
" è il tipo di
filesystem. In questo esempio, i filesystem /
e
/usr
sono ext2, si sta 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 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.
Dispositivi a carattere
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
"y
" quando appropriato.
Nota: gpm
è 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.
Audio
Se si desidera ardentemente di sentire qualche bel bau bau
, 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
" per risparmiare 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 ai driver libero a
http://www.linux.org.uk/OSS/
sia all'Open Sound System
commerciale a http://www.opensound.com/
.
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 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.
>Dal README di Linus:
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.
Dopo aver finito la configurazione, un messaggio comunica che il
proprio kernel è stato configurato, e di "controllare il
Makefile
di livello più alto 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 c'è da preoccuparsi.