  Lilo mini-Howto
  Cameron Spitzer (cls@truffula.sj.ca.us), Alessandro Rubini
  (rubini@linux.it).
  v2.0, Nov 1997

  Questo documento descrive alcune tipiche installazioni di Lilo.  Il
  suo ruolo  quello di integrare la guida dell'utente di Lilo con delle
  informazioni pi pratiche; credo che questi esempi siano abbastanza
  informativi anche se la vostra situazione non  molto simile alla mia.
  Spero che questo documento vi eviti di avere problemi. Siccome la doc
  umentazione di Lilo  molto ben fatta, chi  interessato ai dettagli 
  invitato a leggere in /usr/doc/lilo*.  Questo documento  stato
  tradotto da Alessandro Rubini, nel novembre 1997.

  1.  Introduzione

  Nonostante la documentazione distribuita con i sorgenti di Lilo sia ad
  ampio spettro (mi riferisco qui ai file che trovate anche sotto
  /usr/doc/lilo-versione sulla vostra macchina Linux), la maggior parte
  degli utenti Linux trovano qualche difficolt durante la costruzione
  del proprio file /etc/lilo.conf.  Questo documento  volto ad aiutare
  queste persone fornendo l'informazione minimale che serve per scrivere
  un file di configurazione e fornendo cinque installazioni
  esemplificative:

    Il primo esempio  la classica installazione ``Linux e un altro
     sistema''.

    L'esempio seguente mostra come si possa installare Linux su un
     disco collegato come /dev/hdc facendo in modo che tutto funzioni
     correttamente quando il disco viene collegato come /dev/hda e viene
     usato per il boot. Questo tipo di configurazione  quella che serve
     usare quando si installa un nuovo sistema Linux dall'interno del
     proprio sistema gi funzionante.

    Il terzo caso presentato mostra come accendere un sistema Linux la
     cui partizione root non viene vista dal BIOS della macchina.

    Il successivo esempio viene usato per accedere a dischi molto
     grossi, che n il BIOS n il DOS possono vedere con facilit
     (questo esempio  ormai obsoleto, in quanto tutti i BIOS recenti
     riescono a gestire i dischi grossi).

    L'ultimo esempio mostra come recuperare un disco danneggiato (il
     danno in questo caso consiste nell'installazione di un altro
     sistema operativo).

  Gli ultimi tre esempi sono stati forniti da Cameron Spitzer,
  cls@truffula.sj.ca.us, che ha scritto le prime versioni di questo
  documento. Il manutentore attuale usa solo Linux sulle sue macchine, e
  non  quindi in grado di controllare n di aggiornare gli esempi
  forniti. Sentitevi liberi di mandare il vostro contributo a questo
  documento, preferibilmente mandandomi un messaggio di posta elettrica.

  2.  Informazione di base e installazione tipica

  Quando Lilo avvia il sistema  in grado di accedere solo ai settori
  del disco che possono essere letti dal BIOS della macchina. Tutti i
  pathname che vengono inseriti in /etc/lilo.conf vengono utilizzati
  durante l'installazione del programma (cio quando si invoca il
  comando lilo);  questo in fatti il momento in cui il programma
  costruisce le sue tabelle che elencano i settori del disco fisicamente
  utilizzati da ciascun file. Una conseguenza di questo  che i file
  devono per forza risiedere in una partizione che pu essere vista dal
  BIOS; inoltre, bisogna reinstallare Lilo ogni volta che questi file
  vengono modificati (in altre parole, occorre reinvocare il comando
  lilo tutte le volte che si sostituisce un'immagine del kernel).

  2.1.  Dove devo installare Lilo?

  All'interno di /etc/lilo.conf, la direttiva boot = dice a Lilo dove
  installare il loader primario, quello che viene eseguito dal BIOS
  all'accensione della macchina. Come regola generale, questo codice pu
  essere installato nel ``master boot sector'' (cio in /dev/hda) oppure
  nella partizione root dell'installazione Linux (di solito /dev/hda1 o
  /dev/hda2).

  Se il proprio disco contiene un altro sistema operativo oltre a Linux,
  conviene installare Lilo sulla partizione root. In questo caso occorre
  marcare la partizione come ``bootable'' (usando il comando ``a'' di
  fdisk o il comando ``b'' di cfdisk. Se il master boot sector non viene
  sovrascritto risulter pi facile la disinstallazione di Linux, se ne
  sorger il bisogno.

  2.2.  Come devo configurare i miei dischi IDE?

  Personalmente nel mio BIOS preferisco non specificare n LBA n LARGE
  per i miei dischi; ma ricorate che io uso solo Linux. Questi due modi
  di accesso sono degli accrocchi orribili, inventati solamente come
  pezza a fronte di alcune deficienze progettuali del primi PC.
  Specificare i propri dischi come NORMAL vuol dire che il proprio
  kernel deve stare all'interno dei primi 1024 cilindri del disco, ma
  questo non  un problema se il disco  correttamente partizionato e se
  la partizione di root  piccola (questa  una buona norma in ogni
  caso, indipendentemente da Lilo).

  Se il disco invece contiene gi un altro sistema operativo, non si
  potranno modificare i settaggi del BIOS o il vecchio sistema non
  funzioner pi. Tutte le distribuzioni recenti di Linux, comunque,
  sono in grado di gestire dischi configurati come LBA o LARGE.

  Se si ha pi di un disco rigido e alcuni di essi sono usati solo da
  Linux senza far parte del processo di avvio del sistema, si pu
  evitare di dire al BIOS che questi dischi esistono. Il sistema si
  avvier pi velocemente e Linux riconoscer automaticamente e
  velocemente tutti i dischi. A me capita spesso di aggiungere e
  togliere dischi dal mio sistema, ma non cambio mai la configurazione
  del BIOS.

  2.3.  Come posso interagire durante il boot?

  Quando appare il prompt di Lilo, premendo il tasto <Tab> si ottiene la
  lista di tutte le possibilit di boot offerte da Lilo.  Se Lilo non 
  configurato per interagire con l'utente si pu comunque renderlo
  interattivo premendo il tasto <Alt> o il tasto <Shift> prima che
  appaia il messaggio ``LILO'', e tenendo premuto tale tasto.

  Se al prompt di Lilo si sceglie un'immagine di kernel Linux 
  possibile passare dei parametri di linea di comando al kernel stesso.
  Il kernel Linux riconosce molti parametri, e non credo che questo sia
  il luogo in cui elencarli tutti. Alcuni di questi parametri, d'altra
  parte, secondo me sono particolarmente importanti:

    root=: si pu dire al kernel di usare come partizione di root una
     partizione diversa da quella che appare nel file lilo.conf. Per
     esempio, io ho dedicato una piccola partizione ad ospitare una
     installazione minimale di Linux; grazie a questa sono stato in
     grado di accendere il mio calcolatore anche dopo aver distrutto per
     sbaglio la partizione di root (questi danni comunque succedono solo
     se si smanetta con le strutture interne del kernel).

    init=: la versione 1.3.43 e tutte le successive possono ricevere
     dalla linea di comando il pathname di un programma da eseguire al
     posto di /sbin/init. Se il sistema si blocca durante il processo di
     boot a causa di un errore negli script di accensione  ancora
     possibile accedere al sistema specificando init=/bin/sh al prompt
     di Lilo. Dopo aver acceso il sistema in questo modo probabilmente
     occorrer accedere ai propri dischi, che saranno inaccessibili; per
     questo occorre invocare ``/sbin/mount -w -n -o remount /; mount
     -a'', e ricordarsi di chiamare ``/sbin/umount -a'' prima di
     spegnere il calcolatore.

    Un numero: se si specifica un numero sulla linea di comando, il
     programma init selezioner il ``runlevel'' specificato invece di
     quello predefinito (di solito il 3). Per saperne di pi consiglio
     di riferirsi alla documentazione di init, al file /etc/inittab e ai
     vari file che si trovano in /etc/rc.d.

  2.4.  Come posso disinstallare Lilo?

  Quando Lilo sovrascrive un settore di boot, una copia del settore
  viene salvata in /boot/boot.xxyy, dove xxyy sono i due numeri che
  rappresentano la periferica, scritti in esadecimale. Si possono vedere
  questi due numeri, chiamati ``major number'' e ``minor number''
  chiamando ``ls -l /dev/device''. Per esempio, il primo settore del
  disco /dev/hda (che ha 3 e 0 come numeri di periferica) verr salvato
  in /boot/boot.0300; se si installa lilo su /dev/fd0 il file si
  chiamer /boot/boot.0200, se si installa su /dev/sdb3 (con major
  number 8 e minor 19) il file si chiamer /boot/boot.0813.  Si noti che
  Lilo non salva il primo settore del disco se il file corrispondente
  esiste gi, quindi non occorre preoccuparsi quando si reinstalla Lilo
  (per esempio dopo aver ricompilato il kernel).

  Se per caso occorre disinstallare Lilo (per esempio nella malaugurata
  ipotesi che si cancelli Linux dal disco) occorre semplicemente
  rimettere al suo posto il settore di boot originale. Se Lilo 
  installato in /dev/hda, basta fare ``cat /boot/boot.0300 > /dev/hda'';
  Questo modo di ripristinare il settore di boot  molto pi sicuro che
  chiamare ``fdisk /mbr'' da una linea di comando DOS. Dopo aver rimosso
  Lilo dal disco occorre anche ricordarsi di far girare il comando fdisk
  di Linux per distruggere tutte le partizioni Linux, in quanto la
  versione DOS del comando non  in grado di cancellare partizioni non-
  dos.

  Se Lilo  stato installato sulla partizione root del sistema Linux,
  (per esempio /dev/hda2), invece, non occorre fare niente di
  particolare per disinstallare Lilo. In questo caso basta far andare il
  programma fdisk di Linux per rimuovere le partizioni Linux dalla
  tabella delle partizioni. Bisogna anche ricordarsi di marcare la
  partizione DOS come partizione ``bootable'' (``attiva'' in gergo DOS).

  3.  La configurazione pi semplice

  La maggior parte delle installazioni di Lilo utilizzano un file di
  configurazione come il seguente:

  boot = /dev/hda   # oppure la partizione root
  delay = 0         # l'attesa si specifica in decimi di secondo
  vga = 0           # opzionale. Si usi "vga=1" per un modo testo 80x50

  image = /boot/vmlinux  # il proprio file zImage
    root = /dev/hda1     # la partizione root
    label = Linux        # o un'altro bel nome
    read-only            # root va montato in sola lettura

  other = /dev/hda4   # la partizione dos, se esiste
    table = /dev/hda  # la tabella delle partizioni attuale
    label = dos       # o un altro stupido nome

  Si possono specificare diverse sezioni ``image'' e ``other'' se serve.
   in effetti abbastanza comune configurare nel proprio lilo.conf
  diverse immagini del kernel, almeno per chi cerca di rimanere
  aggiornato con le versioni di sviluppo del sistema.

  4.  Installare su hdc per avviare come hda

  Lilo permette di creare la mappa dei settori da un disco e allo stesso
  tempo di dire al BIOS di leggere i settori da un altro disco.  Per
  esempio a me capita spesso di installare Linux su un disco collegato
  come hdc (disco principale del secondo cavo IDE), e usare poi tale
  disco come unico disco di un nuovo calcolatore (hda). Ho fatto una
  copia del dischetto di installazione  in una piccola partizione, in
  modo da installare su hdc facendo chroot da un terminale virtuale,
  senza dover smettere di usare il calcolatore.

  Il file lilo.conf che uso in questo caso  fatto cos:

  boot = /dev/hdc   # sovrascrivi il settore di boot di hdc
  disk = /dev/hdc   # e specifica come accedere ad hdc:
     bios = 0x80    #  il BIOS lo vedra' come primo disco
  delay = 0
  vga = 0

  image = /mnt/boot/vmlinux  # /mnt e' al momento /dev/hdc1
    root = /dev/hda1         # ma hdc1 all'accensione sara' hda1
    label = Linux
    read-only

  Questo file di configurazione mescola i riferimenti ad hda con i
  riferimenti ad hdc, perch alcune delle direttive hanno effetto quando
  Lilo viene installato (boot= e disk=), mentre altre hanno effetto
  all'accensione del sistema (root= and bios=). Il codice ``0x80'' 
  usato dal BIOS per riferirsi al primo disco rigido; il secondo disco 
  identificato da ``0x81'' mentre i due floppy rispondono ai nomi
  ``0x00'' e ``0x01''.

  Ho chiamato questo file /etc/lilo.conf.hdc e quando mi serve installo
  Lilo come ``lilo -C /etc/lilo.conf.hdc'' mentre tengo /dev/hdc1
  montato sulla directory /mnt.

  5.  Utilizzo di Lilo quando il BIOS non pu accedere alla partizione
  di root.

  Ho due dischi IDE e un disco SCSI. Il disco SCSI non viene visto dal
  BIOS. Siccome Lilo usa le chiamate al BIOS non pu accedere ai dischi
  che non vengono visti dal BIOS. Il mio stupido AMI-BIOS pu solo
  avviare il sistema da "A:" o da "C:", e la mia partizione di root sta
  sul disco SCSI.

  La soluzione in questo caso consiste nel mettere il kernel, la mappa
  dei settori e il secondo stadio di caricamento di Lilo in una
  partizione Linux nel primo disco IDE. Si noti che non serve mettere il
  kernel nella partizione root.

  La seconda partizione del mio primo disco IDE (/dev/hda2, la
  partizione Linux usata per avviare il sistema)  montata in /u2.
  Questo  il file /etc/lilo.conf che ho usato.

  #  Installa LILO su settore di boot del primo disco IDE
  #
  boot = /dev/hda
  #  /sbin/lilo (l'installatore) copia il loader di Lilo da
  #  questo file sopra al settore di boot.
  install = /u2/etc/lilo/boot.b
  #  Ho scritto un messaggio prolisso in questo file.
  message = /u2/etc/lilo/message
  #  Il comando "lilo" scrive in questo file la mappa dei settori
  #  di disco occupati dal kernel
  map = /u2/etc/lilo/map
  compact
  prompt
  #  Aspetta diecisecondi, poi attiva 1.2.1 per default.
  timeout = 100
  #  Il kernel viene salvato dive il BIOS pu leggerlo in questo modo:
  #      cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1
  image = /u2/z1.2.1
          label = 1.2.1
  #  Lilo dice al kernel di montare la prima partizione SCSI come root.
  #  Non serve che il BIOS sia in grado di accedervi.
          root = /dev/sda1
  #  La partizione  montata in sola lettura
          read-only
  #  Ho tenuto un vecchio kernel Slackware da usare se quello appena
  #  ricompilato non funziona. In effetti una volta questo mi e' servito
  image = /u2/z1.0.9
          label = 1.0.9
          root = /dev/sda1
          read-only
  #  La mia partizione DR-DOS 6
  other = /dev/hda1
          loader=/u2/etc/lilo/chain.b
          label = dos
          alias = m

  6.  Come accedere a dischi grossi che non sono visti dal BIOS

  Il sistema che ho in ufficio ha un disco IDE da 1GB. Il BIOS pu solo
  accedere ai primi 504MB del disco (con MB intendo 2**10 byte, non
  10**6). Perci ho messo il sistema DOS su una partizione da 350MB in
  /dev/hda1 e la partizione root di Linux in 120MB come /dev/hda2.

  Il DOS non  stato in grado di installarsi correttamente quando il
  disco era nuovo. La versione 7 del DOS Novell aveva lo stesso
  problema.  Fortunatamente il servizio "opzioni di IBM" ha dimenticato
  di mettere il dischetto "OnTrack" nella scatola del disco. Il disco
  sarebbe dovuto arrivare con un prodotto chiamato "OnTrack Disk
  Manager". Se avete solo il DOS immagino che lo abbiate usato.
  Allora ho fatto una partizioni con il programma fdisk di Linux.  Il
  DOS 6.2 ha rifiutato di installarsi su /dev/hda1 dicendo qualcosa come
  ``questa versione di MS-DOS  per le nuove installazioni; questo
  computer ha gi il DOS installato quindi serve una versione
  "aggiornamento" al posto di questa''. In effetti, il disco era nuovo
  di zecca.

  Che schifo! Allora ho usato ancora fdisk di Linux e ho cancellato la
  partizione 1 dalla tabella. Questo ha reso felice il mio DOS 6.2 che
  ha ricreato la partizione da me rimossa per potersi installare.  MS-
  DOS 6.2 ha scritto il suo settore di boot sul disco ma non  riuscito
  ad avviarsi.

  Per fortuna avevo un kernel Slackware in un floppy creato dal
  programma di installazione della mia Slackware, per cui ho acceso
  Linux e installato Lilo sopra al settore di boot difettoso del DOS.
  Questo funziona. Ecco il file /etc/lilo.conf che ho usato:

  boot = /dev/hda
  map = /lilo-map
  delay = 100
  ramdisk = 0             # Disattiva il ram-disk
  timeout = 100
  prompt
  disk = /dev/hda         # Il BIOS vede solo 500MB di questo disco
     bios = 0x80          #   che e' il primo disco IDE
     sectors = 63         #   e ha questi parametri (dalla documentazione
     heads = 16           #   del disco stesso)
     cylinders = 2100
  image = /vmlinuz
    append = "hd=2100,16,63"
    root = /dev/hda2
    label = linux
    read-only
    vga = extended
  other = /dev/hda1
    label = msdos
    table = /dev/hda
    loader = /boot/chain.b

  Dopo aver installato questi sistemi ho verificato che la partizione
  contenente i file zImage, boot.b, map, chain.b e message possono usare
  una partizione DOS, basta che non sia compressa con stacker o
  doublespace. Perci in questo caso avrei potuto dare tutti i 500MB
  alla partizione DOS.

  Ho anche imparato successivamente che "OnTrack" avrebbe scritto la
  tabella delle partizioni spostata di alcune decine di byte all'interno
  del disco invece che all'inizio, e ho saputo che  possibile
  modificare il driver IDE di Linux per gestire questa situazione, ma
  l'installazione in questo caso sarebbe stata impossibile con il kernel
  slackware precompilato NDT: ecco un'altro caso in cui i produttori di
  hardware fanno delle porcate immonde per sistemare le mancanze di
  Microsoft). Alla fine la IBM mi ha mandato il dischetto "OnTrack"; ho
  contattato il loro supporto tecnico e mi hanno detto che Linux 
  bacato perch non usa il BIOS. Ho buttato via il dischetto.

  7.  Accensione da un dischetto di salvataggio

  Successivamente ho installato Windows-95 sul calcolatore in ufficio.
  Ovviamente ha bruciato il mio bel settore di boot di Lilo, ma non ha
  toccato la mia partizione Linux. Siccome il BIOS impiega molto tempo a
  caricare il kernel dal dischetto ho creato preventivamente un
  dischetto con Lilo installato in modo da poter caricare il kernel dal
  disco IDE. Il floppy  stato creato cos:

    fdformat /dev/fd0H1440      # scrivi le traccie su disco nuovo
    mkfs -t minix /dev/fd0 1440 # crea il filesystem di tipo minix
    mount /dev/fd0 /mnt         # aggancialo nella directory convenzionale
    cp -p /boot/chain.b /mnt    # copia il loader sul dischetto
    lilo -C /etc/lilo.flop      # installa lilo e la mappa sul floppy
    umount /mnt

  Si noti che il dischetto deve essere montato quando si invoca lilo, in
  modo che Lilo possa scrivere il file con la mappa dei settori del
  kernel.

  Questo  /etc/lilo.flop, ed  molto simile all'ultimo che vi ho fatto
  vedere:

  #  Crea un dischetto che legge i kernel dal disco fisso
  boot = /dev/fd0
  map = /mnt/lilo-map
  delay = 100
  ramdisk = 0
  timeout = 100
  prompt
  disk = /dev/hda     # 1 GB IDE, ma il BIOS vede solo i primi 500 MB.
     bios=0x80
     sectors = 63
     heads = 16
     cylinders = 2100
  image = /vmlinuz
    append = "hd=2100,16,63"
    root = /dev/hda2
    label = linux
    read-only
    vga = extended
  other = /dev/hda1
    label = msdos
    table = /dev/hda
    loader = /mnt/chain.b

  Infine, mi  successo di aver bisogno del DOS 6.2 in ufficio, ma non
  volevo toccare il primo disco IDE. Ho aggiunto un controller e un
  disco SCSI e ho creato un filesystem DOS su questo disco con il
  comando mkdosfs di Linux. Questo disco viene visto come "D:" da
  Windows-95. Naturalemnte il DOS non vuole partide dal disco D, ma
  questo non  un problema quando si ha Lilo.  Ho aggiunto queste righe
  al file lilo.conf del penultimo esempio:

  other = /dev/sda1
    label = d6.2
    table = /dev/sda
    loader = /boot/any_d.b

  Con questa modifica il DOS 6.2 parte e crede di essere sul disco C
  mentre Windows-95 si trova su D  NDT: demenziale!.

