
                                Lilo mini-Howto

Cameron Spitzer (cls@truffula.sj.ca.us), Alessandro Rubini (rubini@linux.it).
Traduction franaise Mathieu Arnold arn@mygale.org

   v2.02, 16 August 1998
     _________________________________________________________________

   _LILO est le Linux Loader (chargeur de Linux) pour le version x86 de
   Linux. Je l'appellerai ici Lilo plutt que LILO car je n'aime pas trop
   les majuscules. Ce fichier dcrit quelques installations typiques de
   Lilo. Le but de ce document est d'tre un supplment au guide de
   l'utilisateur de Lilo. Je pense que des exemples aident  comprendre,
   mme si votre configuration n'est pas vraiment semblable  la mienne.
   J'espre que cela va vous viter des tracas. Comme la documentation de
   Lilo est dj trs bonne, ceux qui sont intresss par les dtails
   iront faire un tour dans /usr/doc/lilo*_
     _________________________________________________________________

1. Introduction

   Bien que la documentation fournie avec les sources de Lilo (celle
   installe dans /usr/doc/lilo-version) soit trs facilement
   comprhensible, la majorit des utilisateurs de Linux rencontrent des
   problmes en faisant leur propre /etc/lilo.conf. Ce document a pour
   but d'aider les utilisateurs en leur donnant un minimum
   d'informations, et en leur montrant cinq exemples d'utilisation :

     * Le premier exemple montre une installation de base : "Linux et les
       autres".
     * La suivante explique comment installer Lilo sur un disque dur
       connect sur /dev/hdc et qui bootera en tant que /dev/hda. C'est
       ce dont on a besoin quand on veux installer un nouveau disque
       Linux sur un systme qui marche dj. Il explique aussi comment
       booter sur un disque SCSI quand votre BIOS est suffisamment
       rcent.
     * Le troisime exemple montre comment booter un systme Linux dont
       la partition root ne peut tre accde par le BIOS.
     * L'exemple suivant est utilis pour accder  de trs gros disques
       auxquels ni le BIOS, ni le DOS ne peuvent accder facilement (cet
       exemple ci est un peu vieux)
     * Le dernier exemple montre comment restaurer un disque endommag,
       si les dommages proviennent de l'installation d'un autre systme
       d'exploitation.

   Les trois derniers exemples sont de Cameron cls@truffula.sj.ca.us, qui
   est  l'origine de ce document. Alessandro rubini@linux.it, le
   mainteneur actuel n'a que Linux, et donc, ne peut pas vrifier ni non
   plus mettre  jour par lui mme. Il n'est pas ncessaire de dire que
   toutes les remarques seront les bienvenues.

2. Informations gnrales et installation standard

   Quand Lilo amorce le systme, il utilise des appels du BIOS pour
   charger le noyau de Linux depuis le disque (disque IDE, disquette, ou
   autre). Par consquent, le noyau doit rsider  un endroit accessible
   par le BIOS.

   Au boot, Lilo ne sais pas lire les donnes des systmes de fichiers,
   et le path que vous avez mis dans /etc/lilo.conf est rsolu 
   l'installation (quand vous avez lanc /sbin/lilo). L'installation est
   le moment o le programme construit les tables qui regroupent les
   secteurs qui sont utiliss pour charger le systme d'exploitation. Par
   consquent, tous les fichiers doivent tre dans un endroit que le BIOS
   peut lire (les fichiers sont gnralement placs dans le rpertoire
   /boot, cela signifie que seule la partition root de votre systme a
   besoin d'tre accessible depuis le BIOS).

   Une autre consquence du fait de se baser sur le BIOS est que vous
   devez rinstaller le chargeur (en relanant _/sbin/lilo_)  chaque
   fois que vous modifiez la configuration de Lilo. Lorsque vous
   recompilez le noyau et que vous remplacez votre image, vous devez
   rinstaller Lilo.

2.1 O dois-je installer Lilo ?

   La directive boot= de /etc/lilo.conf dit  Lilo o il doit placer son
   amorceur primaire. En gnral, vous spcifirez soit le Master Boot
   Record (MBR) (/dev/hda) soit la partition de root de Linux (par
   exemple /dev/hda1 ou /dev/hda2).

   Si vous avez un autre systme d'exploitation install sur votre
   disque, vous feriez mieux d'installer Lilo sur votre partition de boot
   plutt que sur le MBR. Dans ce cas, vous devez rendre la partition
   "bootable" en utilisant la commande "a" de _fdisk_ ou la commande "b"
   de _cfdisk_. Si vous n'crivez pas sur le MBR, il sera plus simple de
   dsinstaller Linux et Lilo si ncessaire.

2.2 Comment dois-je configurer mes disques IDE ?

   Pour ma part je n'utilise pas les options LBA ou LARGE du BIOS (mais
   il faut dire que je n'utilise que Linux sur ma machine); ce sont des
   monstruosits qui nous sont imposes par les lacunes de l'architecture
   intel x86. Ceci implique que le noyau doit rsider dans les 1024
   premiers cylindres, mais cela n'est pas un problme vu que vous avez
   partitionn votre disque et que votre partition de root est sense
   tre petite (en tous cas, c'est comme a que cela devrais tre).

   Si votre disque a un autre systme d'exploitation, vous ne devez pas
   modifier les paramtres du BIOS, sinon, l'ancien systme ne
   fonctionnera plus du tout. Toutes les distributions rcentes de Lilo
   savent quoi faire des rglages LBA et LARGE.

   Notez que le mot-cl "linear" dans le /etc/lilo.conf peut vous tre
   utile si vous avez des problmes de gomtrie. Il indique  Lilo que
   l'adressage des secteurs doit se faire linairement plutt qu'avec le
   triplet secteurs/ttes/cylindres. La conversion des adresses 3D est
   reporte  l'excution, par consquent, rendant la configuration
   immunise contre les problmes de gomtrie.

   Si vous avez plusieurs disques et que certains qui ne sont utiliss
   que par Linux ne sont pas ncessaires durant le boot, vous pouvez les
   enlever de votre BIOS, votre systme dmarrera plus rapidement et
   Linux dtectera tous les disques. Je change souvent les disques de mon
   ordinateur, mais je ne touche jamais au BIOS.

2.3 Comment puis-je interagir au boot ?

   Quand vous voyez le prompt Lilo, vous pouvez taper sur la touche <Tab>
   pour voir les diffrents choix possible. Si Lilo n'est pas configur
   pour tre interactif, gardez la touche <Tab> ou <Shift> presse avant
   que le message "LILO" n'apparaisse.

   Si vous choisissez de booter sur un noyau Linux, vous pouvez ajouter
   des arguments aprs le nom du systme que vous choisissez. Le noyau
   accepte de nombreux arguments. Tous les arguments sont lists dans le
   "BootPrompt-HOWTO" de Paul Gortmaker, et je ne vais pas le reproduire
   ici. Quelques arguments sont, par ailleurs, trs importants et se
   doivent de figurer ici :

     * root= : vous pouvez dire au noyau de monter une partition root
       diffrente de celle qui se trouve dans le lilo.conf. Par exemple,
       mon systme a une toute petite partition qui a un systme Linux
       minimal, et j'ai russi  booter aprs avoir dtruit ma partition
       root par erreur.
     * init= : depuis la version 1.3.43 du noyau, vous pouvez utiliser
       une commande autre que /sbin/init. si vous avez de graves
       problmes durant le dmarrage, vous pouvez accder  un systme
       minimal en spcifiant init=/bin/sh (quand vous arriverez au prompt
       du shell, vous aurez certainement besoin de vos partitions,
       essayez "mount -w -n -o remount /; mount -a", et n'oubliez pas de
       faire un "umount -a" avant d'teindre).
     * Un nombre : en spcifiant un nombre sur la ligne de commande, vous
       demandez a _init_ de dmarrer dans un run-level spcifique (le
       run-level par dfaut est gnralement 3 ou 2 suivant la
       distribution que vous avez). Rferez-vous  la documentation
       d'_init_,  votre /etc/inittab et  vos /etc/rc*.d si vous voulez
       creuser plus loin.

2.4 Comment dsinstaller Lilo ?

   Quand Lilo crit sur un secteur de boot, il en sauve une copie dans
   /boot/boot._xxyy_, ou _xxyy_ sont les nombres majeurs et mineurs du
   priphrique. Vous pouvez voir les nombres majeurs et mineurs de votre
   disque ou partition en lanant "ls -l /dev/_device_". Par exemple le
   premier secteur de /dev/hda (majeur 3, mineur 0) sera sauv dans
   /boot/boot.0300, en installant Lilo sur /dev/fd0 on aura un fichier
   /boot/boot.0200 et sur /dev/sdb3 crera /boot/boot.0813. Notez que
   Lilo ne crera pas le fichier s'il existe dj, vous n'aurez donc pas
    faire une sauvegarde quand vous rinstallerez Lilo (aprs avoir
   recompil votre noyau par exemple). Les copies de /boot/ sont toujours
   les sauvegardes d'avant la premire installation de Lilo.

   Si jamais vous avez besoin de dsinstaller Lilo (par exemple, dans le
   cas o vous auriez malheureusement  dsinstaller Linux), vous aurez
   besoin de restaurer le secteur de boot original. Si Lilo est install
   sur /dev/hda, faites "dd if=/boot/boot.0300 of=/dev/hda bs=446
   count=1" (personnellement, je fais simplement "cat /boot/boot.0300 >
   /dev/hda", mais ce n'est pas toujours fiable, car cela restaurera la
   table des partitions, que vous avez peut tre modifi depuis). Cette
   commande est bien plus simple que d'essayer de lancer "fdisk /mbr"
   depuis la ligne de commande DOS : elle vous permet de supprimer Linux
   d'un disque  partir de Linux. Aprs avoir supprim Lilo, n'oubliez
   pas de supprimer la partition Linux avec _fdisk_ (le _fdisk_ du DOS
   est incapable de supprimer les partitions non-dos).

   Si vous avez install Lilo sur votre partition de root (par exemple
   /dev/hda2), vous n'avez rien de spcial  faire pour supprimer Lilo,
   lancez juste le _fdisk_ de Linux pour supprimer la partition. Vous
   aurez aussi  marquer la partition DOS bootable.

3. La configuration simple

   La majorit des installations Lilo utilisent un fichier de
   configuration tel celui ci :

boot = /dev/hda   # ou la partition root
delay = 10        # dlai, en diximes de secondes
vga = 0           # optionnel, utilisez "vga=1" pour avoir du 80x50
#linear           # essayez a si vous avez des problmes de gomtrie

image = /boot/vmlinux  # votre zImage
  root = /dev/hda1     # votre partition root
  label = Linux        # ou un nom rigolo
  read-only            # monter la root en lecture seule

other = /dev/hda4   # votre partition DOS, si y'en a une
  table = /dev/hda  # La table de partition courante
  label = dos       # ou un nom triste

   Vous pouvez avoir plusieurs sections "images" et "other" si vous
   voulez. Il est trs frquent de rencontrer de multiples images de
   noyau dans votre _lilo.conf_, au moins si vous restez  jour dans le
   dveloppement du noyau.

3.1 Comment s'en sortir avec les gros noyaux

   Si vous compilez un noyau "zImage" et qu'il est trop gros pour rentrer
   dans un demi mgaoctet (ce qui est frquent avec les noyaux 2.1), vous
   aurez  compiler un "big zImage"  la place : "make bzImage". Pour
   booter avec un gros noyau, vous n'aurez pas besoin de faire quoi que
   ce soit si votre version de Lilo est suprieure  18. Si votre
   installation est plus ancienne, vous aurez  mettre  jour votre
   paquetage Lilo.

3.2 autres sources d'informations

   En addition aux documentations de Lilo, il y a un trs grand nombre de
   Mini-HowTo qui peuvent vous tre utiles. Ils sont tous appels
   "Linux+_nulOS_", pour quelques _nulOS_, ils parlent aussi de comment
   faire coexister Linux et des autres OS. De mme, le
   "Multiboot-with-LILO" dcrit comment les diffrentes versions de
   Windows coexistent avec Linux.

4. Configurons hdc pour booter en tant que hda en utilisant bios=

   Lilo permet de mapper l'image du noyau sur un disque et de dire au
   BIOS d'aller la chercher sur un autre disque. Par exemple, j'ai
   l'habitude d'installer Linux sur un disque connect sur hdc (disque
   matre du second contrleur IDE) et d'y booter comme systme unique
   sur le contrleur primaire d'un autre ordinateur. J'ai copi la
   disquette d'installations sur une petite partition, je peut donc faire
   un _chroot_ depuis une console virtuelle pour installer hdc quand
   j'utilise le systme pour faire autre chose.

   Voil le lilo.conf que j'utilise pour installer Lilo :

# Ce fichier doit tre utilis sur un systme fonctionnant  partir
# de /dev/hdc
boot = /dev/hdc   # on rcrit le MBR d'hdc
disk = /dev/hdc   # On lui dit qui sera hdc
   bios = 0x80    # Et le BIOS la verra en tant que premier disque
delay = 0
vga = 0

image = /boot/vmlinux  # c'est sur /dev/hdc1
  root = /dev/hda1     # Mais au boot, a sera hda1
  label = Linux
  read-only

   Ce fichier de configuration doit tre lu par Lilo _depuis /dev/hdc1_.
   La table de Lilo qui est crite sur le secteur de boot (/dev/hdc) doit
   se rfrer  un fichier dans /boot/ (en ce moment hdc). Ce fichier
   sera accd en tant que hda quand il bootera comme seul systme.

   J'ai appel ce fichier /mnt/etc/lilo.conf.hdc (/mnt est l'endroit o
   hdc est mont durant l'installation. J'installe Lilo en lanant "cd
   /mnt; chroot . sbin/lilo -C /etc/lilo.conf.hdc". Allez lire la page
   man de _chroot_ si vous trouvez a magique.

   Le "bios=" du lilo.conf est utilis pour dire  Lilo ce que le BIOS
   pense de vos priphriques. Le BIOS identifie les lecteurs de
   disquettes et les disques durs par des numros : 0x00 et 0x01
   slectionnent les disquettes, 0x80 et suivants, les disques durs (Les
   vieux BIOS ne peuvent accder qu' deux disques). La signification du
   "bios = 0x80" dans l'exemple prcdent est de dire  Lilo "utilise
   0x80 dans tes appels BIOS pour /dev/hdc".

   Cette directive Lilo peut tre trs pratique dans d'autres situations,
   par exemple, quand votre BIOS est capable de booter depuis un disque
   SCSI  la place d'un disque IDE. Quand des priphriques IDE et SCSI
   sont prsents, LILO ne sait pas  qui appartient 0x80, car
   l'utilisateur est capable de le changer depuis les menus du BIOS, et
   le BIOS ne peut pas tre accd quand Linux est lanc.

   Par dfaut, Lilo suppose que les disques IDE sont mapps en premier
   par le BIOS, mais il est possible de lui spcifier le contraire en
   utilisant ces instructions dans /etc/lilo.conf :

disk = /dev/sda
  bios = 0x80

5. Utilisation de Lilo quand le BIOS ne voit pas la partition root

   J'ai deux disques IDE, et un disque SCSI. Le disque SCSI ne peut pas
   tre vu par le BIOS. Lilo utilise des appels BIOS, et peut uniquement
   voir ce que le BIOS voit. Mon stupide AMI BIOS ne peut booter que sur
   "A:" ou "C:", or ma partition de root se trouve sur le disque SCSI.

   La solution consiste en fait  stocker le noyau, la carte, et la
   chane d'amorage sur une partition Linux sur le premier disque IDE.
   Remarquez qu'il n'est pas ncessaire de garder le noyau sur la
   partition root.

   La deuxime partition de mon premier disque IDE (/dev/hda2, la
   partition Linux utilise pour booter sur le systme) est monte sur
   /u2. Et voici le /etc/lilo.conf que j'utilise.

#  On installe Lilo sur le MBR du premier disque IDE
#
boot = /dev/hda
#  /sbin/lilo (l'installateur) copie le boot record de Lilo
#  depuis le fichier suivant vers le MBR
install = /u2/etc/lilo/boot.b
#
#  J'ai crit un menu dtaill. Lilo le trouvera l
message = /u2/etc/lilo/message
#  L'installateur construira le fichier suivant. Il dit 
#  l'amorceur ou sont les blocs ou se trouvent les noyaux
map = /u2/etc/lilo/map
compact
prompt
#  on attende 10 seconds, puis on boot sur le noyau 1.2.1 par dfaut.
timeout = 100
#  Le noyau est stock ou le BIOS peut le trouver en faisant a :
#      cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1
image = /u2/z1.2.1
        label = 1.2.1
#  Lilo dit au noyau de monter la premire partition SCSI en tant que
#  root. Le BIOS n'a pas  savoir qu'elle existe.
        root = /dev/sda1
#  Cette partition sera vrifie puis remonte par /etc/rc.d/rc.S
        read-only
#  J'ai un noyau d'une vielle Slackware qui trane dans un coin au cas
#  ou j'ai un noyau qui ne marche pas. J'en ai dj eu besoin une fois
image = /u2/z1.0.9
        label = 1.0.9
        root = /dev/sda1
        read-only
#  Ma partition DR-DOS 6
other = /dev/hda1
        loader=/u2/etc/lilo/chain.b
        label = dos
        alias = m

6. Accder a de gros disques quand le BIOS n'en est pas capable

   A mon travail, ma machine  un disque IDE de 1 Go. Le BIOS ne peut en
   voir que les premiers 504 Mo (o Mo signifie 2^10 octets, pas 10^6
   octets). Donc, J'ai MS-DOS sur une partition de 350 Mo /dev/hda1 et ma
   partition root Linux sur une partition de 120 Mo /dev/hda2.

   MS-DOS tait incapable de s'installer correctement quand le disque
   tait tout neuf. Novell DOS 7 pareil. Le disque tait suppos arriver
   avec un disque appel "OnTrack Disk Manager". Malheureusement pour
   moi, suite  un oubli de la part d'IBM je n'avais pas la disquette
   avec "OnTrack" avec le disque. Si vous n'avez que MS-DOS, je vous
   souhaite d'en disposer.

   Donc, j'ai bti une table de partition avec le _fdisk_ de Linux.
   MS-DOS-6.2 a refus de s'installer dans /dev/hda1, prtextant quelque
   chose du genre :

     "Cette version de MS-DOS est ddie aux nouvelles installations.
     MS-DOS est dj install sur votre ordinateur (_ce qui tait faux :
     disque neuf_) donc, vous avez besoin d'obtenir une version de mise
      jour chez votre vendeur."

   Quel ignare ! Donc, je relance le _fdisk_ Linux et dtruis la premire
   partition de la table. Cela convient  MS-DOS 6.2 qui peut alors crer
   la mme partition que celle que je viens de dtruire et s'installer.
   MS-DOS 6.2 crit alors dans le secteur de lancement du disque, mais
   impossible de dmarrer.

   Par chance, j'avais un noyau de la Slackware sur disquette (ralis
   par le programme setup d'installation), et j'ai donc lanc Linux puis
   cras le secteur de dmarrage par celui de Lilo... et tout marche !

   Voici le fichier /etc/lilo.conf utilis :

boot = /dev/hda
map = /lilo-map
delay = 100
ramdisk = 0             # Ne cre pas le disque virtuel du noyau Slackware
timeout = 100
prompt

disk = /dev/hda         # le BIOS ne voit que les 500 premiers Mo.
   bios = 0x80          # indique le premier IDE.
   sectors = 63         # prendre ces chiffres dans la documentation du disque
   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 = /boot/chain.b

   Aprs avoir install ces systmes, j'ai vrifi que les partitions
   contenant les fichiers zImage, boot.b, map, chain.b, et messages
   peuvent utiliser le systme de fichiers MS-DOS, tant que ni Stacker,
   ni Doublespace ne sont installs. Donc, j'aurais pu faire une
   partition DOS sur /dev/hda1 de 500 Mo.

   J'ai galement appris que _OnTrack_ aurait crit une table de
   partitions commenant  quelques douzaines d'octets sur le disque au
   lieu de l'crire au dbut. Il est possible de modifier le gestionnaire
   de priphrique IDE de Linux pour contourner ce problme. Mais
   l'installation aurait t impossible avec le noyau prcompil de la
   Slackware. En fin de compte, IBM m'a envoy une disquette _OnTrack_.
   J'ai alors tlphon au support technique de _OnTrack_. Ils m'ont dit
   que Linux tait bogg car il n'utilisait pas le BIOS. J'ai renvoy la
   disquette.

7. Dmarrage depuis une disquette de secours

   Ensuite, j'ai install Windows-95 sur mon ordinateur au bureau. Il a
   dtruit mon joli secteur de dmarrage LILO, mais n'a pas touch  mes
   partitions Linux. Les noyaux sont trs lents  charger  partir des
   lecteurs de disquettes. J'ai donc fait une disquette avec un fichier
   de configuration pour LILO qui me permet de lancer le noyau se
   trouvant sur le disque IDE. J'ai fait la disquette de cette manire :

   fdformat /dev/fd0H1440  : formatage de la disquette vierge
   mkfs /dev/fd0 1440      : disquette au format Minix
   mkdir /3                : montage
   mount /dev/fd0 /3
   cp -p /boot/chain.b /3  : copie du chargeur
   lilo -C /etc/lilo.flop  : installation de LILO
   umount /3

   Notez que la disquette DOIT TRE MONTE LORSQUE VOUS LANCEZ
   L'INSTALLATION pour que LILO puisse crire proprement le fichier de
   configuration.

   Ce fichier est /etc/lilo.flop, il ressemble  celui-ci :

#  Cre une disquette qui puisse lancer des noyaux sur disque dur
boot = /dev/fd0
map = /3/lilo-map
delay = 100
ramdisk = 0
timeout = 100
prompt

disk = /dev/hda        # 1 Go IDE, BIOS ne voit que les premiers 500 Mo.
   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 = /3/chain.b

   Enfin, j'avais besoin de MS-DOS 6.2 sur mon ordinateur du bureau, mais
   je ne voulais pas toucher au premier disque. J'ai donc ajout un
   contrleur SCSI et un disque, cr une partition au format MS-DOS avec
   le programme mkdosfs de Linux, et Windows-95 l'a reconnu comme disque
   "D:". Mais, bien sr, MS-DOS ne dmarrera pas sur "D:". Ce n'est pas
   un problme avec LILO. J'ai ajout :

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

   au fichier lilo.conf de tout  l'heure. MS-DOS-6.2 fonctionne en
   pensant tre sur C:, et Windows 95 est sur D:.
