Guida alla compilazione del Kernel di Linux/68k
scritta da:
Versione 0.3ß 29-Novembre-1997
Questo HOW-TO è stato redatto nell'intendo di facilitare il compito di tutti
coloro che vogliono personalizzare o migliorare la propria Linux Box mediante la
compilazione del Kernel.
Questo HOW-TO NON deve essere seguito alla lettera, vuole essere solo
un'indicazione per ciò che si deve fare per una corretta configurazione e
compilazione del Kernel di Linux/68k.
1. Introduzione
- 1.1 Perchè compilare un nuovo kernel
- 1.2 Cosa mi serve?
- 1.3 Scompattiamo l'archivio
- 1.4 Installiamo l'archivio
2. Adesso arriva il bello
- 2.1 Premesse alla compilazione
- 2.2 Configurazione del Kernel
- 2.2.1 Code Maturity Level Options
- 2.2.2 Loadable Module Support
- 2.2.3 Platform Dependant Support
3. Il grande passo...
1.1 Perchè compilare un nuovo kernel
* L'applicazione xxx.2.1 dice che ha bisogno del kernel 2.1.0 e voi avete il
kernel 2.0.0?
* Avete un device che non è supportato dal vostro kernel?
* C'è un bug che vi da grossi problemi?
Bene, questi possono essere alcuni dei motivi che ci spingono ad aggiornare il
kernel.
Come la maggior parte delle applicazioni Linux, anche il kernel viene dato in
forma di sorgente, in modo che possa essere personalizzato e compilato a nostro
piacere. Questa operazione non è tra le più semplici, ma con l'aiuto di questo
HOW-TO e un po' di buona volontà dovreste riuscirci.
Se avete installato la pseudo-distribuzione Watchtower, avrete certamente i
comandi necessari. Andando avanti con l'HOW-TO vedremo anche gli archivi e i
parametri necessari per una giusta configurazione e compilazione del kernel, in
modo che funzioni corettamente.
L'ultima versione del kernel rilasciata è la 2.1.64, quindi ogni riferimento,
dove non specificato) sarà a questa versione del kernel.
Prima di procedere, vi consiglio di leggere tutto l'HOW-TO in modo che non
facciate errori che vi obblighino a ricominciare tutto daccapo.
Preparatevi a lunghe attese davanti al monitor, perchè la compilazione è lunga,
anche sul mio 060, per il resto.... buona fortuna.
1.2 Cosa mi serve?
Beh, prima di tutto ci serve l'archivio contenete i sorgenti del
kernel. Questo archivio, oltre a contenere i sorgenti, contiene anche tutti
gli include che il makefile necessita per una corretta compilazione del kernel
stesso, quindi prima di procedere alla configurazione e compilazione dovrete
installare tutto il pacchetto.
Per fare ciò ci serviranno almeno 20Mb di spazio libero sulla nostra partizione
'USR'. Se siete giusti di misura, vi consiglio di dedicare più spazio alla
vostra Linux Box.
(Non c'è bisogno che reinstalliate tutto e riformattiatie gli HD, basta anche
creare una nuova partizione chiamandola USR2 e facendo i giusti links. nda)
L'archivio linux-2.1.64.tar.gz lo potretere trovare qui:
ftp://ftp.unina.it/pub////linux-2.1.64.tar.gz (9MB)
ftp://ftp.uni-erlangen.de/pub/linux/LOCAL/680x0/2.1/linux-2.1.64.tar.gz (9MB)
ftp://sunsite.auc.dk/local/os/linux/680x0/2.1/linux-2.1.64.tar.gz (9MB)
(Se avete il cd di Enigma non perdete tempo, contiene il kernel fino alla
versione 2.1.33)
Scaricatevi l'archivio (e di tempo ce ne vuole) e andiamo avanti...
1.3 Scompattiamo l' archivio
Dopo che vi siete procurati l'archivio ad uno degli indirizzi di cui sopra,
possiamo procedere alla scompattazione dell'archivio contenente il kernel e
tutti i files di supporto.
La scompattazione dell'archivio non ha nulla di insolito, infatti si usa il
solito
gzip -cd /path_dell'archivio/linux-2.1.64.tar.gz | tar xvof -
però bisogna fare attenzione dove lo installiamo.
La directory giusta è /usr/src, ma qui c'è da fare una precisazione.
Nel caso abbiate già installato una versione precedente del kernel, tanto per
fare i vostri esperimenti o più semplicemente perchè avete voluto compilare
qualche applicazione, allora dovete semplicemente scompattare l'archivio in
/usr/src.
Nel caso sia la vostra prima installazione dei sorgenti del kernel, noterete che
nella directory /usr è presente 'src' ma è un link che a voi non serve.
Cancellate quel link con il comando
rm /usr/src
e create una vera directory che ospiterà i sorgenti con il comando
mkdir /usr/src
Adesso portatevi dentro /usr/src e cominciate la scompattzione dell'archivio.
L'operazione richiederà qualche minuto viste le notevoli dimensioni
dell'archivio (> 9Mb).
Una volta scompattato tutto possiamo procedere oltre.
1.4 Installiamo l' archivio
Come installiamo??? direte voi. La domanda è lecita visto che siete stati
abituati che un'istallazione sotto Linux è una semplice scompattazione degli
archivi nelle giuste directory, ma in questo caso bisogna fare un paio di
operazioni in più oltre alla semplice scompattazione.
Come già detto in precedenza, l'archivio kernel-2.1.64.tar.gz. oltre a contenere
i sorgenti del kernel, contiene anche tutti gli include necessari per OGNI
compilazione sotto Linux.
Questi include sono contenuti in diverse directories, le quali verranno linkate
in un'unica directory fittizia alla quale i sorgenti e il gcc in particolare,
faranno riferimento. Ecco perchè non basta una semplice scompattazione
dell'archivio.
Vediamo adesso cosa e dove linkare.
Le directories contenenti gli includes sono contenute in
/usr/src/linux-xx.x.xx/include/
Noi dobbiamo portarle tutte in /usr/include.
Portiamoci quindi nella directory /usr/include e procediamo come segue:
rm -rf asm linux scsi
ln -sf /usr/src/linux/include/asm-m68k asm
ln -sf /usr/src/linux/include/linux linux
ln -sf /usr/src/linux/include/scsi scsi
Adesso per finire l'installazione dobbiamo assicurarci di non avere dei files .o
residui.
Per controllare ed aventualmente eliminarli si procede con:
cd /usr/src/linux-xx
make mrproper
A questo punto l'installazione dei sorgenti del Kernel e di tutti gli includes è completa.
2.1 Premesse alla compilazione
Prima di compilare il kernel dobbiamo fare alcune premesse, in modo da arrivare
al grande momento preparati e in coscenza di ciò che stiamo per fare.
La compilazione del Kernel Linux68k si divide in 2 parti FONDAMENTALI:
* Configurazione
* Compilazione
La configurazione è quella parte, come dice la parola stessa, dove noi andremmo
a configurare tutti i parametri necessari al Kernel per girare al meglio sul
nostro sistema.
Qui potremmo abilitare il supporto per determinate schede video, schede di rete,
drivers in generale, supporti di flesystems di altre piattaforme etc etc.
La 'Configurazione appare come una specie di questionario al quale dobbiamo
dare le risposte esatte, altrimenti il nostro kernel, una volta compilato,
verrà 'bocciato'.
La configurazione è la parte più delicata di tutto il processo di compilazione
del kernel. Da essa dipende il corretto funzionamento della nostra Linux Box o
di parte di essa.
Come vedrete più avanti le risposte al 'questionari' di configurazione possono
essere 3:
* Y (Yes)
* N (No)
* M (Modulo)
Ovviamente Yes e No attivano o disattivano quel determinato parametro, Module
(disponibile solo per alcuni parametri) setta quel determinato parametro come
modulo.
Ma cos'è un modulo???
Un modulo è una parte del kernel che NON viene integrata in esso, ma compilato a
parte e utilizzabile con specifici comandi. (insmod - rmmod)
L'utilizzo dei moduli serve per non appesantire troppo il Kernel stesso e viene
utilizzato con quei parametri che controllano periferiche o filesystems o altro
che non vengono utilizzati abitualmente ma solo di rado.
In questo modo è possibile avere un Kernel snello, e nel caso si necessiti di
particolari supporti si possono implementare 'on the fly' (al volo) solo per
quella sessione di Linux.
Consiglio vivamente di leggere la documentazione relativa i moduli
(/usr/src/linux/Documentation/modules.txt).
Una volta configurato il nostro Kernel possiamo procedere alla compilazione vera
e propria.
2.2 Configurazione del Kernel
Per configurare il Kernel dobbiamo portarci nella directory
/usr/src/linux
e dare il comando
make config
Questo comando compilerà il questionario e lo eseguirà.
Se siete stufi di questo ambiente solo testuale potete usare il comando:
make menuconfig
Questo camando compila lo stesso questionario di 'make config' ma con una
leggera interfaccia grafica. (Purtroppo assomiglia un po' troppo allo stile
M$Dos).
Se avete già installato X11 potete dare il comando make xconfig, il quale
attiverà il questionario con una GUI in stile X11.
A voi la scelta...
Sia chiaro che dovete dare UNO solo di questi comandi:
* make config (Avvia la configurazione in ambiente testuale)
* make menuconfig (avvia la configurazione da una shell ma con una leggera
grafica ANSI)
* make xconfig (avvia la configurazione da X11 con GUI in stile X)
Una volta dato il comando da voi preferito procediamo con la configurazione.
(io preferisco usare il menuconfig quindi farò riferimento a come viene mostrato
il questionario da questo comando)
2.2.1 Code Maturity Level Options
Prompt for development and/or incomplete code/drivers
Alcune 'cose' supportate da Linux (come network drivers, filesystems, network
protocols etc) posso essere ancora in fase di sviluppo, quindi la stabilità, la
funzionalità non hanno ancora raggiunto un livello abbastanza alto per un uso
generale.
Solitamente gli sviluppatori sconsigliano agli inesperti l'installazione di loro
features ancora in fase 'alpha' per evitare e-mail del tipo 'Perchè non mi
funziona?'
Nel caso vogliate aiutare gli sviluppatori a migliorare le loro produzioni,
settando a 'Y' questo parametro vi sarà offerta la possibilità di usare features
ancora in fase 'alpha'.
Se non intendete utilizzare queste features, perchè non volete noiosi problemi
causati da bugs o per altri motivi vostri, settate a 'N' questo parametro.
2.2.2 Loadable Module Support
Enable loadable module support
I 'Kernel Modules' sono dei pezzi di codice compilato che possono essere
inseriti o rimossi da un kernel in esecuzione usando i programmi 'insmod' e
'rmmod'.
La documentazione riguardo i moduli è contenuta nella dir
./Documentation/modules.txt
Se pensate di fare uso dei moduli settate a 'Y' questo parametro.
Se non sapete che fare consiglio di settarlo a 'Y'
Set version information on all symbols for modules
Solitamente i moduli devono esssere ricompilati quando si installa una nuova
versione del Kernel.
Setta questo parametro a 'Y' per rendere possibile, e sicuro, l'uso degli stessi
moduli anche dopo la compilazione del nuovo kernel.
Questo richiede il programma 'modprobe'
Tutto il necessario per il supporto dei moduli e contenuto nel pacchetto
'modules' (contralla in ./Documentation/Changes per trovare le sua locazione).
ATTENZIONE: Se non avete il programma genksyms (contenuto nel pacchetto
menzionato prima) la compilazione del kernel non avrà successo.
Se intendete usare dei moduli 'non-kernel' allora settate a 'Y' questo parametro,
altrmenti non è che sia così importante.
Cosiglio di settare a 'N' questo parametro.
(Questo parametro viene richiesto solo se attivato il parametro 'Enable loadable
module support').
Kernel daemon support
Se avete selezionato qualche driver e/o filesystems come modulo, dovete anche
ricordarvi di caricare il modulo corrispondente (con l'uso di insmod/modprobe).
Se selezionate 'Y' per questo parametro, sarà il kernel stesso, tramite un
apposito daemon, a fare tutto da solo.
Provvederà anche a 'scaricare' automaticamente i moduli non utlizzati,
evitandovi l'uso di rmmod.
Anche il kerneld è contenuto nel pacchetto di supporto moduli menzionato prima
Cosiglio di leggere il mini-HOW-TO sul kerneld (al momento solo in lingua
inglese, presto verrà tradotto in italiano).
Il mini-HOWTO è reperibile al sito FTP
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Kerneld (34Kb)
Consiglio di settare a 'Y' questo parametro.
(Questo paramatro viene richiesto solo se attivato il parametro 'Enable loadable
modules support').
2.2.3 Platform Dependant Support
Amiga Support
Questo parametro abilita il supporto per i computers della famigia Amiga.
Se intendete utilizzare il kernel su un Amiga settate questo parametro a 'Y'
altrimenti 'N'.
Atari Support
Questo parametro abilita il supporto per i computers della famiglia Atari basati
su processore motorola 680x0 (compresi il TT, Falcon e Medusa).
Se intendete utilizzare il kernel su un Atari settate questo parametro a 'Y'
altrimenti 'N'.
Macintosh Support
Questo parametro abilita il supporto per i computers della famiglia Macintosh
basati su processore motorola 680x0.
Settate a 'N' questo parametro a meno che non vi siate compilato tutto il
supporto necessario.
68020 Support
Settate a 'Y' questo parametro se avete un processore MC68020.
ATTENZIONE: Il processore MC68020 necessita del coprocessore 68851 MMU per
eseguire Linux.
68030 Support
Settate a 'Y' questo parametro nel caso abbiate un processore MC68030.
ATTENZIONE: i processori della serie EC (MC68EC030) non funzionano perchè non
hanno la MMU richiesta da Linux.
68040 Support
Settate 'Y' questo parametro nel caso abbiate un processore MC68040 o
MC68LC040.
ATTENZIONE: I processori MC68EC040 non funzionano perchè non hanno la MMU,
necessaria per eseguire Linux.
68060 Support
Settate a 'Y' questo parametro nel caso abbiate un processore MC68060.
Use 68060 specific optimizations
Nel caso settiate a 'Y' questo parametro, il kernel potrà essere utilizzato
solo su processori 68060.
Questo parametro viene richiesto se avete settato il supporto per il solo 68060
Advanced processor options
Questo parametro da accesso ad alcune funzioni speciali del processore.
Nel caso sappiate che state facendo, protreste anche aumentare le prestazioni
del kernel, al costo di una maggiore instabilità.
Molti utenti dovrebbero settare a 'N' questo parametro.
Amiga AutoConfig Identification
Questa opzione attiva l'identificazione delle schede di espansione Zorro in
modalità AutoConfig. E' bene rispondere Y a questa domanda, ma tenete presente
che una scheda riconosciuta non e' detto che venga poi sfruttata se ancora non
esiste il driver adatto.
Amiga OCS chipset support
Attiva il supporto per il vecchio chipset grafico (A1000, primi A500 e A2000).
Se non avete uno di questi computer, selezionate N.
Amiga ECS chipset support
Attiva il supporto per il chipset grafico esteso (A3000(T), molti A500 e A2000,
CDTV, A600). Se volete usare Linux su uno di questi computer, selezionate Y.
Amiga AGA chipset support
Attiva il supporto per il chipset grafico AGA (A4000(T), A1200 e CD32).
Se avete uno di questi computer, selezionate Y.
Amiga Cybervision support
Questo parametro attiva il supporto per la scheda Cybervision64 di phase5.
Rispondete N se non avete questa scheda. Anche chi possiede una Cybervision643D
dovra' rispondere N, perche' le due schede usano chip grafici differenti.
Amiga GSP (TMS340x0) support
Attiva il supporto per le schede che montano i chip della famiglia TMS340x0
della Texas Instruments. Rispondete N se non avete una scheda A2410 della C=,
oppure la DMI Resolver.
DMI Resolver support
Abilita il supporto specifico per la DMI Resolver.
A2410 support
Abilita il supporto specifico per la scheda A2410 della Commodore.
Amiga Zorro II ramdisk support
Questo parametro consente di usare la Chip RAM o la RAM Zorro2 (come i 512K
della schedina figlia del 2000, o dell'espansione interna del 500) come ramdisk
o come partizione di swap. E' possibile rendere questo driver un modulo da
caricare solo all'occorrenza, come descritto in Documentation/modules.txt,
rispondendo M.
A3000 WD33C93A support
Se avete un A3000 (T), rispondendo Y, attiverete il supporto per l'interfaccia
SCSI interna del vostro computer.
A2091 WD33C93A support
Se possedete un controller A2091, rispondendo Y potrete utilizzarla anche sotto
Linux.
GVP Series II WD33C93A support
Se avete un controller della GVP, potrete utilizzarlo anche sotto Linux
selezionando Y.
Cyberstorm SCSI support
Selezionando Y verra' attivato il driver per l'interfaccia SCSI presente
sulle schede CyberStorm.
Cyberstorm II SCSI support
Selezionando Y verra' attivato il driver per l'interfaccia SCSI presente
sulle schede CyberStorm II.
Blizzard 2060 SCSI support
Selezionando Y verra' attivato il driver per l'interfaccia SCSI presente
sulle schede Blizzard per Amiga 2000.
Blizzard 1230IV/1260 SCSI support
Selezionando Y verra' attivato il driver per l'interfaccia SCSI presente
sulle schede di espansione delle Blizzard 1230IV e 1260.
Fastlane SCSI support
Selezionando Y verra' attivato il driver per l'interfaccia SCSI presente
sulle schede Fastlane 040.
Ariadne support
Se volete utilizzare la vostra scheda Ariadne sotto Linux, rispondete Y.
A2065 support
Per utilizzare questa scheda di rete sotto Linux, rispondete Y.
Hydra support
Se avete intenzione di usare questa scheda di rete con Linux, rispondete Y.
Multiface Card III parallel support
Se avete questa scheda di Multi-I/O, e la volete usare la sue porte con
Linux, rispondete Y.
Amiga mouse support
Per poter utilizzare il mouse Amiga sotto Linux, rispondete Y, specie se
pensate di installare anche X. Vi servira' anche il pacchetto gpm, ma
questa e' un'altra storia...
Amiga Copper Console
Amiga builtin serial support
Rispondete Y a questa domanda per poter utilizzare la porta seriale fornita di
serie col vostro Amiga.
GVP IO-Extender support
Se possedete questa scheda di Multi-I/O, rispondete Y.
Multiface Card III serial support
Se volete utilizzare la porta seriale di questa scheda, rispondete Y.
Amiga or Atari DMA sound support
Rispondendo Y (o M per creare un modulo) renderete disponibile a Linux un
driver sonoro di basso livello.
MSDOS partition support
Remote debugging support
Se avete un terminale remoto con cui fare il debugging del kernel di Linux,
rispondete Y, ma ve lo sconsigliamo davvero... :)
Kernel profiling support
Anche questa opzione serve per chi vuole modificare e migliorare il kernel,
quindi rispondete tranquillamente N.
Ora che abbiamo configurato il kernel a nostro piacimento, siamo pronti per
il grande passo. E quando dico grande, intendo lungo, molto lungo...
Per essere sicuri che tutto sia a posto, appena finito di configurare il kernel
eseguite questa linea di comando:
make dep ; make clean
Non vi spaventate per la quantita' di messaggi che arrivano a video, e' tutto
normale. Una volta che anche questo passo e' stato completato, possiamo
finalemente dare il comando:
make
Ora potete tranquillamente andare a farvi una passeggiata, a prendere un caffe'
al bar sotto casa e fare anche acquisti, perche' tanto la cosa portera' via
parecchio tempo (anche a seconda di quale CPU, quanta RAM e quale tipo di
Harddisk avete sulla vostra macchina). Non vi preoccupate se lo schermo del
vostro computer diventa tutto nero, e' il normale screensaver del kernel:
basta che premiate il tasto Del e tutto tornera' normale.
Se finalmente vedete ricomparire il prompt di linux, forse avete finito di
attendere: se non ci sono segnalazioni di errori, date il comando:
ls
A video comparira' l'intera directory e controllate se e' presente un file
chiamato vmlinux: se c'e', ecco il vostro nuovo kernel! Altrimenti qualcosa
e' andato storto...