Lilo mini-Howto

Cameron Spitzer (cls@truffula.sj.ca.us), Alessandro Rubini (rubini@linux.it).
Traduction fran�aise 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 plut�t que LILO car je n'aime pas trop les majuscules. Ce fichier d�crit quelques installations typiques de Lilo. Le but de ce document est d'�tre un suppl�ment au guide de l'utilisateur de Lilo. Je pense que des exemples aident � comprendre, m�me si votre configuration n'est pas vraiment semblable � la mienne. J'esp�re que cela va vous �viter des tracas. Comme la documentation de Lilo est d�j� tr�s bonne, ceux qui sont int�ress�s par les d�tails iront faire un tour dans /usr/doc/lilo*

1. Introduction

Bien que la documentation fournie avec les sources de Lilo (celle install�e dans /usr/doc/lilo-version) soit tr�s facilement compr�hensible, la majorit� des utilisateurs de Linux rencontrent des probl�mes 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 :

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 v�rifier ni non plus mettre � jour par lui m�me. Il n'est pas n�cessaire de dire que toutes les remarques seront les bienvenues.

2. Informations g�n�rales et installation standard

Quand Lilo amorce le syst�me, il utilise des appels du BIOS pour charger le noyau de Linux depuis le disque (disque IDE, disquette, ou autre). Par cons�quent, le noyau doit r�sider � un endroit accessible par le BIOS.

Au boot, Lilo ne sais pas lire les donn�es des syst�mes de fichiers, et le path que vous avez mis dans /etc/lilo.conf est r�solu � 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 utilis�s pour charger le syst�me d'exploitation. Par cons�quent, tous les fichiers doivent �tre dans un endroit que le BIOS peut lire (les fichiers sont g�n�ralement plac�s dans le r�pertoire /boot, cela signifie que seule la partition root de votre syst�me a besoin d'�tre accessible depuis le BIOS).

Une autre cons�quence du fait de se baser sur le BIOS est que vous devez r�installer le chargeur (en relan�ant /sbin/lilo) � chaque fois que vous modifiez la configuration de Lilo. Lorsque vous recompilez le noyau et que vous remplacez votre image, vous devez r�installer 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 g�n�ral, vous sp�cifirez 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 syst�me d'exploitation install� sur votre disque, vous feriez mieux d'installer Lilo sur votre partition de boot plut�t 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 d�sinstaller Linux et Lilo si n�cessaire.

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 monstruosit�s qui nous sont impos�es par les lacunes de l'architecture intel x86. Ceci implique que le noyau doit r�sider dans les 1024 premiers cylindres, mais cela n'est pas un probl�me vu que vous avez partitionn� votre disque et que votre partition de root est sens�e �tre petite (en tous cas, c'est comme �a que cela devrais �tre).

Si votre disque a un autre syst�me d'exploitation, vous ne devez pas modifier les param�tres du BIOS, sinon, l'ancien syst�me ne fonctionnera plus du tout. Toutes les distributions r�centes de Lilo savent quoi faire des r�glages LBA et LARGE.

Notez que le mot-cl� "linear" dans le /etc/lilo.conf peut vous �tre utile si vous avez des probl�mes de g�om�trie. Il indique � Lilo que l'adressage des secteurs doit se faire lin�airement plut�t qu'avec le triplet secteurs/t�tes/cylindres. La conversion des adresses 3D est report�e � l'ex�cution, par cons�quent, rendant la configuration immunis�e contre les probl�mes de g�om�trie.

Si vous avez plusieurs disques et que certains qui ne sont utilis�s que par Linux ne sont pas n�cessaires durant le boot, vous pouvez les enlever de votre BIOS, votre syst�me d�marrera plus rapidement et Linux d�tectera 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 diff�rents choix possible. Si Lilo n'est pas configur� pour �tre interactif, gardez la touche <Tab> ou <Shift> press�e avant que le message "LILO" n'apparaisse.

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

2.4 Comment d�sinstaller 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 p�riph�rique. Vous pouvez voir les nombres majeurs et mineurs de votre disque ou partition en lan�ant "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 cr�era /boot/boot.0813. Notez que Lilo ne cr�era pas le fichier s'il existe d�j�, vous n'aurez donc pas � faire une sauvegarde quand vous r�installerez Lilo (apr�s avoir recompil� votre noyau par exemple). Les copies de /boot/ sont toujours les sauvegardes d'avant la premi�re installation de Lilo.

Si jamais vous avez besoin de d�sinstaller Lilo (par exemple, dans le cas o� vous auriez malheureusement � d�sinstaller 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. Apr�s 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 sp�cial � 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        # d�lai, en dixi�mes de secondes
vga = 0           # optionnel, utilisez "vga=1" pour avoir du 80x50
#linear           # essayez �a si vous avez des probl�mes de g�om�trie

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 tr�s fr�quent de rencontrer de multiples images de noyau dans votre lilo.conf, au moins si vous restez � jour dans le d�veloppement 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 m�gaoctet (ce qui est fr�quent 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 sup�rieure � 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 tr�s grand nombre de Mini-HowTo qui peuvent vous �tre utiles. Ils sont tous appel�s "Linux+nulOS", pour quelques nulOS, ils parlent aussi de comment faire coexister Linux et des autres OS. De m�me, le "Multiboot-with-LILO" d�crit comment les diff�rentes 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 ma�tre du second contr�leur IDE) et d'y booter comme syst�me unique sur le contr�leur 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 syst�me pour faire autre chose.

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

# Ce fichier doit �tre utilis� sur un syst�me fonctionnant � partir
# de /dev/hdc
boot = /dev/hdc   # on r��crit 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 r�f�rer � un fichier dans /boot/ (en ce moment hdc). Ce fichier sera acc�d� en tant que hda quand il bootera comme seul syst�me.

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 lan�ant "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 p�riph�riques. Le BIOS identifie les lecteurs de disquettes et les disques durs par des num�ros : 0x00 et 0x01 s�lectionnent les disquettes, 0x80 et suivants, les disques durs (Les vieux BIOS ne peuvent acc�der qu'� deux disques). La signification du "bios = 0x80" dans l'exemple pr�c�dent est de dire � Lilo "utilise 0x80 dans tes appels BIOS pour /dev/hdc".

Cette directive Lilo peut �tre tr�s 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 p�riph�riques IDE et SCSI sont pr�sents, 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 acc�d� quand Linux est lanc�.

Par d�faut, Lilo suppose que les disques IDE sont mapp�s en premier par le BIOS, mais il est possible de lui sp�cifier 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 cha�ne d'amor�age sur une partition Linux sur le premier disque IDE. Remarquez qu'il n'est pas n�cessaire de garder le noyau sur la partition root.

La deuxi�me partition de mon premier disque IDE (/dev/hda2, la partition Linux utilis�e pour booter sur le syst�me) est mont�e 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 d�taill�. 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 d�faut.
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 premi�re partition SCSI en tant que
#  root. Le BIOS n'a pas � savoir qu'elle existe.
        root = /dev/sda1
#  Cette partition sera v�rifi�e puis remont�e par /etc/rc.d/rc.S
        read-only
#  J'ai un noyau d'une vielle Slackware qui tra�ne dans un coin au cas
#  ou j'ai un noyau qui ne marche pas. J'en ai d�j� 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. Acc�der 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 b�ti une table de partition avec le fdisk de Linux. MS-DOS-6.2 a refus� de s'installer dans /dev/hda1, pr�textant quelque chose du genre :

"Cette version de MS-DOS est d�di�e aux nouvelles installations. MS-DOS est d�j� 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 d�truis la premi�re partition de la table. Cela convient � MS-DOS 6.2 qui peut alors cr�er la m�me partition que celle que je viens de d�truire et s'installer. MS-DOS 6.2 �crit alors dans le secteur de lancement du disque, mais impossible de d�marrer.

Par chance, j'avais un noyau de la Slackware sur disquette (r�alis� par le programme setup d'installation), et j'ai donc lanc� Linux puis �cras� le secteur de d�marrage 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 cr�e 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

Apr�s avoir install� ces syst�mes, j'ai v�rifi� que les partitions contenant les fichiers zImage, boot.b, map, chain.b, et messages peuvent utiliser le syst�me de fichiers MS-DOS, tant que ni Stacker, ni Doublespace ne sont install�s. 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 commen�ant � quelques douzaines d'octets sur le disque au lieu de l'�crire au d�but. Il est possible de modifier le gestionnaire de p�riph�rique IDE de Linux pour contourner ce probl�me. Mais l'installation aurait �t� impossible avec le noyau pr�compil� de la Slackware. En fin de compte, IBM m'a envoy� une disquette OnTrack. J'ai alors t�l�phon� 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. D�marrage depuis une disquette de secours

Ensuite, j'ai install� Windows-95 sur mon ordinateur au bureau. Il a d�truit mon joli secteur de d�marrage LILO, mais n'a pas touch� � mes partitions Linux. Les noyaux sont tr�s 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 mani�re :

   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 MONT�E 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 :

#  Cr�e 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 contr�leur 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 s�r, MS-DOS ne d�marrera pas sur "D:". Ce n'est pas un probl�me 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:.