Remplacement de lilo par Grub

04.07.2005 | marcori
9466 visiteurs  -  6 visiteurs aujourd'hui  -  1 commentaire

Introduction

En nous réferant au site officiel de Gnu/Grub, on apprend que Gnu GRUB est un chargeur multiple de secteur de démarrage (bootloader). Il est dérivé de GRUB, GRand Unified Bootloader, qui a été intitialement pensé et mis en oeuvre par Erich Stefan Boleyn.

Pour faire simple, un bootloader est le premier programme executé au démarrage d’un ordinateur (en dehors du Bios qui est considéré comme statique et propre à l’ordinateur lui-même). C’est le bootloader qui est responsable de la lecture et du chargement du système d’exploitation (OS) qui par la suite vous permet de piloter et d’échanger des informations avec votre ordinateur.

Pourquoi changer de Bootloadder ?

Plusieurs réponse à cette question. Basiquement, parce-que c’est le bootloader par défaut de Debian Sarge... Plus sérieusement :
-  Lilo nécessite de taper la commande lilo à chaque modification du fichier /etc/lilo.conf, ce qui oblige d’avoir un système Linux démarré et fonctionnel pour modifier la liste des OS et des versions d’OS qui sont suceptible d’être executé.
-  Grub permet de lancer à peut près n’importe quel système d’exploitation dès le démarrage de la machine sans avoir été préalablement déclaré. Grub possède une interface et une syntaxe pour pouvoir démarrer un système d’exploitation situé sur un disque dur que vous venez d’ajouter à votre machine. Cela réduit encore les délais inhérents à la maintenance ou le rechargement d’une machine.
-  Grub s’approche des bootloader que l’on rencontre sur les machines Unix de type HP-UX, rendant des serveurs GNU/Linux plus proche encore d’un environnement professionnel.

Installation de Grub

L’installation est en tout cas sous Debian GNU/Linux assez simple, puisque l’on peut faire un : # apt-get install grub grub-disk grub-splashimages pour pouvoir installer respectivement Grub, les disquettes de boot Grub, des images a afficher au démarrage de la machine.

Pour une machine basique, où le disque dur est reconnu nativement par Linux (pas d’utilisation de certaines cartes RAID et autre tintoins particuliers), tapez la commande suivante pour installer Grub sur le secteur de boot du premier disque IDE : # grub-install /dev/hda Si vous souhaitez installer Grub sur le premier disque déclaré dans votre Bios, en faisant abstraction du type d’interface, vous pouvez saisir la commande : grub-install '(hd0)' ou bien aussi : grub-install hd0 Les exemples précedents supposent que Grub utilise des images plaçées sur le repertoire racine du système d’exploitation. Si vous souhaitez que Grub utilise des images plaçées ailleurs que sur le repertoire racine, et que vous avez par exemple une partition /boot sur votre système, vous pouvez utiliser la commande suivante : grub-install --root-directory=/boot hd0 Sur une machine IBM Xséries 335, avec un disque de boot SCSI et une partition dédiée au boot, la commande précédente me génère les message suivant :

# grub-install --root-directory=/boot hd0
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /boot/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0)   /dev/fd0
(hd0)   /dev/sda
(hd1)   /dev/sdb

Par contre cette commande a eu la mauvaise idée de me créer un dossier /boot/boot/grub en lieu et place du dossier /boot/grub ! Il m’est avis qu’il y a comme une erreur de traduction du site officiel. Ce qui fait que j’ai supprimé le dossier /boot/boot et relancé la simple commande : grub-install hd0

Configurer et embellir Grub

Grub possède deux type d’interface, une en ligne de commande, et une via un menu de selection des système d’exploitation. Pour générer le menu, utilisez la commande suivante :

# update-grub
Searching for GRUB installation directory ... found: /boot/grub .
Testing for an existing GRUB menu.list file...

Could not find /boot/grub/menu.lst file. Would you like /boot/grub/menu.lst generated for you? (y/N)y
Searching for splash image... none found, skipping...
Found kernel: /vmlinuz-2.6.8-2-686-smp
Found kernel: /vmlinuz-2.6.8-1-686-smp
Found kernel: /vmlinuz-2.4.27-2-686-smp
Found kernel: /vmlinuz-2.4.22-1-386
Updating /boot/grub/menu.lst ... done
Comme vous le voyez, Grub a détecté 4 noyaux Linux sur mon serveur et il a généré le fichier /boot/grub/menu.lst. C’est ce fichier que nous allons optimiser et modifier. A titre d’exemple, je vous livre ici mon fichier :

# menu.lst - See: grub(8), info grub, update-grub(8)
#            grub-install(8), grub-floppy(8),
#            grub-md5-crypt, /usr/share/doc/grub
#            and /usr/share/doc/grub-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
default         0

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout         5

# Pretty colours
color cyan/blue white/blue
splashimage=(hd0,0)/grub/splashimages/debsplash.xpm.gz
fallback        1

# Emulation d'un clavier azerty_FR (merci à Yannick)
setkey less backquote
setkey greater tilde
setkey ampersand 1
setkey 1 exclam
setkey tilde 2
setkey 2 at
setkey doublequote 3
setkey 3 numbersign
setkey quote 4
setkey 4 dollar
setkey parenleft 5
setkey 5 percent
setkey minus 6
setkey 6 caret
setkey backquote 7
setkey 7 ampersand
setkey underscore 8
setkey 8 asterisk
setkey backslash 9
setkey 9 parenleft
setkey at 0
setkey 0 parenright
setkey parenright minus
setkey numbersign underscore
setkey a q
setkey A Q
setkey z w
setkey Z W
setkey caret bracketleft
setkey dollar bracketright
setkey q a
setkey Q A
setkey m semicolon
setkey M colon
setkey bracketleft quote
setkey percent doublequote
setkey asterisk backslash
setkey bracketright bar
setkey w z
setkey W Z
setkey comma m
setkey question M
setkey semicolon comma
setkey period less
setkey colon period
setkey slash greater
setkey exclam slash
setkey bar question

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line)  and entries protected by the
# command 'lock'
# e.g. password topsecret
#      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

#
# examples
#
# title         Windows 95/98/NT/2000
# root          (hd0,0)
# makeactive
# chainloader   +1
#
# title         Linux
# root          (hd0,1)
# kernel        /vmlinuz root=/dev/hda2 ro
#

#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specifiv kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
# kopt=root=/dev/hda3 ro

## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd0,0)

## should update-grub create alternative automagic boot options
## e.g. alternative=true
##      alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
##      lockalternative=false
# lockalternative=false

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
##      altoptions=(recovery mode) single
# altoptions=(recovery mode) single

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
##      howmany=7
# howmany=all

## should update-grub create memtest86 boot option
## e.g. memtest86=true
##      memtest86=false
# memtest86=true

## ## End Default Options ##
title           Debian GNU/Linux, kernel 2.6.8-2-686-smp
root            (hd0,0)
kernel          /vmlinuz-2.6.8-2-686-smp root=/dev/sda3 ro
initrd          /initrd.img-2.6.8-2-686-smp
savedefault
boot

title           Debian GNU/Linux, kernel 2.6.8-2-686-smp (recovery mode)
root            (hd0,0)
kernel          /vmlinuz-2.6.8-2-686-smp root=/dev/sda3 ro single
initrd          /initrd.img-2.6.8-2-686-smp
savedefault
boot

title           Debian GNU/Linux, kernel 2.6.8-1-686-smp
root            (hd0,0)
kernel          /vmlinuz-2.6.8-1-686-smp root=/dev/sda3 ro
initrd          /initrd.img-2.6.8-1-686-smp
savedefault
boot

title           Debian GNU/Linux, kernel 2.6.8-1-686-smp (recovery mode)
root            (hd0,0)
kernel          /vmlinuz-2.6.8-1-686-smp root=/dev/sda3 ro single
initrd          /initrd.img-2.6.8-1-686-smp
savedefault
boot

title           Debian GNU/Linux, kernel 2.4.27-2-686-smp
root            (hd0,0)
kernel          /vmlinuz-2.4.27-2-686-smp root=/dev/sda3 ro
initrd          /initrd.img-2.4.27-2-686-smp
savedefault
boot

title           Debian GNU/Linux, kernel 2.4.27-2-686-smp (recovery mode)
root            (hd0,0)
kernel          /vmlinuz-2.4.27-2-686-smp root=/dev/sda3 ro single
initrd          /initrd.img-2.4.27-2-686-smp
savedefault
boot

title           Debian GNU/Linux, kernel 2.4.22-1-386
root            (hd0,0)
kernel          /vmlinuz-2.4.22-1-386 root=/dev/sda3 ro
initrd          /initrd.img-2.4.22-1-386
savedefault
boot

title           Debian GNU/Linux, kernel 2.4.22-1-386 (recovery mode)
root            (hd0,0)
kernel          /vmlinuz-2.4.22-1-386 root=/dev/sda3 ro single
initrd          /initrd.img-2.4.22-1-386
savedefault
boot

### END DEBIAN AUTOMAGIC KERNELS LIST

Ce qui a été rajouté par rapport au fichier généré par update-grub, concerne l’émulation d’un clavier Français. Comme on peut le voir, le disque de base est (hd0,0), ce qui correspond au device /dev/sda1, soit ma partition /boot.

Si votre partition /boot est plaçée sur par exemple le device /dev/hda3, utilisez la syntaxe (hd0,2).

Afin de maintenir les automatismes de mise à jour fourni par Debian, modifiez le fichier /etc/kernel-img.conf de la manière suivante :


# Do not create symbolic links in /
do_symlinks = Yes
relative_links = Yes
do_bootloader = No
do_bootfloppy = No
do_initrd = Yes
link_in_boot = No
postinst_hook = /sbin/update-grub
postrm_hook = /sbin/update-grub

Conclusion

Voilà, il nous reste maintenant à supprimer lilo de notre machine par la commande : apt-get --purge remove lilo lilo-config lilo-doc webmin-lilo

Maintenant, à chaque mise à jour du noyau de votre machine, vous n’avez plus à vous soucier si la commande lilo a été executée ou non, car il n’y en a plus besoin. Si un jour vous rencontrez un problème avec un boot récalcitrant, je vous renvoie vers le site officiel de Grub pour connaitre comment utiliser le Shell de Grub au moment du démarrage de l’ordinateur.

1 commentaire

Remplacement de lilo par Grub 16 octobre 2007
Tuto bien fait merci.

Poster un nouveau commentaire


Modération de ce forum :

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d'indiquer ci-dessous l'identifiant personnel qui vous a été fourni. Si vous n'êtes pas enregistré, vous devez vous inscrire.


[s'inscrire] [mot de passe oublié ?]

Derniers Commentaires

Articles les plus consultés

Téléchargez Firefox !

Libricks.org est motorisé par le logiciel libre Spip 1.8.3 associé au squelette graphique BliP 0.91

16 rubriques ... 32 articles ... 20 commentaires ... 28 sites référencés ... 90 visiteurs par jour (129825 au total)

Haut de page | XHTML 1.0 | CSS 2