[precedente] Emacs e archivi - Copertina - Tips [successivo]

Articoli


Ricompilazione del Kernel

Molti hanno avuto problemi nella ricompilazione del kernel, soprattutto con la distribuzione RedHat 5.0. La procedura non è complicata, ma ci sono alcune cose da sapere prima.

Qusto documento è tratto dalla guida utente della RedHat, quindi seguendo le istruzioni alla lettera, la ricompilazione riuscirà sicuramente sulla RedHat 5.0. Per quanto riguarda le altre distribuzioni, non ci dovrebbero essere particolari problemi, le differenze saranno elencate passo-passo.

Si presuppone la conoscenza delle partizioni della propria macchina, il nome della partizione deve avete installato linux e di quella dove è installato windows. Inoltre dovete sapere come editare un file di testo ed avere una certa pratica nell'utilizzo dei comandi basilari di Unix: cp, mv, rm, cd, tar, ln, ecc.

Se vi manca una delle cognizioni elencate sopra NON RICOMPILATE IL KERNEL, perché avete buone possibilità di combinare qualche casino da cui non sarà facile uscire.

Il Kernel

Prima di cominciare va detto che il kernel della distribuzione RedHat 5.0 contenuta nella rivista DEV che molti hanno installato è difettoso; ho sentito anche di persone che hanno avuto problemi di ricompilazione del kernel (sempre della RedHat) con il pacchetto Infomagic. Credo che questo dipenda dal fatto che la RedHat utilizza i pacchetti rpm (Redhat Package Manager) per tutto il software, sorgenti del kernel compresi.

Quindi la prima cosa da fare è procurarsi un kernel funzionante da ftp://ftp.kernel.org lasciando perdere, almeno per quanto riguarda i sorgenti del kernel, i pacchetti rpm e di utilizzare i pacchetti tar.gz. Per molte altre applicazioni, i pacchetti rpm sono molto comodi ed è consigliabile usarli, anche per la facilità di gestione.

Dopo essersi procurati i sorgenti, ad esempio il file linux-2.0.33.tar.gz, bisogna copiarlo nella directory /usr/src, posizionarsi nella suddetta directory e scompattarlo con:

tar zxvf linux-2.0.33.tar.gz

Quindi creare il link simbolico ai nuovi sorgenti con:

ln -s linux.2.0.33 linux

Patch del Kernel

Molti avranno bisogno di patchare il kernel, perché la fat32 di windows95 (la versione nuova) non è supportata dal kernel fino a 2.0.33 compreso.

Il file di patch lo trovate a http://www.linuxhq.com/patch/20-p0245.html

Copiare il file nella dir /usr/src e decomprimerlo con gunzip.

Applicare la patch al kernel con:

patch -p0 < file_di_patch > error

Se la patch ha avuto successo (cioè se il file error è di 0 byte) si può cominciare con la ricompilazione.

Ricompilazione del Kernel

La sequenza delle operazioni da fare è questa:

  1. Rimozioni dei file di configurazioni precedenti con:
    make mrproper
    
  2. Configurazione del kernel con uno dei seguenti comandi:
    make xconfig
    make menuconfig
    make config
    

    I tre comandi, dal punto di vista della configurazione del sistema, sono equivalenti. Le differenze sono nell'aspetto dell'interfaccia:

    Ricordarsi di mettere YES alle voci kerneld support (CONFIG_KERNELD) e module version (CONFIG_MODVERSION).

    Dare i comandi:

    make dep
    make clean
    

    Costruzione del kernel con:

    make boot
    

    Il nuovo kernel adesso si trova in /usr/src/linux/arch/i386/boot, il file si chiama zImage.

    Costruzione dei moduli con:

    make modules
    

    Adesso bisogna spostare i vecchi moduli e installare i nuovi con i tre comandi:

    rm -rf /lib/modules/2.0.33-old
    mv /lib/modules/2.0.33 /lib/modules/2.0.33-old
    make modules_install
    

    Questo va fatto anche se non è stato configurato nessun modulo.

    Per ultimo va copiato il kernel nella giusta posizione e riconfigurato LILO:

    mv /boot/vmlinuz /boot/vmlinuz.old
    cp /usr/src/linux/arch/i386/boot/zImage /boot/vmlinuz
    

    Riconfigurazione di LILO:

    Il file /etc/lilo.conf dovrebbe avere un sezione per windows e una più sezioni per Linux che cominciano con il comando image.

    Questo dovrebbe essere quello di default:

    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=100
    image=/boot/vmlinuz
         label=linux
         root=/dev/hdb1
         read-only
    other=/dev/hda1
         label=windows
         table=/dev/hda
    

    Questa configurazione installa LILO sul Master Boot Record (linea1: boot=/dev/hda) e fa partire Linux (di default) da /dev/hdb1 e windows (label=windows) da /dev/hda1.

    Questo invece è il mio file /etc/lilo.conf:

    boot=/dev/fd0
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=50
    other=/dev/hda1
         label=windows
         table=/dev/hda
    image=/boot/vmlinuz
         label=linux
         root=/dev/hdb1
         read-only
    image=/boot/vmlinuz-old
         label=old
         root=/dev/hdb1
         read-only
    

    Questa configurazione installa LILO su un floppy disk (linea 1: boot=/dev/fd0) e fa partire Windows (di default) da /dev/hda1 e Linux con due kernel differenti:

    Bisogna aggiungere (per sicurezza) un'altra opzione di partenza che carichi il vecchio kernel funzionante, nel caso il nuovo kernel non funzionasse; questo è il motivo della sezione old.

    Ovviamente sostituite /dev/hdb1 se avete installato linux su una partizione diversa

  3. Dopo aver riconfigurato il file /etc/lilo.conf bisogna eseguire:
    /sbin/lilo
    

    Che riscriverà LILO.

    Attenzione: visto che avete spostato il kernel, dovete eseguite /sbin/lilo altrimenti è possibile che Linux non riparta più.

    Adesso riavviando il computer Linux dovrebbe ripartire con il nuovo kernel.

    di Filippo De Grandi


    [precedente] Emacs e archivi - Copertina - Tips [successivo]