14.5. Installation du nouveau noyau

Votre noyau étant maintenant compilé correctement, il reste à l'installer. Pour faire les choses correctement et, en particulier, pour empêcher toute ambiguïté dans l'identification de vos noyaux, il est préférable de les nommer de façon rationnelle. On va supposer que vous installez un noyau 2.2.17. À ce moment-là, tapez les commandes suivantes :

$ make install

Après cela, il ne vous reste plus qu'à mettre à jour le chargeur de démarrage (boot loader) que vous utilisez. Il y a deux possibilités : GRUB ou LILO. Notez bien que Linux-Mandrake est maintenant configuré avec GRUB comme chargeur de démarrage par défaut.

14.5.1. Mise à jour de GRUB

Évidemment, il faut conserver la possibilité de charger votre ancien noyau! La manière la plus simple de mettre à jour GRUB est d'utiliser DrakBoot (voir le chapitre DrakBoot : changer vos paramètres de démarrage du Guide de l'utilisateur). Ou encore, vous pouvez modifier manuellement le fichier de configuration comme expliqué ci-dessous.

Il faut ici modifier le fichier /boot/grub/menu.lst. Voilà ce à quoi ressemble un menu.lst typique, avant toute modification :

timeout 5
color black/cyan yellow/cyan
i18n (hd0,4)/boot/grub/messages
keytable (hd0,4)/boot/fr-latin1.klt
default 0

title linux
kernel (hd0,4)/boot/vmlinuz root=/dev/hda5  

title failsafe
kernel (hd0,4)/boot/vmlinuz root=/dev/hda5  failsafe 

title Windows
root (hd0,0)
makeactive
chainloader  +1 

title floppy
root (fd0)
chainloader +1

Ce fichier est constitué de deux parties : l'entête avec les options communes de base (les cinq premières lignes), et les sections (ou entrées), chacune correspondant à un noyau différent ou à un autre système d'exploitation. timeout 5 définit le temps dont vous disposez pour choisir un autre noyau ou système d'exploitation que celui définit par défaut. Ce défaut est spécifié par default 0 (ce qui signifie que la première section définie est donc celle dite "par défaut"). La ligne color définit les couleurs du menu; la ligne i18n indique l'emplacement du message de bienvenue : (hd0,4) signifie qu'il se trouve sur la cinquième partition du premier disque dur. L'option keytable (hd0,4)/boot/fr-latin1.klt indique à GRUB le type de clavier utilisé si vous devez de passer des options manuellement au démarrage.

Vient ensuite la section des entrées. Il en existe quatre ici : linux. failsafe, windows, et floppy.

  1. L'unique ligne pour la section linux indique à GRUB que nous voulons charger l'image de démarrage primaire appelée vmlinuz dans le répertoire /boot/ de la quatrième partition du premier disque dur. L'option root=/dev/hda5 n'est pas une option pour GRUB; elle est en fait passée directement au noyau pour l'informer que le système de fichiers racine root (/) est situé sur /dev/hda5.

  2. L'entrée failsafe ressemble beaucoup à la précédente, excepté que nous passons un argument supplémentaire au noyau (failsafe) qui lui demande de passer en mode « single  » ou mode « de secours  ».

  3. L'entrée Windows demande à GRUB de simplement charger le secteur de démarrage de la première partition, qui contient probablement le secteur de démarrage de Windows.

  4. La dernière section, floppy démarre simplement votre système depuis la disquette du premier lecteur, quel que soit le système d'exploitation qui y réside.

Note

Suivant le niveau de sécurisation utilisé sur votre système, il se peut que certaines des entrées décrites n'existent pas dans votre fichier.

Allons maintenant droit au but ! Il nous faut rajouter une nouvelle section GNU/Linux afin de pouvoir démarrer sur notre nouveau noyau. Dans cet exemple, elle sera placée au début des entrées, mais rien ne vous empêche de la mettre ailleurs :

title linux-experimental
kernel (hd0,4)/boot/vmlinuz-2.2.17 root=/dev/hda5  

N'oubliez pas d'adapter le fichier à votre configuration! le système de fichier root GNU/Linux est ici sur /dev/hda5 mais il est sûrement ailleurs sur votre système. Votre machine est prête à être redémarrée. Profitez bien de votre noyau tout neuf!

Si vous avez compilé votre noyau avec le framebuffer, vous aurez envie de l'exploiter : dans ce cas, rajoutez une directive à la section qui lui indique la résolution avec laquelle vous voulez démarrer. La liste des modes est disponible dans le fichier /usr/src/linux/Documentation/fb/vesafb.txt (pour le framebuffer VESA! Sinon, reportez-vous au fichier correspondant). Pour du 800x600 en 32 bits[1], le numéro du mode est 0x315, il faut donc rajouter la directive :
vga=0x315
Votre entrée ressemblera désormais à ceci :
title linux-experimental
kernel (hd0,4)/boot/vmlinuz-2.2.17 root=/dev/hda5 vga=0x315 

Pour plus d'information, consultez les pages d'info de GRUB (info grub).

14.5.2. Mise à jour de LILO

La manière la plus simple de mettre à jour LILO est d'utiliser DrakBoot (voir le chapitre DrakBoot : changer vos paramètres de démarrage du Guide de l'utilisateur). Ou encore, vous pouvez modifier manuellement le fichier de configuration comme expliqué ci-dessous.

Pour LILO, il vous faudra mettre à jour /etc/lilo.conf. Évidemment, gardez la possibilité de démarrer votre noyau actuel! Voici à quoi ressemble un lilo.conf typique, après installation de votre distribution Linux-Mandrake et avant modification :
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.9-19mdk
        label=linux
        root=/dev/hda1
        read-only
other=/dev/hda2
        label=dos
        table=/dev/hda

Avertissement

Cet exemple suppose que vous utilisiez LILO comme chargeur principal! Si vous utilisez System Commander, la directive boot= sera différente, et vous n'aurez probablement pas de section other.

Un fichier lilo.conf est composé d'une section principale, suivie d'une section pour le lancement de chaque système d'exploitation. Dans l'exemple du fichier ci-dessus la section principale est composée des directives suivantes :

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

La directive boot= dit à LILO où il doit installer son secteur de boot; en l'occurrence, il s'agit du MBR (Master Boot Record, enregistrement principal de démarrage) du premier disque dur IDE. Si vous voulez faire une disquette LILO il vous suffira de remplacer /dev/hda par /dev/fd0 :-) La directive prompt demande à LILO de présenter l'invite au démarrage et d'entamer la procédure après 5 secondes (timeout=50). Si vous retirez la directive timeout=, LILO attendra jusqu'à ce que vous ayez tapé quelque chose.

Puis vient une section linux :

image=/boot/vmlinuz-2.2.9-19mdk
        label=linux
        root=/dev/hda1
        read-only

Une section linux commence par la directive image=, suivie par le chemin complet vers un noyau GNU/Linux valide. À l'instar de toute section, elle contient une directive label= pour l'identifier de façon unique. La directive root= dit à LILO quelle est la partition hébergeant le système de fichiers racine pour ce système GNU/Linux, elle pourra être différente chez vous. La directive read-only commande à LILO de monter ce système de fichiers racine en lecture seule au démarrage : s'il n'y a pas cette directive, vous aurez un message d'avertissement.

Puis vient la section Windows :

other=/dev/hda2
        label=dos
        table=/dev/hda

En fait, une section débutant par other= sert à LILO pour démarrer tout système d'exploitation autre que GNU/Linux : l'argument de cette directive est l'emplacement du secteur de boot de ce système, et en l'occurrence il s'agit d'un système Windows. Pour trouver le secteur de boot, situé au début de la partition hébergeant cet autre système, GNU/Linux a également besoin de savoir où se trouve la table des partitions qui lui permettra de localiser la partition en question, ce que fait la directive table=. La directive label=, comme pour une section linux, sert à identifier le système.

Avant de rajouter notre section linux, nous allons faire d'une pierre deux coups : composons un message qui s'affichera au démarrage avant l'apparition du prompt LILO et qui explique comment utiliser celui-ci :

$ cat >/boot/message <<EOF
> Bienvenue, ici LILO (LInux LOader).
> Tapez sur la touche TAB pour avoir une liste des images de boot.
> Vous disposez de:
> * exp: démarrage de Linux-Mandrake avec votre nouveau noyau
> * linux: noyau d'origine de Linux-Mandrake
> * dos: Windows
> Appuyer sur ENTREE sans entrer le nom d'une image démarrera
> la première image sur la liste, à savoir exp.
> EOF
$         

Et voilà! Pour que ce message s'affiche au boot, il suffit de rajouter la directive :

message=/boot/message

dans la section principale de lilo.conf. Maintenant, rajouter la section GNU/Linux vous permettra de démarrer sur le nouveau noyau. Dans cet exemple, elle sera mise en tête, mais rien ne vous empêche de la mettre à un autre endroit :

image=/boot/vmlinuz-2.2.17
        label=exp
        root=/dev/hda1
        read-only

Si vous avez compilé votre noyau avec le framebuffer, consultez le paragraphe à ce sujet ci-dessus dans la section sur GRUB. La différence est que désormais, l'option est sur une ligne à part :

vga=0x315

Voici donc à quoi ressemble notre lilo.conf après modification, agrémenté de quelques commentaires en plus (toutes les lignes commençant par #), qui seront ignorés par LILO :

#
# Section principale
#
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
# Notre message d'invite
message=/boot/message
# Présenter le prompt...
prompt
# ... attendre 5 secondes
timeout=50
#
# Notre nouveau noyau: image par défaut
#
image=/boot/vmlinuz-2.2.17
        label=exp
        root=/dev/hda1
        read-only
# Si on utilise le framebuffer VESA:
        vga=0x315
#
# Le noyau d'origine
#
image=/boot/vmlinuz-2.2.15-19mdk
        label=linux
        root=/dev/hda1
        read-only
#
# Section Windows
#
other=/dev/hda2
        label=dos
        table=/dev/hda

N'oubliez pas d'adapter le fichier à votre configuration! Le système de fichiers racine de GNU/Linux est ici /dev/hda1 mais il peut très bien se situer ailleurs chez vous (pareillement pour Windows). Maintenant que le fichier est modifié correctement, il faut dire à LILO de changer le secteur de boot :

 
$ lilo
Added exp *
Added linux
Added dos
$

Vous pouvez ainsi compiler autant de noyaux que vous le souhaitez, en rajoutant autant de sections GNU/Linux que nécessaire. Il ne vous reste plus qu'à redémarrer pour tester votre nouveau noyau.

Notes

[1]

8 bits signifie (28)couleurs, soit 256; 16 bits signifie (216)couleurs, soit 64k, soit 65536; en 24 bits comme en 32 bits, la couleur est codée sur 24 bits, soit (224) couleurs possibles, soit exactement 16M, ou un peu plus de 16 millions.


Tux sur Étoile de MandrakeSoft Linux est une marque déposée de Linus Torvalds. Toutes les autres marques et copyrights sont la propriété de leurs auteurs respectifs.
Sauf mention contraire, tout le contenu de ces pages et toutes les images sont Copyright MandrakeSoft S.A. et MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/