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.




INDICE


  • 1. Introduzione
  • 2. Adesso arriva il bello
  • 3. Il grande passo...

    CAPITOLO 1

    Torna all'indice

    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.

    Torna all'indice

    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...

    Torna all'indice

    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.

    Torna all'indice

    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.

    CAPITOLO 2

    Torna all'indice

    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.

    Torna all'indice

    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)

    Torna all'indice

    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.

    Torna all'indice

    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').

    Torna all'indice

    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.

    Torna all'indice

    CAPITOLO 3



    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...

    Torna all'indice