14.6. Installation du nouveau noyau

Le noyau se situe dans arch/i386/boot/bzImage (ou zImage si vous avez choisi make zImage en place et lieu). Le répertoire standard dans lequel les noyaux sont installés est /boot. Vous devez aussi copier le fichier System.map afin d'assurer le bon fonctionnement de certains programme (tels que top par exemple). Assurez-vous de bien nommer ces fichiers du nom de la version du noyau. Supposons que votre version du noyau est 2.4.4-foo. L'ordre des commandes que vous devrez taper est :

    $ cp arch/i386/boot/bzImage /boot/vmlinux-2.4.4-foo
    $ cp System.map /boot/System.map-2.4.4-foo
   

Maintenant, il est nécessaire de dire au chargeur de démarrage où le nouveau noyau se trouve. Vous avez deux possibilités : GRUB ou LILO. Notez que Linux-Mandrake est dorénavant installé avec GRUB comme chargeur par défaut.

14.6.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 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éfini 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 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 de 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'existe pas 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, sauf 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. Ce peut être Windows, voir même un noyau GNU/Linux sur disquette.

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 foo 
     kernel (hd0,4)/boot/vmlinux-2.4.4-foo root=/dev/hda5
    

Souvenez-vous 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 ordinateur est prêt à redémarrer. Profitez bien de votre noyau tout neuf !

Et c'est tout. Contrairement à LILO, que nous verrons plus loin, il n'y a rien d'autre à faire. Redémarrez votre ordinateur et la nouvelle entrée que vous venez de définir apparaîtra. Sélectionnez-là dans le menu et votre nouveau noyau démarrera.

Si vous avez compilé votre noyau avec le frame buffer, 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 frame bufferVESA! 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 foo
     kernel (hd0,4)/boot/vmlinux-2.4.4-foo root=/dev/hda5 vga=0x315 
    
Pour plus d'informations, consultez les pages d'info de GRUB (info grub).

14.6.2. Mise à jour de LILO

La manière la plus simple de mettre à jour LILO est d'utiliser DrakBoot (voir le chapitre 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 l'installation de votre distribution Linux-Mandrake et avant modification :
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
vga=normal
default=linux
keytable=/boot/fr-latin1.klt
lba32
prompt
timeout=50
message=/boot/message
image=/boot/vmlinuz-2.4.9-19mdk
        label=linux
        root=/dev/hda1
        read-only
other=/dev/hda2
        label=dos
        table=/dev/hda 
     
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
vga=normal
default=linux
keytable=/boot/fr-latin1.klt
lba32
prompt
timeout=50
message=/boot/message
      
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 cinq 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.4.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 partition héberge 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= est utilisé par 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.

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, sauf au milieu d'une autre section :

image=/boot/vmlinux-2.4.4-foo
        label=foo
        root=/dev/hda1
        read-only
   

Adaptez évidemment cela à votre configuration ! C'est à dessein que nous avons pris une situation différente de celle de GRUB ci-desus...

Si vous avez compilé votre noyau avec le frame buffer, consultez le paragraphe à ce sujet ci-dessus dans la section au sujet de 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
# Au démarrage, nous voulons fonctionner en mode VGA normal.
# Le frame buffer basculera dans cette résolution 
# si nous utilisons :
vga=normal
# Notre message de démarrage...
message=/boot/message
# Qu'est-ce qui doit être démarré par défaut.
# Mettons notre propre noyau par défaut :
default=foo
# Afficher le prompt...
prompt
# ... wait 5 seconds
timeout=50
#
# Notre nouveau noyau : image par défaut
#
image=/boot/vmlinux-2.4.4-foo
        label=foo
        root=/dev/hda1
        read-only
# Si nous utilisons le frame buffer VESA :
        vga=0x315
#
# le noyau original
#
image=/boot/vmlinuz-2.4.2-19mdk
        label=linux
        root=/dev/hda1
        read-only
#
# La section Windows
#
other=/dev/hda2
        label=dos
        table=/dev/hda
	
Souvenez-vous 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 démarrage :
$ lilo
Added foo *
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/