3.1. Prerequisiti

3.1.1. Reperimento

Il sito principale è ftp://ftp.kernel.org, ma esistono i mirror nazionali, reperibili come ftp.XX.kernel.org, dove XX è il codice del paese (ad esempio "it" per Italia, "de" per Germania, "fr" per Francia, "uk" per Inghilterra, e così via). Cercate nella directory /pub/linux/kernel/2.2. In genere esistono 2 tipi di file in 2 formati di compressione diversi. I file sono del tipo: linux-VERSIONE_KERNEL.tar.COMPRESSORE, oppure patch-VERSIONE_KERNEL.tar.COMPRESSORE. COMPRESSORE può essere gz per file compressi con GZIP, o bz2 per file compressi con BZIP2 (in genere più piccoli) I file che iniziano per linux contenengono i sorgenti del kernel COMPLETO, mentre i file che iniziano per patch contengono solo le differenze con le versioni precedenti. Quindi, per esempio, ci possono essere i file: linux-2.2.14.tar.gz, linux-2.2.14.tar.bz2, patch-2.2.14.tar.gz e patch-2.2.14.tar.bz2, insieme in genere a tutte le versioni precedenti. Conviene scaricare la versione completa se proprio non avete i sorgenti, mentre se avete una versione precedente potete scaricare solo i file di differenza, da applicare sui sorgenti in vostro possesso per avere alla fine la STESSA IDENTICA versione di sorgenti che avreste ottenuto dalla versione completa. Ricordate però che dovete scaricare TUTTE le versioni di patch dalla versione in vostro possesso fino a quella che volete ottenere (quindi se avete i sorgenti completi linux-2.2.11.tar.gz, e volete arrivare alla versione 2.2.14, dovete scaricare i file patch-2.2.12.tar.gz, patch-2.2.13.tar.gz e patch-2.2.14.tar.gz, da applicare al 2.2.11 in successione, come indicato in seguito (ATTENZIONE!: le patch delle versioni "pre..." non sono incrementali). Un consiglio: NON usate i sorgenti standard forniti dalle distribuzioni se dovete applicarvi delle patch, perché in genere sono versioni modificate e le patch notando questo fatto non vengono applicate (tipico il caso della RedHat), oltre al fatto che non mettono a posto alcuni collegamenti. Inoltre cercate di evitare le versioni sperimentali dei kernel (2.X.YYY, con X dispari), a meno che non aggiungano il supporto per qualche nuovo hardware di cui non potete fare a meno, perché a volte non sono completamente stabili (sono sperimentali per questo).

3.1.2. Software necessario

Naturalmente i sorgenti del kernel. Poi i programmi gzip e bzip2, in base al tipo di compressione usata per i sorgenti. I pacchetti software: make, bin86, glibc-devel, gcc (in genere, se viene segnalata la mancanza qualche file, fa parte di questi pacchetti, quindi installateli tutti). Se volete usare l'interfaccia grafica di configurazione in X-Window, naturalmente dovete aver installato e configurato bene l'X-server, e poi vi servono anche il pacchetto contenente il linguaggio tcl e il suo tool grafico tk.

3.1.3. Scompattazione, patch e avvio della configurazione

Ecco i passi da seguire (tutto ciò che è tra doppi apici in grassetto è un comando, e va dato senza di essi; come esempio si suppone di avere una versione 2.2.11 e di aggiornare alla versione 2.2.14):

  1. Se non lo siete già, diventate utente root e spostatevi in /usr/src ("su root", più la password, poi "cd /usr/src")

  2. Date: "ls -l". Controllate se esiste una riga che contiene 'linux': se non esiste, saltate al punto 5; se esiste e il primo carattere della riga è d, si tratta di una directory, saltate al punto 4; altrimenti se esiste e il primo carattere della riga è l, si tratta di un collegamento, continuate col punto 3

  3. Rimuovete il link: "rm -f linux" (in questo modo i vecchi sorgenti eventualmente presenti rimarranno nella directory cui puntava il link, in genere 'linux-VERSIONE_KERNEL'), e saltate al punto 5

  4. Rinominate la directory: "mv linux linux.old" (in questo modo i vecchi sorgenti eventualmente presenti verranno spostati nella directory 'linux.old'), e continuate col punto 5

  5. Scompattate i nuovi sorgenti: se il file in vostro possesso finisce in '.gz', date "tar xvzf /persorso/del/file/linux-2.2.11.tar.gz", mentre se finisce con '.bz2', date "tar xvf /persorso/del/file/linux-2.2.11.tar.bz2 --use-compress-program bzip2"

  6. Se avete già l'ultima versione dei sorgenti, saltate al punto 7, altrimenti se dovete applicare delle patch per aggiornare i sorgenti ad una versione più recente, date i seguenti comandi (TUTTE le patch vanno applicate in sequenza):

    cd linux
    gzip -dc /persorso/del/file/patch-2.2.12.gz | patch -p1
    gzip -dc /persorso/del/file/patch-2.2.13.gz | patch -p1
    gzip -dc /persorso/del/file/patch-2.2.14.gz | patch -p1
    cd .. 
               
    

    nel caso abbiate dei file del tipo 'patch-VERSIONE_KERNEL.bz2', sostituite nei comandi precedenti 'gzip' con 'bzip2'

  7. Rinominate la directory ottenuta in base alla versione dei sorgenti che avete ottenuto (nell'esempio 2.2.14) e ricreate alcuni collegamenti simbolici:

    mv linux linux-2.2.14
    ln -s linux-2.2.14 linux
    rm -rf /usr/src/linux/include/asm /usr/include/asm
    rm -rf /usr/include/linux /usr/include/scsi
    ln -s /usr/src/linux/include/asm-i386/ /usr/src/linux/include/asm
    ln -s /usr/src/linux/include/asm-i386/ /usr/include/asm
    ln -s /usr/src/linux/include/linux/ /usr/include/linux
    ln -s /usr/src/linux/include/scsi/ /usr/include/scsi
               
    

    così da portare il tutto in una situazione standard (i sorgenti devono essere in '/usr/src/linux/')

  8. Si passa ora alla fase più delicata dell'operazione: scegliere cosa includere e cosa no nel kernel. Date "cd linux" e poi "make mrproper" per eliminare residui di eventuali vecchie compilazioni (attenzione che questo comando cancella il file '.config', che contiene le impostazioni date in una precedente compilazione, quindi nel caso fatevene una copia). Ora date a vostra scelta uno dei tre comandi seguenti, in base al tipo di interfaccia che volete usare (solo quello che c'è prima del # !!!):

    make config # (interfaccia a caratteri base)
    make menuconfig # (interfaccia a caratteri con menu)
    make xconfig # (interfaccia grafica - dovete essere in X-Window)
               
    

    e passiamo alla configurazione dei parametri.