  The Linux Kernel HOWTO
  Brian Ward bri@cs.uchicago.edu    , Al Dev (Alavoor Vasude
  van) alavoor[AT]yahoo.com
  v4.0, 27 Giugno 2002

  Questa  una guida dettagliata a configurazione, compilazione e
  aggiornamento del kernel ed alla risoluzione di problemi relativi a
  tali argomenti per sistemi basati su i386. Traduzione a cura di Simone
  Pascarosa (spasca (at) libero.it).  Fino alla v1.0 la traduzione 
  stata curata da Giovanni Bortolozzo.

  1.  Introduzione

  Dovreste leggere questo documento? Beh, magari avete uno dei seguenti
  sintomi:



    "Arg! Questo pacchetto wizzo-46.5.6 dice che ha bisogno del kernel
     2.8.183 e io ho ancora l'1.0.9!"

    Nei kernel pi recenti c' un device driver che assolutamente
     dovete avere.

    Non avete assolutamente idea di come compilare il kernel.

    "C' davvero tutto quanto nel README?"

    L'avete preso, c'avete provato, ma non funziona.

    Avete bisogno di qualcosa da dare alla gente che insiste nel
     domandarvi di installare loro il kernel.


  1.1.  Per prima cosa leggete qua!

  Alcuni degli esempi in questo documento assumono che si abbiano a
  disposizione tar, find e xargs della GNU. Sono degli standard e quindi
  ci non dovrebbe causare problemi.  pure sottinteso che si possieda
  una certa conoscenza della struttura del filesystem del proprio
  sistema; se non la si conosce,  essenziale conservare una copia
  scritta dell'output del comando mount durante il normale funzionamento
  del sistema (o il contenuto di /etc/fstab, se si pu leggerlo). Queste
  informazioni sono importanti e non cambiano a meno che non si
  ripartizioni il disco, se ne aggiunga uno nuovo, si reinstalli il
  sistema o qualcos'altro di simile.


  Alla stesura del presente documento, l'ultima versione del kernel di
  "produzione" era la 2.2.9, il che significa che i riferimenti e gli
  esempi corrispondono a quella release. Anche se ho provato a rendere
  questo documento il pi possibile indipendente dalla versione, il
  kernel  costantemente in sviluppo, quindi se ci si procura una nuova
  versione inevitabilmente ci saranno alcune differenze. Si noti che ci
  non dovrebbe comunque creare grossi problemi, ma potrebbe creare un
  po' di confusione.


  Ci sono due versioni dei sorgenti del kernel Linux, "produzione" e
  "sviluppo". Le versioni di produzione sono le release con il numero
  secondario pari; 1.2.x era di produzione, come pure il 2.0.x e il
  2.2.x. Al rilascio, questi kernel sono considerati perlopi stabili ed
  esenti da bug. I kernel di sviluppo (2.1.x, 2.3.x, ecc.)  sono intesi
  come kernel di test, per gente che vuole provare kernel nuovi e
  probabilmente bacati. Si  stati avvisati.

  1.2.  Due parole sullo stile


  Il testo in questo stile  qualcosa che appare sullo schermo (es.il
  nome di un file), oppure qualcosa che pu essere digitato
  direttamente, come un comando o un'opzione di un comando (se si sta
  leggendo la versione in puro testo di questo documento non si noter
  alcuna differenza). Comandi e altri input sono spesso messi tra
  virgolette (tra " "), il che causa un classico problema di
  punteggiatura: se una di queste cose appare citata alla fine di una
  frase, la gente spesso digita un "."  assieme al comando, perch lo
  stile di citazione americano dice di mettere il punto dentro le
  virgolette. Anche se il buon senso (e sfortunatamente ci implica che
  la persona di buon senso conosca al cosiddetto stile di citazione
  americano) dovrebbe dire di togliere prima il punto, molta gente
  semplicemente non se lo ricorda, cos in questi casi l'ho messo fuori
  dalle virgolette. In altre parole, volendo indicarwe che si dovrebbe
  digitare "make config" scriver "make config", non "make config."
  (NdT: in italiano questo problema non si pone: il punto  comunque
  sempre messo fuori dalle virgolette).



  2.  Panoramica veloce - Compilazione del Kernel

  Questa sezione  stata scritta da Al Dev (alavoor[AT]yahoo.com) (Gli
  ultimi aggiornamenti di questo documento sono reperibili a
  <http://www.milkywaygalaxy.freeservers.com>. Controllare l eventuali
  cambiamenti).  Siti mirror su - angelfire
  <http://www.angelfire.com/country/aldev0>, geocities
  <http://www.geocities.com/alavoor/index.html>.  Questi siti contengono
  molti consigli e chicche per linux.

  La ricompilazione del kernel  necessaria per rendere il kernel pi
  leggero e si traduce in maggiore VELOCITA` del sistema operativo. 
  anche necessaria per supportare nuove periferiche.

  2.1.  Precauzioni

  Prima di generare il kernel,  buona abitudine fare un backup del
  sistema.  Se non si  fatto il backup del proprio sistema
  recentemente,  il momento di farlo.  Si possono usare tool
  commerciali come BRS Backup-Recovery-Software <http://24.221.230.253>
  (in questa pagina  facile trovare strumenti open-source o freeware
  elencati sotto "Backup and Restore Utility").  Il backup 
  consigliato, non  obbligatorio ai fini della compilazione del kernel
  Linux.

  2.2.  Per quelli impazienti


  1. Decomprimere (spacchettare) i sorgenti

  2. make clean

  3. make xconfig

  4. make dep

  5. make

  6. make bzImage

  7. make modules


  8. make install

  9. make modules_install

  10.
     configurare LILO o GRUB.

     Per i dettagli, ci si riferisca alla sezione successiva.

  2.3.  Compilazione del Kernel - Spiegazione delle varie fasi

  Spiegazione dettagliata delle fasi accennate nella sezione precedente:

  Nota: Pi avanti "bash#" indica il prompt della bash, si devono
  digitare i comandi che appaiono dopo il prompt "bash#". Seguono i
  comandi testati con il Kernel Redhat Linux 2.4.7-10, ma dovrebbero
  funzionare anche per le altre distribuzioni, con piccole differenze,
  ed anche con le vecchie versioni del kernel, 2.2, 2.0 e 1.3.


  1. Nota:  Si possono avere pi immagini del kernel sul proprio
     sistema.  Seguendo i passaggi sottoindicati non si sovrascriver o
     dannegger il kernel gi esistente.  I passaggi sono molto sicuri e
     il kernel attualmente in uso rimarr intatto e non sar toccato.



  2. Si faccia il login come "root" per eseguire tutti questi passaggi.
     Si monti il cdrom di Linux Redhat e s'installino i pacchetti dei
     sorgenti del kernel.

     ___________________________________________________________________
     bash$ su - root
     bash# cd /mnt/cdrom/Redhat/RPMS
     bash# rpm -i kernel-headers*.rpm
     bash# rpm -i kernel-source*.rpm
     bash# rpm -i dev86*.rpm
     bash# rpm -i bin86*.rpm
     ___________________________________________________________________


  (I pacchetti "bin86*.rpm" e "as86" sono necessari solo per i sistemi
  Linux meno recenti, come Redhat 5.x. Si pu ottenere l'assemblatore
  per sistemi Intel "as86" da dev86*.rpm sul cdrom o da bin86-mandrake
  <http://rpmfind.net/linux/RPM/mandrake/7.1/Man
  drake/RPMS/bin86-0.4-12mdk.i586.html> , bin86-kondara
  <http://rpmfind.net/linux/RPM/kon
  dara/jirai/i586/bin86-0.4-8k.i586.html> ).



  3.

       Avviare X-window con "startx". Se non si riesce ad avviare X-
        window, si salti al passaggio successivo.

        ________________________________________________________________
                bash# man startx
                bash# startx
                bash# cd /usr/src/linux
                bash# make xconfig
        ________________________________________________________________



       Se non si riesce ad avviare X-window , si provi:

        ________________________________________________________________
                bash# export TERM=xterm
                bash# make menuconfig

        Se appare una schermata indecifrabile, allora bisogna usare emulatori di terminali diversi,
        come vt100, vt102, vt220 o ANSI. Lo schermo sar un po' incasinato e mostrer caratteri
        spazzatura in caso si usi telnet per collegarsi al sistema remoto. In tali casi
        si dovranno usare emulatori di terminale come vt100, vt220.
        Per esempio:
                bash# export TERM=vt220
                bash# export TERM=ansi
        Ad un livello pi basso, adoperare:
                bash# export TERM=vt100
                bash# make menuconfig

        Se il comando menuconfig fallisce, allora si provi:
                bash# make config
        ________________________________________________________________



     "make xconfig" o "make menuconfig" forniscono una interfaccia GUI
     amichevole.  "make config", invece, presenta un'interfaccia a riga
     di comando.  Si pu caricare il file di configurazione da
     /usr/src/linux/.config (notare il punto prima di "config").



  4. All'interno di "make xconfig" si deve fare cos per evitare
     problemi:

       Scegliere il tipo di CPU appropriato: Pentium 3, AMD K6, Cyrix,
        Pentium 4, Intel 386, DEC Alpha, PowerPc, altrimenti il kernel
        non si avvier!!

       Scegliere il supporto SMP: se CPU singola o CPU multiple

       Filesystem: selezionare Windows95 Vfat, MSDOS, NTFS come parte
        del kernel e non come moduli caricabili. (Questa  una mia
        preferenza personale, ma ognuno  libero di scegliere quel che
        gli pare).

       Attivare il supporto per i moduli caricabili del kernel!  Con
        questa opzione si potranno caricare e scaricare i device driver
        al volo mentre il sistema linux sta girando.  Si consultino
        queste pagine di man

        ________________________________________________________________
        bash# rpm -i /mnt/cdrom/Redhat/RPMS/modutils*.rpm
        bash# man lsmod
        bash# man insmod
        bash# man rmmod
        bash# man depmod
        bash# man modprobe
        ________________________________________________________________



  5. Salvare e uscire da "make xconfig".  Tutte le opzioni scelte
     verranno adesso salvate nel file di configurazione in
     /usr/src/linux/.config.  Ora si dia:
     ___________________________________________________________________
     bash# make dep
     bash# make clean
     ___________________________________________________________________



  6. Leggere il seguente file (per acquisire alcune conoscenze sulla
     compilazione del kernel). Suggerimento: si usi l'editor a colori
     gvim <http://www.linuxdoc.org/HOWTO/Vim-HOWTO.html> per una
     maggiore leggibilit.

     ___________________________________________________________________
     bash# gvim -R   /usr/src/linux/arch/i386/config.in
     bash# man less
     bash# less   /usr/src/linux/arch/i386/config.in
     Digitare "h" per aiuto, per navigare premere "i", "j", "k", "l", "h" o i tasti freccia e PagSu/Gi.
     ___________________________________________________________________



  7. Adesso, bisogna dare il comando make:

     ___________________________________________________________________
             bash# cd /usr/src/linux
             bash# man nohup
             bash# nohup make bzImage &
             bash# man tail
             bash# tail -f nohup.out     (.... per monitorare la progressione)
     Questo metter il kernel in /usr/src/linux/arch/i386/boot/bzImage
     ___________________________________________________________________



  8. Se tutto  andato bene, copiare l'immagine del kernel nella
     directory /boot. Si deve copiare la nuova immagine del kernel in
     /boot, altrimenti il nuovo kernel NON si avvier. Sotto Redhat
     Linux ci sono due possibili boot loader: Lilo e (2) GRUB. Quindi 
     meglio leggere le pagine di man su lilo (ed anche
     <http://www.linuxdoc.org/HOWTO/LILO-crash-rescue-HOWTO.html>) e il
     file di esempio ``sample lilo.conf''.  Si aggiunga sempre una data
     in coda al nome del file, per ricordare quando  stato costruito il
     kernel, come mostrato qui sotto:

     ___________________________________________________________________
     bash# cp /usr/src/linux/arch/i386/boot/bzImage     /boot/bzImage.myker.26mar2001
     bash# man lilo
     bash# man lilo.conf
     ___________________________________________________________________


  Si inseriscano queste righe nel file /etc/lilo.conf

  ______________________________________________________________________
          image=/boot/bzImage.myker.26mar2001
          label=myker
          root=/dev/hda1
          read-only
  ______________________________________________________________________

  Si pu controllare il device fornito a "root=" con il comando:

  ______________________________________________________________________
          bash# df   /
  ______________________________________________________________________



  9. A questo punto dare:

     ___________________________________________________________________
     bash# lilo
     bash# lilo -q
     ___________________________________________________________________


  Si deve rilanciare lilo anche se la voce "myker" esiste gi, ogni
  volta che viene creata una nuova bzImage.



  10.
     Riavviare la macchina e, quando appare lilo, premere il tasto TAB e
     digitare "myker".  Se il boot va a buon fine allora  stato fatto
     un buon lavoro! Altrimenti al prompt di lilo di selezioni il
     vecchio kernel, si faccia il boot e si riprovi tutto dall'inizio.
     Il vecchio kernel  ancora INTATTO e al SICURO, per dire potrebbe
     chiamarsi /boot/vmlinuz-2.0.34-0.6.


     Se il nuovo kernel, contrassegnato con "myker", si avvia e funziona
     bene, si pu creare il disco di boot. Inserire un dischetto vuoto
     nel lettore e dare:

     ___________________________________________________________________
     bash# cd /usr/src/linux
     bash# make bzdisk
     ___________________________________________________________________



  Si dia anche un'occhiata a mkbootdisk:

  ______________________________________________________________________
  bash# rpm -i mkbootdisk*.rpm
  bash# man mkbootdisk
  ______________________________________________________________________



  11.
     MODULI CARICABILI: Questo passo  necessario SOLO se si  abilitato
     il supporto per i moduli caricabili nella fase 3. I moduli
     caricabili si trovano in /lib/modules. Il passo  OBBLIGATORIO se 
     stato abilitato o disabilitato un qualsiasi modulo, altrimenti si
     otterr l'errore "unresolved symbols" durante o dopo il boot del
     kernel. Si controlli il comando insmod, ampiamente usato per
     caricare i moduli.



     ___________________________________________________________________
     bash# cd /usr/src/linux
     bash# make modules
     bash# make modules_install
     ___________________________________________________________________


  Questo copier i moduli nella directory /lib/modules.

  Per esempio, per caricare il modulo /lib/modules/2.4.2-2/ker
  nel/drivers/block/loop.o, si dovr fare:

  ______________________________________________________________________
  bash# man insmod
  bash# modprobe loop
  bash# insmod loop
  bash# lsmod
  ______________________________________________________________________


  Si pu impostare il percorso secondo cui insmod effettua la ricerca in
  /etc/modules.conf

  2.4.  Come risolvere alcuni dei problemi pi comuni


  2.4.1.  Il sistema si blocca all'avvio di LILO

  Sintomo:  Dopo che  stato compilato il kernel e riavviato il sistema,
  si blocca prima di LILO.

  Motivo:  Probabilmente i dischi fissi IDE non sono stati impostati
  correttamente nel BIOS.

  Soluzione:  Accendere il computer e premere DEL (CANC sulle tastiere
  italiane) per entrare nella configurazione del BIOS (Basic
  Input/Output System). Nelle impostazioni relative ai dischi IDE si
  impostino correttamente i dischi primari e secondari. All'avvio il
  sistema cerca il disco fisso IDE primario e il suo Master Boot Record,
  per ottenere la partizione da cui caricare il kernel Linux.

  2.4.2.  "No init found"

  Un problema riferito comunemente dai nuovi utenti.

  Se il proprio nuovo kernel non si avvia e si ottiene:

  ______________________________________________________________________
  Warning: unable to open an initial console
  Kernel panic: no init found. Try passing init= option to kernel
  ______________________________________________________________________



  Il problema  che non  stato impostato correttamente il parametro
  "root=" in /etc/lilo.conf. Nel mio caso, ho usato root=/dev/hda1 per
  indicare la partizione su cui si trova la root ("/") del sistema. Si
  deve puntare in maniera corretta il device di root nel proprio
  lilo.conf, potrebbe essere qualcosa come /dev/hdb2 o dev/hda7.

  Il kernel cerca il comando init, che si trova in /sbin/init, e la
  directory /sbin sta sulla partizione di root. Per dettagli:



  ______________________________________________________________________
  bash# man init
  ______________________________________________________________________



  2.4.3.  "depmod" d messaggi d'errore "Unresolved symbols"

  Quando si fa partire depmod, questo d "Unresolved symbols". Riporto
  un esempio di messaggi d'errore per dare una dimostrazione:

  ______________________________________________________________________
  bash$ su - root
  bash# man depmod
  bash# depmod
  depmod: *** Unresolved symbols in /lib/modules/version/kernel/drivers/md/linear.o
  depmod: *** Unresolved symbols in /lib/modules/version/kernel/drivers/md/multipath.o
  depmod: *** Unresolved symbols in /lib/modules/version/kernel/drivers/md/raid0.o
  depmod: *** Unresolved symbols in /lib/modules/version/kernel/drivers/md/raid1.o
  depmod: *** Unresolved symbols in /lib/modules/version/kernel/drivers/md/raid5.o
  ______________________________________________________________________



  Motivo:  Non  stato fatto "make modules" e non sono stati installati
  i moduli dopo aver compilato il nuovo kernel con "make bzImage".

  Soluzione:  Dopo aver fatto il nuovo kernel, si deve fare:

  ______________________________________________________________________
  bash$ su - root
  bash# cd /usr/src/linux
  bash# make modules
  bash# make modules_install
  ______________________________________________________________________



  2.4.4.  Il kernel non carica i moduli; si ricevono messaggi d'errore:
  "Unresolved symbols"

  Quando si avvia il kernel, il sistema prova a caricare un qualsiasi
  modulo e restituisce "Unresolved symbol : __nome_di_qualche_funzione"
  allora significa che non si  dato "make clean".  obbligatorio dare
  make clean e compilare i moduli, nell'ordine.  L'ordine corretto :

  ______________________________________________________________________
          bash# cd /usr/src/linux
          bash# make dep
          bash# make clean
          bash# nohup make bzImage &
          bash# tail -f nohup.out     (.... per monitorare la progressione)
          bash# make modules
          bash# make modules_install
  ______________________________________________________________________



  2.4.5.  Il kernel fallisce nel caricare un modulo

  Se il kernel non riesce a caricare un modulo (intendendo moduli
  caricabili per schede di rete o altri dispositivi), allora si potrebbe
  provare a compilare i device driver direttamente nel kernel. A volte i
  moduli caricabili NON funzionano e c' bisogno di compilare i driver
  direttamente all'interno del kernel. Per esempio i device driver di
  alcune schede di rete non possono essere caricati come moduli e devono
  essere PER FORZA compilati nel kernel. Per questo motivo, in "make
  xconfig" NON SI DEVONO selezionare tali moduli come caricabili.

  2.4.6.  I moduli caricabili

  Come installare i moduli caricabili predefiniti.

  I passi seguenti non sono necessari ma lo diventano SOLO IN CASO
  D'EMERGENZA, quando i file in /lib/modules sono danneggiati. In caso
  esista gi la directory /lib/modules e si vogliano rimpiazzare i file,
  si usi --force per sostituire il pacchetto e selezionare
  l'architettura della CPU appropriata [NdT sta parlando degli rpm].

  Per versioni nuove di Redhat Linux 6.0 e successive, i moduli del
  kernel sono inclusi nel file kernel-2.2*.rpm. Installare i moduli
  caricabili e il kernel con:

  ______________________________________________________________________
          Questo elencher i pacchetti gi installati.
  bash# rpm -qa | grep -i kernel

  bash# rpm -U --force  /mnt/cdrom/Redhat/RPMS/kernel-2.2.14-5.0.i686.rpm
  (o)
  bash# rpm -U --force  /mnt/cdrom/Redhat/RPMS/kernel-2.2.14-5.0.i586.rpm
  (o)
  bash# rpm -U --force  /mnt/cdrom/Redhat/RPMS/kernel-2.2.14-5.0.i386.rpm
  ______________________________________________________________________



  Questo vale solo per vecchie versioni di Redhat Linux 5.2 e
  precedenti.  Avviare il nuovo kernel e installare i moduli caricabili
  dal cdrom "contrib" di Redhat Linux:

  ______________________________________________________________________
  bash# rpm -i /mnt/cdrom/contrib/kernel-modules*.rpm
  ....(Per vecchi sistemi Linux che non hanno preinstallato insmod)
  ______________________________________________________________________



  2.5.  Dopo la compilazione del kernel

  Dopo aver creato ed avviato con successo il kernel Linux, si potrebbe
  aver bisogno di fare queste operazioni per permettere ad alcune
  periferiche di lavorare correttamente con Linux.  (I passi seguenti
  sono stati testati su Redhat Linux ma dovrebbero funzionare
  altrettanto correttamente con altre distribuzioni).

  Configurazione della scheda video e del monitor:

     consigliabile consultare il manuale della scheda video,
     solitamente fornito con il PC. Si deve guardare nelle specifiche
     tecniche.

     consigliata anche la consultazione del manuale del monitor,
     sempre nella sezione delle specifiche tecniche.

     Si pu configurare la scheda video e il monitor utilizzando questi
     comandi:



     ___________________________________________________________________
     bash$ su - root
     bash# man Xconfigurator
     bash# /usr/bin/X11/Xconfigurator --help
     bash# /usr/bin/X11/Xconfigurator
     bash# /usr/bin/X11/Xconfigurator --expert

     Guardare anche:
     bash# man xf86config
     bash# /usr/bin/X11/xf86config
     ___________________________________________________________________


  Se la scheda non viene rilevata automaticamente, allora si pu utiliz
  zare l'opzione --expert e selezionare "Unlisted card" ("scheda non
  elencata"). Se il monitor che si possiede non  elencato, allora
  selezionare il tipo di monitor "SVGA 1024x768".

  Configurazione della scheda audio:

    Connettere le casse alla porta della scheda audio.

    Connettere il cavo audio del CDROM alla presa a 4 pin della scheda
     audio.  (Altrimenti il proprio lettore CD non suoner la musica dei
     CD audio - NdT non vale per i nuovi cavi 80 poli).

    Per maggiori informazioni si possono consultare gli HOWTO relativi
     presso <http://www.linuxdoc.org> - NdT o le traduzioni italiane,
     ove presenti, presso <http://ildp.linux.it/HOWTO>.


     ___________________________________________________________________
     bash$ su -
     bash# man sndconfig
     bash# /usr/sbin/sndconfig
     ___________________________________________________________________


  Quindi avviare il desktop KDE per X-window con il comando "startx".
  Cliccare su "K Start->Centro di controllo->Suono->Server sonoro->Gen
  erale->Prova suono". Questo dovrebbe produrre il suono di test. Infine
  cliccare su "K Start->MultiMedia->Suono->Mixer sonoro" e aggiustare il
  volume del suono.

  Configurazione della scheda di rete:

    Usare /sbin/linuxconf

    Oppure si pu adoperare il pannello di controllo KDE

    Per maggiori informazioni si possono consultare gli HOWTO relativi
     presso <http://www.linuxdoc.org>.

  Configurare il Firewall e l'IP Masquerading: Per il kernel Linux
  versione 2.4 e successive, il firewall e l'IP Masquerading sono
  implementati dal pacchetto NetFilter. Per cui nella configurazione del
  kernel si deve abilitare Netfilter e far partire lo script
  Firewall/IPMasq. Si possono scaricare gli script Firewall-IPMasq
  <http://www.BoingWorld.com/workshops/linux/iptables-tutorial>, ,
  l'home page di NetFilter  su  <http://netfilter.samba.org>.
  Materiale al riguardo  disponibile su firewalling-matures
  <http://www.linuxsecurity.com/feature_stories/kernel-netfilter.html> e
  Netfilter-FAQ <http://netfilter.filewatcher.org/netfilter-faq.html>.
  [NdT alcune traduzioni sono disponibili presso
  <http//digilander.iol.it/amilinux/netfilter.html>].

  Per versioni del kernel precedenti la 2.4, si deve installare l'rpm
  del firewall da rpmfind.net
  <http://rpmfind.net/linux/rpm2html/search.php?query=firewall> o
  firewall.src.rpm
  <http://rpmfind.net/linux/RPM/contrib/noarch//SRPMS//firewall-2.2-3.src.html>.

  Configurazione per altri dispositivi: consultare l'HOWTO relativo su
  <http://www.linuxdoc.org>

  2.6.  Un esempio di lilo.conf

  Quello che si trover qui sotto  un modello di file /etc/lilo.conf.
  Si dovrebbe usare la convenzione sui nomi come ker2217 (per il kernel
  2.2.17), ker2214 (per il kernel 2.2.14).  Si possono avere diverse
  immagini del kernel nella stessa /boot.  Nella mia macchina ho
  qualcosa tipo:

  ______________________________________________________________________
  boot=/dev/hda
  map=/boot/map
  install=/boot/boot.b
  prompt
  timeout=50
  default=firewall

  image=/boot/vmlinuz-2.2.14-5.0
          label=ker2214
          read-only
          root=/dev/hda9

  image=/boot/vmlinuz-2.2.17-14
          label=ker2217
          read-only
          root=/dev/hda9

  #image=/usr/src/linux/arch/i386/boot/bzImage
  #       label=myker
  #       root=/dev/hda7
  #       read-only

  image=/boot/bzImage.myker.11feb2001
          label=myker11feb
          root=/dev/hda9
          read-only

  image=/boot/bzImage.myker.01jan2001
          label=myker01jan
          root=/dev/hda9
          read-only

  image=/boot/bzImage.myker-firewall.16mar2001
          label=firewall
          root=/dev/hda9
          read-only
  ______________________________________________________________________



  3.  Domande importanti e relative risposte



  3.1.  Ad ogni modo, il kernel cosa fa?



  Il kernel Unix funge da mediatore tra i programmi e l'hardware. Per
  prima cosa si occupa della (o organizza le cose per la) gestione della
  memoria per tutti i programmi in esecuzione (processi) e assicura che
  tutti abbiano una giusta (o ingiusta, a seconda dei gusti) porzione
  dei cicli del processore. Inoltre fornisce una buona interfaccia,
  abbastanza portabile, per far dialogare i programmi con l'hardware.


  Ci sono certamente molte altre operazioni del kernel oltre a queste,
  ma queste funzioni basilari sono le pi importanti da conoscere.



  3.2.  Perch dovrei voler aggiornare il mio kernel?


  I kernel pi recenti generalmente offrono la possibilit di dialogare
  con un maggior numero di tipi di hardware (ovvero, hanno pi device
  driver), possono avere una gestione migliore dei processi, possono
  girare pi velocemente delle versioni pi vecchie, possono essere pi
  stabili delle versioni precedenti e possono correggere alcuni sciocchi
  bug delle vecchie versioni. La maggior parte della gente aggiorna il
  suo kernel perch vuole i device driver e le correzioni dei bug.



  3.3.  Che tipo di hardware supportano i nuovi kernel?


  Si veda l'Hardware-HOWTO. In alternativa si pu dare una scorsa al
  file "config.in" nei sorgenti di Linux o scoprirlo quando si fa "make
  config". Quest'ultimo mostra tutto l'hardware supportato dalla
  distribuzione standard del kernel, ma non tutto quello che Linux
  supporta; molti device driver comuni (come i driver PCMCIA e alcuni
  driver di dispositivi a nastro) sono moduli caricabili mantenuti e
  distribuiti a parte.



  3.4.  Di che versione di gcc e libc ho bisogno?


  Linus consiglia nel file README incluso con i sorgenti del kernel una
  precisa versione di gcc. Se non si ha questa versione, la
  documentazione della versione raccomandata di gcc dovrebbe dire se 
  necessario aggiornare la propria libc. Questa non  una procedura
  difficile, ma  importante seguire le istruzioni.



  3.5.  Cos' un modulo caricabile?


  Sono pezzi del codice del kernel non lincati (inclusi) direttamente
  nel kernel.  Si possono compilare separatamente e inserirli e
  toglierli da un kernel in esecuzione praticamente in qualsiasi
  momento. Grazie a tale flessibilit, questo  attualmente il modo
  preferito per programmare certe funzionalit del kernel. Molti device
  driver popolari, come i driver PCMCIA e il driver per il dispositivo a
  nastro QIC-80/40, sono moduli caricabili.



  3.6.  Di quanto spazio ho bisogno sul disco?


  Dipende dalla particolare configurazione del proprio sistema. Per
  prima cosa, i sorgenti compressi di Linux 2.2.9 sono quasi 14
  megabyte. Molti li conservano anche dopo averli decompressi. La
  decompressione e la compilazione con una configurazione normale
  occupano fino a 67 MB aggiuntivi.



  3.7.  Quanto tempo ci mette?


  Con le macchine pi nuove la compilazione dura decisamente meno tempo
  che con quelle vecchie; un AMD K6-2/300 con un disco veloce pu
  generare un kernel 2.2.x in circa 4 minuti. Se si ha intenzione di
  compilarne uno con i vecchi Pentium, 486 e 386 ci si prepari ad
  aspettare anche ore, giorni.

  Se ci crea problemi e capita di poter compilare su una macchina pi
  veloce in giro per la rete,  possibile compilare il kernel nella
  macchina pi veloce (assumendo che si siano specificati i parametri
  giusti, che le proprie utility siano aggiornate e cos via) e poi
  trasferire l'immagine del kernel nella macchina pi lenta.



  4.  Come configurare effettivamente il kernel



  4.1.  Procurarsi i sorgenti


   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.



  4.2.  Decomprimere i sorgenti


  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 -



  4.3.  Configurare il kernel


  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.

  4.3.1.  Kernel math emulation (Processor type and features)


  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.



  4.3.2.  Enhanced (MFM/RLL) disk and IDE disk/cdrom support (Block
  Devices)


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



  4.3.3.  Networking support (General Setup)


  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.



  4.3.4.  System V IPC (General Setup)


  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.



  4.3.5.  Processor family (Processor type and features)

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



  4.3.6.  SCSI support


  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.



  4.3.7.  Network device support


  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.



  4.3.8.  Filesystems


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



  4.3.8.1.  Ma io non so di quali filesystem ho bisogno!


  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.



  4.3.9.  Character devices


  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.



  4.3.10.  Sound


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



  4.3.11.  Altre opzioni di configurazione


  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.



  4.3.12.  Kernel hacking


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



  4.4.  E adesso? (Il Makefile)


  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.



  5.  Compilare il kernel



  5.1.  Far pulizia e sistemare le dipendenze


  Quando termina lo script di configurazione, dice pure di dare "make
  dep" e (possibilmente) "make clean".  Quindi, si faccia il "make dep".
  Ci assicura che tutte le dipendenze, come i file include, siano a
  posto. Non ci mette tanto, a meno che il proprio computer non sia
  piuttosto lento. Per le vecchie versioni del kernel, quando terminava,
  si doveva fare un "make clean". Ci rimuoveva tutte i file oggetto e
  alcune altre cose che le vecchie versioni lasciavano in giro. In ogni
  caso, non si dimentichi questo passo prima di provare a ricompilare il
  kernel.



  5.2.  Tempo di compilazione


  Dopo il make dep ed il make clean, si pu dare "make bzImage" o "make
  bzdisk" (questa  la parte che richiede un tempo pi lungo).  "make
  bzImage" compiler il kernel e lascer (tra le altre cose) in
  arch/i386/boot un file chiamato "bzImage". Questo  il nuovo kernel
  compresso. "make bzdisk" fa la stessa cosa, ma piazza pure il nuovo
  bzImage su un dischetto che si spera sia stato messo nel lettore "A:".
  "bzdisk"  piuttosto comodo per verificare un nuovo kernel; se si
  pianta (o semplicemente non funziona bene), basta solo rimuovere il
  dischetto e riavviare il sistema con il proprio vecchio kernel.  pure
  un modo comodo di fare il boot se accidentalmente si cancella il
  proprio kernel (o capitano altre cose ugualmente terribili). Lo si pu
  pure usare per installare un nuovo sistema quando si  semplicemente
  scaricato il contenuto di un disco in un altro ("tutto questo e molto
  altro ancora! ORA quanto vorresti pagare?").


  Tutti i kernel ragionevolmente recenti sono compressi, da qui il "bz"
  di fronte al nome. Un kernel compresso si decomprime da solo
  automaticamente quando eseguito.

  Nei kernel pi vecchi, non c'era l'opzione per costruire un bzImage;
  era semplicemente un zImage. Tale opzione al momento  ancora
  disponibile ma comunque, data la dimensione del codice dei nuovi
  kernel, ora  pi o meno obbligatorio compilare un bzImage perch il
  vecchio metodo non riesce a gestire kernel molto grossi.



  5.3.  Altri "make"


  "make mrproper"  come un "make clean" molto pi accurato.  Qualche
  volta  necessario; si pu desiderare di farlo dopo aver applicato una
  patch. "make mrproper" canceller anche il file di configurazione e
  quindi conviene salvarselo (.config) se si pensa che pu essere utile.


  "make oldconfig" prover a configurare il kernel da un vecchio file di
  configurazione; eseguir da solo tutto il processo "make config". Se
  non si  mai compilato un kernel prima o non si possiede un vecchio
  file di configurazione, allora probabilmente non lo si dovrebbe fare,
  in quanto molto probabilmente si vorr modificare la configurazione
  predefinita.


  Si veda la sezione sui moduli per una descrizione di "make modules".



  5.4.  Installare il kernel


  Quando si ha un kernel che sembra funzionare nel modo desiderato,
  allora  il momento di installarlo. Molti usano LILO (LInux LOader)
  per questo. "make bzlilo" installer il kernel, lancer LILO e
  preparer tutto per il boot, MA SOLO se lilo  configurato nel proprio
  sistema nel modo seguente: il kernel  /vmlinuz, lilo  in /sbin e il
  file di configurazione di lilo (/etc/lilo.conf)  coerente con tutto
  ci.


  Altrimenti,  necessario usare LILO direttamente.  un pacchetto
  abbastanza semplice da installare e da usare, ma ha la tendenza a
  confondere la gente con il file di configurazione. Si dia un'occhiata
  al file di configurazione (/etc/lilo/config per le vecchie versioni
  oppure /etc/lilo.conf per quelle nuove) e si veda qual 
  l'impostazione corrente. Il file di configurazione  simile a questo:



      image = /vmlinuz
          label = Linux
          root = /dev/hda1
          ...



  "image ="  impostato al kernel attualmente installato. La maggior
  parte della gente usa /vmlinuz. "label"  usato da lilo per
  determinare quale kernel o sistema operativo avviare, "root"  la root
  ("/") di quel particolare sistema operativo. Si faccia una copia di
  backup del vecchio kernel e si copi il bzImage appena creato al suo
  posto (si dovr dare "cp bzImage /vmlinuz" se si usa "/vmlinuz"). Poi,
  si rilanci lilo: su un nuovo sistema si pu semplicemente lanciare
  "lilo", ma in uno vecchio si dovr fare /etc/lilo/install o
  addirittura /etc/lilo/lilo -C /etc/lilo/config.
  Se si vuol saperne di pi sulla configurazione di LILO, o non si ha
  LILO, si prenda la versione pi recente dal proprio sito ftp preferito
  e si seguano le istruzioni.


  Per avviare uno dei propri vecchi kernel dal disco fisso (un altro
  modo per salvarsi nel caso si facciano casini con il nuovo), si copino
  le righe che seguono "image = xxx" (compresa) alla fine del file di
  configurazione di LILO e si modifichi "image = xxx" in "image = yyy",
  dove "yyy"  il percorso completo del file in cui si fatto il backup
  del kernel. Poi si cambi "label = zzz" in "label = linux-backup" e si
  rilanci lilo. Pu essere necessario mettere nel file di configurazione
  una riga con "delay=x", dove x  il numero di decimi di secondo che
  LILO dovr attendere prima di fare il boot, in modo da poterlo
  interrompere (con il tasto shift, per esempio), e inserire l'etichetta
  della immagine di boot di backup (nel caso succedano cose non proprio
  piacevoli).



  6.  Applicare una patch al kernel



  6.1.  Applicare una patch


  Gli aggiornamenti incrementali del kernel sono distribuiti come patch
  (NdT letteralmente "toppe"). Per esempio, se si ha la versione 1.1.45
  e si ha notizia che c' una "patch46.gz" in giro, significa che si pu
  aggiornare alla versione 1.1.46 applicando quella patch. Prima pu
  essere una buona idea fare una copia di backup dell'albero dei
  sorgenti ("make clean" e poi "cd /usr/src; tar zcvf old-tree.tar.gz
  linux" creer un archivio compresso).


  Cos, continuando con l'esempio precedente, si supponga di avere
  "patch46.gz" in /usr/src. Si dia "cd /usr/src" e si esegua "zcat
  patch46.gz | patch -p0" (o "patch -p0 < patch46" se la patch non 
  compressa). Si vedranno sfrecciare (o fluttuare, se il proprio sistema
   abbastanza lento) delle scritte che dicono che sta provando ad
  applicare dei pezzi ("hunk") e quando ha o meno successo. Solitamente
  questa azione  troppo veloce per poterla leggere ed  difficile
  essere sicuri se ha funzionato o meno, quindi pu essere un'idea usare
  l'opzione -s, che dice a patch di riportare solo i messaggi d'errore.
  Per cercare le parti che non sono andate a buon fine, si passi in
  /usr/src/linux e si cerchino i file con estensione .rej. Alcune
  versioni di patch (versioni pi vecchie che possono essere state
  compilate con un filesystem inferiore) lasciano scarti con
  un'estensione #. Si pu usare "find" per la ricerca:

      find . -name '*.rej' -print


  mostrer nello standard output tutti i file residenti nella directory
  corrente e in ogni sottodirectory con estensione .rej.


  Se tutto va a buon fine, si faccia "make clean", "config" e "dep" come
  descritto nelle sezioni 3 e 4.


  Ci sono alcune altre opzioni per il comando patch. Come menzionato
  prima, patch -s sopprimer tutti messaggi tranne quelli d'errore. Se
  si conservano i sorgenti del kernel in un posto diverso da
  /usr/src/linux, patch -p1 (in quella directory) applicher
  correttamente la patch. Altre opzioni di patch sono ben documentate
  nella pagina di man.



  6.2.  Se qualcosa va storto


  (Nota: questa sezione fa riferimento principalmente a kernel piuttosto
  vecchi)


  Il problema pi frequente che solitamente compariva quando una patch
  modificava un file chiamato "config.in" e questo non sembrava pi
  essere a posto, perch lo si era modificato per adattarlo alla propria
  macchina. Di questo ora si tiene conto, ma si potrebbe ancora
  incontrare con vecchie release. Per correggerlo, si veda il file
  config.in.rej e si veda cosa rimane della patch originale. Le
  modifiche saranno tipicamente marcate con "+" e "-" all'inizio di
  ciascuna riga. Si vedano le righe l attorno e si ricordi se erano
  state impostate a "y" o "n". Ora si modifichi il config.in, e si cambi
  "y" in "n" e "n" in "y" quando appropriato. Si faccia un

      patch -p0 < config.in.rej


  e, se finisce con successo, si pu continuare con la configurazione e
  la compilazione. Il file config.in.rej rimarr, ma si pu cancellarlo.


  Se si incontrano ulteriori problemi, si pu aver installato una patch
  "fuori uso". Se patch dice "previously applied patch detected: Assume
  -R?" (rilevata una patch applicata precedentemente: assumo -R?),
  probabilmente si sta provando ad applicare una patch precedente al
  numero di versione corrente; se si risponde "y" prover a degradare i
  sorgenti e molto probabilmente fallir; sar quindi necessario
  prendere in blocco un nuovo albero dei sorgenti (poteva non essere una
  cattiva idea sin dall'inizio).


  Per tornare indietro di una patch, disapplicandola, si usi "patch -R"
  sulla patch originale.


  La miglior cosa da fare quando le patch fanno realmente casino  di
  ripartire da un albero dei sorgenti nuovo di zecca (per esempio, da
  uno dei file linux-x.y.z.tar.gz) e ricominciare.



  6.3.  Sbarazzarsi dei file .orig


  Gi dopo poche patch, i file .orig cominciano ad ammucchiarsi. Per
  esempio, un albero 1.1.51 che ho ripulito l'ultima volta quand'era
  1.1.48: rimuovendo i file .orig ho recuperato oltre 500 Kbyte.

      find . -name '*.orig' -exec rm -f {} ';'


  se ne occuper al vostro posto. Le versioni di patch che usano # per
  gli scarti usano una tilde invece di .orig.

  Ci sono modi migliori per sbarazzarsi dei file .orig, che dipendono da
  GNU xargs:

      find . -name '*.orig' | xargs rm


  o il metodo "piuttosto sicuro ma un po' pi prolisso":

      find . -name '*.orig' -print0 | xargs --null rm --



  6.4.  Altre patch


  Esistono altre patch (io le chiamo "non standard") oltre a quelle che
  distribuisce Linus. Se le si applica, le patch di Linus potrebbero non
  funzionare correttamente e si dovr o tornare indietro, correggere i
  sorgenti o la patch, installare un nuovo albero dei sorgenti o una
  combinazione di queste cose. Ci pu divenire abbastanza frustrante,
  se non si vogliono modificare i sorgenti (con il rischio di ottenere
  pessimi risultati), si rimuovano le patch non standard prima di
  applicare quelle di Linus, o semplicemente si installi un nuovo
  albero. Poi, si pu provare a vedere se le patch non standard
  funzionano ancora. Se non lo fanno, o si resta con il vecchio kernel,
  giochicchiando con la patch e i sorgenti per farli funzionare, o si
  aspetta (probabilmente elemosinando) che esca una nuova versione della
  patch.


  Quanto comuni sono le patch che non sono nella distribuzione standard?
  Probabilmente se n' sentito parlare. Ero avvezzo ad usare la patch
  noblink per le mie console virtuali perch odio il cursore
  lampeggiante (questa patch , o almeno era, aggiornata frequentemente
  per le nuove release del kernel). Con la maggior parte dei device
  driver sviluppati come moduli caricabili, la frequenza di patch "non
  standard"  diminuita significativamente.



  7.  Pacchetti aggiuntivi

  Il proprio kernel linux ha molte funzionalit che non sono spiegate
  negli stessi sorgenti del kernel; queste funzionalit sono tipicamente
  utilizzate attraverso pacchetti esterni. Sono qui elencati alcuni dei
  pi comuni.



  7.1.  kbd


  La console di Linux probabilmente ha pi funzionalit di quante ne
  meriti.  Tra queste ci sono la possibilit di cambiare i font,
  rimappare la tastiera, cambiare modalit video (nei kernel pi nuovi),
  ecc. Il pacchetto kbd contiene programmi che permettono all'utente di
  fare tutto questo, oltre a numerosi font e mappe di tastiera per
  praticamente qualsiasi tastiera.  disponibile sugli stessi siti che
  conservano i sorgenti del kernel.



  7.2.  util-linux

  Rik Faith (faith@cs.unc.edu) ha messo assieme una grossa collezione di
  utility per Linux che per una strana coincidenza  stata chiamata
  util-linux. Sono ora mantenute da Andries Brouwer (util-
  linux@math.uio.no). Disponibili in ftp anonimo da sunsite.unc.edu in
  /pub/Linux/system/misc, contengono programmi come setterm, rdev e
  ctrlaltdel, che sono importanti per il kernel. Come dice Rik, non le
  si installi senza pensare; non  necessario installare tutto ci che 
  presente nel pacchetto, si potrebbero avere dei problemi facendolo.



  7.3.  hdparm


  Come per molti pacchetti, questo era un tempo una patch per il kernel
  e dei programmi di supporto. La patch  stata integrata nel kernel
  ufficiale e il programma per ottimizzare o giochicchiare con il
  proprio disco fisso  ora distribuito separatamente.



  7.4.  gpm

  gpm sta per "general purpose mouse". Questo programma permette di fare
  il taglia e incolla tra le console virtuali e altre cosette con un
  gran numero di tipi di mouse.



  8.  Alcuni trabocchetti



  8.1.  make clean

  Se il proprio nuovo kernel fa veramente cose strane dopo un
  aggiornamento, c' la possibilit che si sia dimenticato di fare make
  clean prima di compilare il nuovo kernel. I sintomi possono essere
  qualsiasi, da crash senza motivo a strani problemi di I/O, fino a
  prestazioni pietose. Ci si assicuri di fare anche un make dep.



  8.2.  Kernel grossi o lenti

  Se il proprio kernel si piglia un sacco di memoria,  troppo grande o
  ci mette un'eternit per compilarsi anche se si  preso il nuovo
  Quadbazillium-III/4400, probabilmente si sono configurate un sacco di
  cose non necessarie (device driver, filesystem ecc). Se non le si usa,
  non le si selezioni, perch non fanno altro che occupare memoria.  Il
  sintomo pi ovvio di un kernel cicciotto  il continuo swap tra la
  memoria e il disco; se il proprio disco sta facendo un sacco di rumore
  e non  uno di quei vecchi Fujitsu Eagles, che sembrano jet che
  atterrano quando vengono spenti, si dia un'occhiata alla
  configurazione del kernel.


  Si pu scoprire quanta memoria sta usando il kernel prendendo il
  totale della memoria nella propria macchina e sottraendogli
  l'ammontare di "total mem" in /proc/meminfo o l'output del comando
  "free".



  8.3.  La porta parallela non funziona/la mia stampante non funziona


  Le opzioni di configurazioni per i PC sono: innanzitutto, sotto la
  categoria "General Setup", si selezioni "Parallel port support" e "PC-
  style hardware".  Poi sotto "Character devices", si selezioni
  "Parallel printer support".

  Poi ci sono i nomi. In Linux 2.2 i nomi dei file di device sono
  diversi da quelli delle release precedenti. Come risultato finale, se
  si aveva un lp1 sotto il proprio vecchio kernel, probabilmente si
  chiama lp0 per quello nuovo.  Si usi "dmesg" o si dia una scorsa ai
  log in /var/log per capire il problema.



  8.4.  Il kernel non si compila


  Se non si compila, allora probabilmente una patch ha fallito o i
  propri sorgenti sono in qualche modo corrotti. Inoltre potrebbe non
  essere corretta la propria versione di gcc, o potrebbe essere essa
  stessa corrotta (per esempio, i file include potrebbero contenere
  degli errori). Ci si assicuri che i link simbolici che Linus descrive
  nel README siano impostati correttamente. In generale, se un kernel
  standard non si compila, nel sistema c' qualcosa di davvero sbagliato
  ed  probabilmente necessaria la reinstallazione di alcuni strumenti.


  In alcuni casi, gcc pu andare in crash a causa di problemi hardware.
  Il messaggio d'errore  qualcosa di simile a "xxx exited with signal
  15" e in genere sembrer molto misterioso. Probabilmente non lo
  menzionerei se non mi fosse successo una volta: avevo della memoria
  cache difettosa e il compilatore occasionalmente andava in palla a
  caso. Si provi per prima cosa a reinstallare gcc se si  soggetti al
  problema. Si dovrebbe essere sospettosi solo se il kernel si compila
  bene disabilitando la cache esterna, con un ammontare di RAM ridotto,
  ecc.


  Suggerire alla gente che il loro hardware ha dei problemi tende a
  disturbare i sonni.  Bene, non lo far pi. C' una FAQ per questo:
  http://www.bitwizard.nl/sig11/.



  8.5.  La nuova versione del kernel sembra non riuscire ad avviarsi


  Non si  lanciato LILO o non lo si  configurato correttamente. Una
  cosa che mi ha fregato una volta  stato un problema nel file di
  configurazione; diceva "boot = /dev/hda1" invece di "boot = /dev/hda"
  (questa cosa potrebbe essere un po' noiosa all'inizio ma una volta che
  si ha un file di configurazione funzionante, non sar pi necessario
  modificarlo).



  8.6.  Si  dimenticato di lanciare LILO oppure il sistema proprio non
  si avvia


  Ooops! La cosa migliore che si pu fare qui  di fare il boot da un
  dischetto o da un CDROM e preparare un altro dischetto avviabile (come
  farebbe "make zdisk").   necessario sapere dov' il proprio
  filesystem di root (/) e di quale tipo  (e.g. ext2, minix).
  Nell'esempio seguente  necessario conoscere anche il filesystem in
  cui risiede il proprio albero dei sorgenti /usr/src/linux, il suo tipo
  e dov' normalmente montato.


  Nell'esempio seguente /  /dev/hda1 e il filesystem che contiene
  /usr/src/linux  /dev/hda3, normalmente montato in /usr.  Entrambi
  sono filesystem ext2. L'immagine del kernel funzionante  in
  /usr/src/linux/arch/i386/boot ed  chiamata bzImage.


  L'idea  che se esiste un bzImage funzionante,  possibile usarlo per
  un nuovo dischetto. Un'altra alternativa, che potrebbe funzionare bene
  o no (dipende dal modo in cui si  incasinato il proprio sistema) 
  discussa dopo l'esempio.


  Per prima cosa si avvii combinando un dischetto di boot e uno di root,
  oppure da un dischetto di recupero, e si monti il filesystem che
  contiene l'immagine del kernel funzionante:



      mkdir /mnt
      mount -t ext2 /dev/hda3 /mnt



  Se mkdir dice che la directory esiste gi semplicemente si ignori
  l'errore. Ora, si vada nella directory dove si trova il kernel
  funzionante. Si noti che

  /mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot


  Si inserisca un dischetto formattato nel drive A: (non il proprio dis
  chetto di boot o di root!), si scarichi l'immagine nel dischetto e lo
  si configuri per il proprio filesystem di root:



      cd /mnt/src/linux/arch/i386/boot
      dd if=bzImage of=/dev/fd0
      rdev /dev/fd0 /dev/hda1



  Si dia "cd /" e si smonti il filesystem /usr normale:


      cd /
      umount /mnt



  Ora si dovrebbe essere in grado di riavviare il proprio sistema
  normalmente da questo dischetto. Non si dimentichi di lanciare lilo (o
  correggere qualsiasi altra cosa che si  fatto di sbagliato) dopo aver
  riavviato!


  Come menzionato in precedenza c' un'altra alternativa comune. Se
  capita di avere un'immagine funzionante del kernel in / (/vmlinuz per
  esempio), la si pu usare per un dischetto di boot. Si suppongano
  tutte le condizioni precedenti e che la nostra immagine del kernel sia
  /vmlinuz, si facciano solamente le seguenti modifiche all'esempio
  precedente: si cambi /dev/hda3 in /dev/hda1 (nel filesystem /),
  /mnt/src/linux in /mnt, e if=bzImage in if=vmlinuz. La nota che spiega
  come derivare /mnt/src/linux pu essere ignorata.


  L'uso di LILO con dischi grossi (pi di 1024 cilindri) pu causare
  problemi. Si veda il LILO mini-HOWTO o la documentazione per aver
  aiuto in proposito.



  8.7.  Dice `warning: bdflush not running'


  Questo pu essere un problema serio. A partire dalle release del
  kernel dopo la 1.0 (attorno al 20 aprile 1994),  stato
  aggiornato/rimpiazzato un programma chiamato "update" che scarica
  periodicamente i buffer del filesystem. Si prendano i sorgenti di
  "bdflush" (lo si dovrebbe trovare dove si sono presi i sorgenti del
  kernel) e lo si installi (probabilmente  meglio far funzionare il
  sistema con il vecchio kernel mentre lo si fa). Si installa come
  "update" e dopo un riavvio, il nuovo kernel non dovrebbe pi
  protestare.



  8.8.  Non riesco a far funzionare il mio lettore CD-ROM IDE/ATAPI


  Piuttosto strano, ma un sacco di gente non riesce a far funzionare i
  loro lettori ATAPI, probabilmente perch ci sono un po' di cose che
  vanno storte (NdT non succede praticamente pi al giorno d'oggi).

  Se il proprio CD-ROM  il solo dispositivo in una particolare
  interfaccia IDE, dovrebbe essere impostato come "master" o "single".
  Questo  l'errore pi comune.

  Creative Labs (per dirne una) ora ha messo interfacce IDE sulle sue
  schede audio. Comunque, questo porta all'interessante problema che
  mentre alcuni hanno solo una interfaccia, molti hanno due interfacce
  IDE integrate nelle loro schede madri (solitamente all'IRQ15), cos 
  pratica comune rendere l'interfaccia della soundblaster una terza
  porta IDE (IRQ11).

  Ci causa problemi con Linux in quelle versioni 1.2.x che non
  supportano una terza interfaccia IDE (c' il supporto a partire da
  qualche parte nella serie 1.3.x, ma si ricordi che  in sviluppo ed
  inoltre non rileva automaticamente le interfacce). Per andare a capo
  di questa cosa non si hanno molte scelte.

  Se si ha gi una seconda porta IDE,  possibile che non la si stia
  usando o che non abbia gi connessi due dispositivi. Si tolga il
  lettore ATAPI dalla scheda audio e lo si metta nella seconda
  interfaccia. Si pu poi disabilitare l'interfaccia della scheda audio,
  il che fa risparmiare anche un IRQ.

  Se non si ha una seconda interfaccia, si configuri (con i ponticelli)
  l'interfaccia della scheda audio (non la parte relativa alla scheda
  audio) come IRQ15, la seconda interfaccia. Dovrebbe funzionare.



  8.9.  Dice strane cose a proposito di richieste di instradamento


  Ci si procuri una nuova versione del programma route e di qualsiasi
  altro programma per manipolare gli instradamenti.
  /usr/include/linux/route.h (che in realt  un file in /usr/src/linux)
   cambiato.


  8.10.  Il firewall non funziona in 1.2.0

  Si aggiorni almeno alla versione 1.2.1.



  8.11.  "Not a compressed kernel Image file"



  Non si usi il file vmlinux creato in /usr/src/linux come immagine di
  boot; quello giusto  [..]/arch/i386/boot/bzImage.



  8.12.  Problemi con i terminali console dopo l'aggiornamento al 1.3.x

  Si cambi la parola dumb in linux nella voce termcap della console in
  /etc/termcap. Si potrebbe dover pure creare una voce terminfo.



  8.13.  Non riesco pi a compilare quasi niente dopo l'aggiornamento
  del kernel

  I sorgenti del kernel Linux includono numerosi file include (quelle
  cose che finiscono con .h) ai quali viene fatto riferimento dagli
  include standard in /usr/include. Solitamente ne viene fatto
  riferimento in questo modo (dove xyzzy.h vorrebbe essere qualcosa in
  /usr/include/linux):

      #include <linux/xyzzy.h>


  Solitamente c' un link chiamato linux in /usr/include alla directory
  include/linux del propri sorgenti del kernel (in un sistema tipico
  /usr/src/linux/include/linux). Se non c' questo link, o punta in un
  posto sbagliato, la maggior parte delle cose non si compileranno
  affatto. Se si  deciso che i sorgenti del kernel occupano troppo
  spazio su disco e li si  cancellati allora ovviamente il problema
  sar questo. Un'altra cosa che potrebbe non andare bene sono i perme
  ssi dei file; se root ha una umask che per default non permette agli
  altri utenti di vedere i suoi file e si sono estratti i sorgenti del
  kernel senza l'opzione p (preserva i permessi dei file), quegli utenti
  non saranno in grado di usare il compilatore C. Sebbene per correggere
  questa cosa si possa usare il comando chmod, probabilmente  pi
  facile riestrarre i file include. Lo si pu fare nello stesso modo dei
  sorgenti completi all'inizio, aggiungendo solamente un argomento.


      blah# tar zxvpf linux.x.y.z.tar.gz linux/include


  Nota: "make config" creer il link /usr/src/linux se non c'.



  8.14.  Incrementare i limiti

  I pochi comandi di esempio che seguono possono essere utili a quanti
  si domandano come incrementare alcuni limiti imposti dal kernel:

  echo 4096 > /proc/sys/kernel/file-max
  echo 12288 > /proc/sys/kernel/inode-max
  echo 300 400 500 > /proc/sys/vm/freepages

  9.  Note per l'aggiornamento alle versioni 2.0.x, 2.2.x

  I kernel delle versioni 2.0.x e 2.2.x introducono un po' di modifiche
  nell'installazione del kernel. Il file Documentation/Changes
  nell'albero dei sorgenti del 2.0.x contiene informazioni per entrambe
  le versioni. Molto probabilmente si dovranno aggiornare diversi
  pacchetti chiave, come gcc, libc e SysVInit, e forse modificare alcuni
  file di sistema.



  10.  Moduli

  I moduli caricabili del kernel possono far risparmiare memoria e
  facilitare la configurazione. Lo scopo dei moduli  cresciuto fino a
  includere filesystem, driver per schede Ethernet, driver per
  dispositivi a nastro, driver per la stampante e altro.



  10.1.  Installare le utility per i moduli


  Le utility per i moduli sono disponibili nello stesso posto dove si
  sono presi i sorgenti del proprio kernel come modutils-x.y.z.tar.gz;
  si scelga il pi alto livello di patch x.y.z che sia minore o uguale a
  quello del proprio kernel corrente. Le si decomprima con "tar zxvf
  modutils-x.y.z.tar.gz", si entri nella directory creata (modutils-
  x.y.z), si legga il file README e si seguano le istruzioni di
  installazione (solitamente qualcosa di semplice, come make install).
  Ora si dovrebbero avere i programmi insmod, rmmod, ksyms, lsmod,
  genksyms, modprobe e depmod in /sbin. Se si vuole, si verifichino le
  utility con il driver di esempio "hw" nella directory insmod; si veda
  il file INSTALL in quella sottodirectory per i dettagli.

  insmod inserisce un modulo dentro un kernel in esecuzione. I moduli
  solitamente hanno un'estensione .o; il driver di esempio summenzionato
   chiamato drv_hello.o, cos per inserirlo uno dovrebbe usare "insmod
  drv_hello.o". Per vedere i moduli che il kernel sta attualmente usando
  si usi lsmod. L'output  simile a questo:

      blah# lsmod
      Module:        #pages:  Used by:
      drv_hello          1


  "drv_hello"  il nome del modulo, usa una pagina (4k) di memoria e al
  momento nessun'altro modulo del kernel dipende da esso. Per rimuovere
  questo modulo, si usi "rmmod drv_hello". Si noti che rmmod vuole un
  nome di modulo, non un nome di file; lo si prenda dall'elenco di
  lsmod. Lo scopo delle altre utility per i moduli  documentato nelle
  relative pagine di man.



  10.2.  Moduli distribuiti con il kernel

  Dalla versione 2.0.30, praticamente qualsiasi cosa  disponibile come
  modulo caricabile. Per usarli, per prima cosa ci si assicuri di non
  configurarli dentro il kernel; ovvero, non si risponda y ad essi
  durante il "make config".  Si compili un nuovo kernel e si riavvii.
  Poi, si faccia cd /usr/src/linux e si esegua un "make modules". Questo
  compila tutti i moduli che si sono specificati nella configurazione
  del kernel e mette dei link a essi in /usr/src/linux/modules. Li si
  pu usare direttamente da quella directory o eseguire "make
  modules_install", che li installa in /lib/modules/x.y.z, dove x.y.z 
  la versione del kernel.


  Questo pu essere utile specialmente con i filesystem.  probabile che
  non si faccia uso frequente dei filesystem minix o msdos. Per esempio,
  per un dischetto msdos, si pu fare insmod
  /usr/src/linux/modules/msdos.o e poi rmmod msdos quando si  finito.
  Questa procedura fa risparmiare circa 50Kb di RAM nel kernel durante
  le normali operazioni. Un piccola nota al contorno per il filesystem
  minix: si dovr sempre configurarlo direttamente dentro il kernel per
  usarlo sui dischetti di ripristino.



  11.  Suggerimenti e trucchi



  11.1.  Redirezionare l'output dei comandi make o patch


  Se si vuole una registrazione di quel che hanno fatto i comandi "make"
  o "patch",  possibile redirezionare l'output su un file. Per prima
  cosa si scopra quale shell si usa: "grep root /etc/passwd" e si cerchi
  qualcosa di simile a "/bin/csh".


  Se si usa sh o bash,

      (comando) 2>&1 | tee (file di output)


  piazzer una copia dell'output di (comando) nel file "(file di out
  put)".


  Per csh o tcsh, si usi

      (comando) |& tee (file di output)



  Per rc (Nota: probabilmente non si usa rc) serve

      (comando) >[2=1] | tee (file di output)



  11.2.  Installazioni condizionali del kernel


  Oltre a usare dischetti, ci sono diversi metodi per verificare un
  nuovo kernel senza toccare quello vecchio. Diversamente da quanto
  accade per altre versioni di Unix, LILO ha la possibilit di avviare
  il kernel ovunque si trovi nel disco (per dischi oltre 500 Mb si
  consulti la documentazione di LILO in quanto questo pu causare dei
  problemi).  Quindi, se si aggiunge qualcosa del tipo

      image = /usr/src/linux/arch/i386/boot/bzImage
          label = new_kernel



  alla fine del file di configurazione di LILO, si pu scegliere se
  avviare un kernel appena compilato senza toccare il vecchio /vmlinuz
  (dopo aver eseguito lilo, naturalmente).  Il modo pi semplice di dire
  a LILO di avviare un nuovo kernel  di premere il tasto shift
  all'avvio (quando viene mostrato LILO nello schermo e niente altro),
  che d l'accesso a un prompt. A questo punto, si pu inserire
  "new_kernel" per avviare il nuovo kernel.

  Se si vogliono mantenere versioni differenti dell'albero dei sorgenti
  nel proprio sistema (attenzione, questa cosa pu occupare un sacco di
  spazio nel disco), il modo pi comune  di chiamarle /usr/src/linux-
  x.y.z, dove x.y.z  la versione del kernel. Si pu poi "selezionare"
  un albero di sorgenti con un link simbolico; per esempio "ln -sf
  linux-1.2.2 /usr/src/linux" render l'albero 1.2.2 quello corrente.
  Prima di creare un link simbolico come questo, ci si assicuri che
  l'ultimo argomento di ln non sia una directory (se  un vecchio link
  simbolico non c' problema), altrimenti il risultato potrebbe non
  essere quello che ci si aspetta.



  11.3.  Aggiornamenti del kernel

  Russell Nelson (nelson@crynwr.com) riassume le modifiche nelle nuove
  versioni del kernel. Sono corte e sarebbe bene darci un'occhiata prima
  di aggiornare. Sono disponibili in ftp anonimo da ftp.emlist.com in
  pub/kchanges o tramite l'URL

      http://www.crynwr.com/kchanges


  (NdT sono informazioni sorpassate rimaste dalle vecchie versioni
  dell'HOWTO, per i cambiamenti si consulti ad es. http://www.lin
  uxhq.com/kernel/)



  12.  Altri HOWTO di rilievo che possono essere utili


    Sound-HOWTO: schede audio e utility

    SCSI-HOWTO: tutto sui controller e i dispositivi SCSI

    NET-2-HOWTO: networking (NdT ora Networking HOWTO)

    PPP-HOWTO: networking PPP in particolare

    PCMCIA-HOWTO: sui driver per i portatili

    ELF-HOWTO: ELF: cos', conversioni...

    Hardware-HOWTO: panoramica dell'hardware supportato

    Module mini-HOWTO: altro ancora sui moduli del kernel

    Kerneld mini-HOWTO: su kerneld

    BogoMips mini-HOWTO: nel caso si voglia fantasticare


  13.  Varie



  13.1.  Autore


  L'autore e manutentore del Linux Kernel-HOWTO  Brian Ward
  (bri@cs.uchicago.edu). Invito a inviarmi qualsiasi commento, aggiunta
  e correzione (in particolare le correzioni sono le cose per me pi
  importanti).


  Si pu dare un'occhiata alla mia home page in uno di questi URL:

      http://www.math.psu.edu/bri/
      http://blah.math.tu-graz.ac.at/~bri/



  Anche se ho provato a essere il pi possibile sollecito con le email,
  si ricordi che ne ricevo un sacco tutti i giorni, quindi mi ci vuole
  un po' di tempo per rispondere. Specialmente quando mi si invia una
  domanda, invito a sforzarsi di essere il pi possibile chiari e
  dettagliati nei propri messaggi. Se si sta scrivendo a proposito di
  hardware non funzionante (o qualcosa di simile), ho bisogno di
  conoscere qual  la configurazione hardware. Se si riporta un errore,
  non si dica semplicemente "ho provato questo ma mi ha dato un errore";
  ho bisogno di sapere qual era l'errore. Vorrei anche sapere quale
  versione del kernel, gcc e libc si sta usando. Se mi si dice
  semplicemente che si usa questa o quella distribuzione, non mi si dice
  poi molto. Non mi preoccupo se si fanno domande semplici; si ricordi
  che se non si chiede non si avr mai una risposta!  Voglio ringraziare
  tutti quelli che mi hanno dato un qualche riscontro.

  Se le domande non sono relative al kernel, o sono in una qualche
  lingua che non capisco, potrei non rispondere.


  Se mi si scrive e non si riceve risposta in un tempo ragionevole (tre
  settimane o pi), allora  possibile che io abbia cancellato
  accidentalmente il messaggio (spiacente). Si riprovi.


  Ho ricevuto un sacco di mail su cose che in realt sono problemi
  hardware. Vanno bene, ma si tenga in conto che non ho familiarit con
  tutto l'hardware esistente al mondo. Uso processori AMD, controller
  SCSI Adaptec e Symbios e dischi SCSI IBM.


  La versione 0.1  stata scritta il 3 ottobre 1994. Questo documento 
  disponibile nei formati SGML, PostScript, TeX, roff e testo.



  13.2.  Da fare

  La sezione "Suggerimenti e trucchi"  un po' piccola. Spero di
  espanderla con suggerimenti da altri.

  Cos  anche "Pacchetti addizionali".

  Sono necessarie pi informazioni sul debugging/recupero dai crash.


  13.3.  Contributi

   inclusa una piccola parte del README di Linus (opzioni di kernel
  hacking). (Grazie, Linus!)
  uc@brian.lunetix.de (Ulrich Callmeier): patch -s e xargs.

  quinlan@yggdrasil.com (Daniel Quinlan): correzioni e aggiunte in molte
  sezioni.

  nat@nat@nataa.fr.eu.org (Nat Makarevitch): mrproper, tar -p, molte
  altre cose

  boldt@math.ucsb.edu (Axel Boldt): ha raccolto le descrizioni delle
  opzioni di configurazione del kernel dalla rete; poi mi ha passato la
  lista.

  lembark@wrkhors.psyber.com (Steve Lembark): suggerimenti sui boot
  multipli.

  kbriggs@earwax.pd.uwa.edu.au (Keith Briggs): alcune correzioni e
  suggerimenti

  rmcguire@freenet.columbus.oh.us (Ryan McGuire): aggiunte sulle
  "makeabilit".

  dumas@excalibur.ibp.fr (Eric Dumas): traduzione in francese.

  simazaki@ab11.yamanashi.ac.jp (Yasutada Shimazaki): traduzione in
  giapponese.

  jjamor@lml.ls.fi.upm.es (Juan Jose Amor Iglesias): traduzione in
  spagnolo.

  mva@sbbs.se (Martin Wahlen): traduzione in svedese.

  jzp1218@stud.u-szeged.hu (Zoltan Vamosi): traduzione in ungherese.

  bart@mat.uni.torun.pl (Bartosz Maruszewski): traduzione in polacco.

  donahue@tiber.nist.gov (Michael J Donahue): errori di battitura,
  vincitore della "sliced bread competition".

  rms@gnu.ai.mit.edu (Richard Stallman): concetti/notizie di
  distribuzione sulla documentazione "libera".

  dak@Pool.Informatik.RWTH-Aachen.DE (David Kastrup): cose sull'NFS.

  esr@snark.thyrsus.com (Eric Raymond): diverse notizie piccanti.


  Anche la gente che mi ha spedito mail con domande e problemi mi 
  stata abbastanza utile.



  13.4.  Questioni legali (in inglese)


  Copyright  Brian Ward, 1994-1999.

  Permission is granted to make and distribute copies of this manual
  provided the copyright notice and this permission notice are preserved
  on all copies.


  Permission is granted to copy and distribute modified versions of this
  manual under the conditions for verbatim copying, provided that the
  derived work is distributed under the terms of a permission notice
  identical to this one. Translations fall under the catagory of
  "modified versions."
  Warranty: None.


  Recommendations: Commercial redistribution is allowed and encouraged;
  however, it is strongly recommended that the redistributor contact the
  author before the redistribution, in the interest of keeping things
  up-to-date (you could send me a copy of the thing you're making while
  you're at it). Translators are also advised to contact the author
  before translating. The printed version looks nicer. Recycle.



  14.  Altri formati di questo documento

  Questa sezione  stata scritta da Al Dev (al sito
  <http://www.milkywaygalaxy.freeservers.com> mirror su angelfire
  <http://www.angelfire.com/country/aldev0>, geocities
  <http://www.geocities.com/alavoor/index.html>, virtualave
  <http://aldev0.virtualave.net>, Fortunecity
  <http://members.fortunecity.com/aldev>, Freewebsites
  <http://aldev.freewebsites.com>, Tripod
  <http://members.tripod.lycos.com/aldev>, 101xs
  <http://www.101xs.com/101xs/aldev>, 50megs <http://aldev0.50megs.com>
  )

  Questo documento  pubblicato in 14 differenti formati, precisamente:
  DVI, PostScript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML,
  RTF(Rich Text Format), puro testo, pagine di man Unix, singolo file
  HTML, SGML (formato linuxdoc), SGML (formato Docbook), formato help di
  MS WinHelp.

  Questo documento si trova anche sul sito

    <http://www.linuxdoc.org>: fate clic su HOWTO e cercate il nome di
     questo howto utilizzando CTRL+f o ALT+f all'interno della pagina
     web.

  Il documento  ospitato anche sui seguenti siti mirror:

    <http://www.caldera.com/LDP/HOWTO>

    <http://www.linux.ucla.edu/LDP>

    <http://www.cc.gatech.edu/linux/LDP>

    <http://www.redhat.com/mirrors/LDP>

    Per trovare i siti mirror pi vicini (sulla base dell'indirizzo) ci
     si colleghi all'URL  <http://www.linuxdoc.org/mirrors.html>: se ne
     scelga uno e si cerchi nella directory /LDP/HOWTO/xxxxx-HOWTO.html



    Si pu recuperare questo HOWTO come un unico archivio tar nel
     formato HTML, DVI, PostScript o SGML da
     <ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO/other-formats/> e
     <http://www.linuxdoc.org/docs.html#howto>


    Puro testo su  <ftp://www.linuxdoc.org/pub/Linux/docs/\HOWTO> e
     <http://www.linuxdoc.org/docs.html#howto>


    Il singolo file in formato HTML  su
     <http://www.linuxdoc.org/docs.html#howto>
     Il singolo file HTML pu essere creato con il seguente comando
     (vedete "man sgml2html"): sgml2html -split 0   xxxxhowto.sgml

    La traduzione in altri linguaggi come francese, tedesco, spagnolo,
     cinese, giapponese sono su
     <ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO> e
     <http://www.linuxdoc.org/docs.html#howto>.  Qualsiasi aiuto per
     tradurre in altre lingue  ben accetto.

     Il documento  stato scritto utilizzando uno strumento chiamato
     "SGML-Tools" che pu essere prelevato da
     <http://www.sgmltools.org>.  Compilando il sorgente, troverete i
     seguenti comandi:

    sgml2html xxxxhowto.sgml     (per generare file HTML)

    sgml2html -split 0   xxxxhowto.sgml (per generare una singola
     pagina HTML)

    sgml2rtf  xxxxhowto.sgml     (per generare file RTF)

    sgml2latex xxxxhowto.sgml    (per generare file LaTeX)

  14.1.  Formato Acrobat PDF

  Il file PDF pu essere generato dal file PostScript utilizzando
  Acrobat distill oppure Ghostscript.  Il file PostScript  stato
  generato dal DVI il quale  stato generato dal file LaTeX.  Si pu
  scaricare il software da  <http://www.adobe.com>. Segue una sessione
  di esempio:

  ______________________________________________________________________
  bash$ man sgml2latex
  bash$ sgml2latex filename.sgml
  bash$ man dvips
  bash$ dvips -o filename.ps filename.dvi
  bash$ distill filename.ps
  bash$ man ghostscript
  bash$ man ps2pdf
  bash$ ps2pdf input.ps output.pdf
  bash$ acroread output.pdf &
  ______________________________________________________________________


  Oppure potete usare il comando Ghostscript ps2pdf.  ps2pdf  un buon
  sostituto di Adobe Acrobat Distiller per quasi tutte le funzionalit
  del prodotto Adobe Acrobat Distiller: converte file PostScript in file
  Portable Document Format (PDF).  ps2pdf  implementato come un comando
  di script molto piccolo (file batch) che invoca Ghostscript, selezio
  nando uno speciale "dispositivo di uscita" chiamato pdfwrite.  Allo
  scopo di utilizzare ps2pdf, il dispositivo pdfwrite deve essere
  incluso nel makefile quando Ghostscript viene compilato; per i det
  tagli vedete la documentazione sulla compilazione di Ghostscript.

  14.2.  Convertire Linuxdoc nel formato Docbook

  Questo documento  stato scritto nel formato SGML linuxdoc. Il formato
  SGML Docbook ha pi funzionalit del formato linuxdoc, mentre il
  formato linuxdoc  molto pi semplice da usare. Per convertire il file
  in formato linuxdoc SGML nel formato Docbook s'utilizzi il programma
  ld2db.sh e alcuni script in Perl. L'uscita di ld2db non  al 100%
  chiara ed  necessario usare lo script perl clean_ld2db.pl. Si
  potrebbe dover modificare manualmente alcune righe del documento.

    Si scarichi il programma ld2db da
     <http://www.dcs.gla.ac.uk/~rrt/docbook.html> o da Al Dev site
     <http://www.aldev.8m.com/cppsrc.html>

    Si scarichi lo script Perl cleanup_ld2db.pl da Al Dev site
     <http://www.aldev.8m.com/cppsrc.html>

     L'ld2db.sh non  molto pulito, dar molti errori eseguendolo

     ___________________________________________________________________
             bash$ ld2db.sh file-linuxdoc.sgml db.sgml
             bash$ cleanup.pl db.sgml > db_clean.sgml
             bash$ gvim db_clean.sgml
             bash$ docbook2html db.sgml
     ___________________________________________________________________


  Si potrebbe dover correggere manualmente alcuni degli errori meno
  gravi dopo l'esecuzione dello script Perl. Per esempio si potrebbe
  aver bisogno di chiudere dei tag < /Para> per ogni < Listitem>

  14.3.  Convertire nel formato MS WinHelp

  Si pu convertire il documento HOWTO dal formato SGML al file
  Microsoft Windows Help. Prima si converta il SGML in HTML usando:

  ______________________________________________________________________
          bash$ sgml2html xxxxhowto.sgml     (per generare pi file HTML)
          bash$ sgml2html -split 0   xxxxhowto.sgml (per generare un singolo file HTML)
  ______________________________________________________________________


  Poi si utilizzi HtmlToHlp <http://javadocs.planetmi\rror.com/html
  tohlpe.html>.  Si pu anche usare sgml2rtf e poi dai file RTF generare
  i file WinHelp.

  14.4.  Leggere diversi formati

  Per vedere il documento nel formato DVI, si usi il programma xdvi. Il
  programma xdvi  situato nel pacchetto tetex-xdvi*.rpm di Linux Redhat
  che pu essere localizzato attraverso i pulsanti di men ControlPanel
  | Applications | Publishing | TeX.  Per leggere il documento DVI, si
  dia:


               xdvi -geometry 80x90 howto.dvi
               man xdvi



  e si ridimensioni la finestra con il mouse. Per navigare si usino i
  tasti freccia, i tasti Pagina Su, Pagina Gi, volendo anche i tasti
  delle lettere "f", "d", "u", "c", "l", "r", "p", "n" per muoversi su,
  gi, in centro, pagina seguente, pagina precedente, ecc. Per chiudere
  il men premere "x".

  Si pu leggere il file PostScript usando il programma "gv" (ghostview)
  o "ghostscript".  Il programma ghostscript si trova nel pacchetto
  gv*.rpm in Redhat Linux, che pu essere localizzato attraverso i
  pulsanti del men ControlPanel | Applications | Graphics. Il programma
  gv  molto pi intuitivo di ghostscript. Ghostscript e gv sono anche
  disponibili per altre piattaforme come OS/2, Windows 95 e NT.


    Ghostscript per Windows 95, OS/2 e per altri sistemi si trova
     presso <http://www.cs.wisc.edu/~ghost>.

  Per leggere il documento PostScript si dia:


                       gv howto.ps
                       ghostscript howto.ps



  Si pu leggere il documento in formato HTML usando Netscape Navigator,
  Microsoft Internet Explorer, Redhat Baron Web browser o uno qualsiasi
  degli altri dieci browser web.

  Si pu leggere l'output LaTeX, utilizzando LyX, un'interfaccia X
  Window per LaTeX.



