![]() | Note |
---|---|
Cette section concerne l'architecture x86. Si vous en possédez une différente, l'emplacement des fichiers et les fichiers à installer pourraient être différents. |
Le
noyau se situe dans arch/i386/boot/bzImage
.
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 programmes (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 soit 2.6.10-foo
. L'ordre des
commandes que vous devrez taper est :
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.8-foo $ cp System.map /boot/System.map-2.6.10-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 Mandrakelinux est configuré pour utiliser LILO par défaut.
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 démarrage). Ou encore, vous pouvez modifier manuellement le fichier de configuration comme expliqué ci-dessous.
Pour LILO, il vous faudra mettre à jour
/etc/lilo.conf
. Voici à quoi
ressemble un fichier lilo.conf
typique :
boot=/dev/hda map=/boot/map default="linux" keytable=/boot/es-latin1.klt prompt nowarn timeout=50 message=/boot/message menu-scheme=wb:bw:wb:bw image=/boot/vmlinuz label="linux" root=/dev/hda1 initrd=/boot/initrd.img append="devfs=mount resume=/dev/hda5" read-only other=/dev/fd0 label="floppy" unsafe
Un fichier lilo.conf
est composé d'une section
principale, puis 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 default="linux" keytable=/boot/es-latin1.klt prompt nowarn timeout=50 message=/boot/message menu-scheme=wb:bw:wb:bw
La directive boot=
dit à LILO où il
doit installer son secteur d'amorçage
boot ; en l'occurrence, il s'agit
du MBR (Master Boot Record,
soit l'enregistrement d'amorçage maître) 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
le menu au démarrage. Un compte à rebours est mis en place, il
est de cinq secondes (timeout=50
), puis
LILO exécute l'image par défaut. Si vous retirez la
directive timeout=
, LILO attendra
jusqu'à ce que vous ayez tapé quelque chose.
Puis vient
une section linux
:
image=/boot/vmlinuz label="linux" root=/dev/hda1 initrd=/boot/initrd.img append="devfs=mount resume=/dev/hda5" read-only
Une section pour démarrer un noyau GNU/Linux commence par la
directive image=
, suivi 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, linux
dans
cet exemple. La directive root=
dit à
LILO quelle partition héberge le système de fichiers
racine pour ce système GNU/Linux. Il est possible que notre
exemple diffère de votre configuration... 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. La ligne append
comporte des
options à passer au noyau.
Puis vient la section disquette :
other=/dev/fd0 label="floppy" unsafe
En fait, une
section débutant par other=
est utilisée
par LILO pour démarrer tout système d'exploitation
autre que GNU/Linux : l'argument de cette directive est
l'emplacement du secteur d'amorçage de ce système, et en
l'occurrence, il s'agit d'une disquette de démarrage.
Il faut désormais rajouter la section qui nous permettra de démarrer sur le nouveau noyau. Dans cet exemple, elle sera mise au début, mais rien ne vous empêche de la mettre à un autre endroit, sauf au milieu d'une autre section :
image=/boot/vmlinuz-2.6.10-foo label="foo" root=/dev/hda1 read-only append="devfs=mount resume=/dev/hda5"
Évidemment, adaptez cela à votre configuration !
Voici donc à quoi
ressemble notre fichier lilo.conf
après
modification, agrémenté de quelques commentaires en plus (toutes
les lignes commençant par #
), qui seront
ignorées par LILO :
# # Section principale # boot=/dev/hda map=/boot/map install=/boot/boot.b message=/boot/message # Démarrage par défaut. Mettons donc notre nouveau noyau : default="foo" # Afficher le prompt... prompt # ... attendre 5 secondes timeout=50 # # Notre nouveau noyau : image par défaut # image=/boot/vmlinuz-2.6.10-foo label="foo" root=/dev/hda1 read-only append="devfs=mount resume=/dev/hda5" # # Le noyau original # image=/boot/vmlinuz label="linux" root=/dev/hda1 read-only append="devfs=mount resume=/dev/hda5" # # La section Disquette # other=/dev/floppy label="floppy" unsafe
Cela pourrait bien être ce à quoi ressemble votre fichier
lilo.conf
. Cependant, n'oubliez pas
d'adapter le fichier à votre configuration !
Maintenant que le fichier est modifié correctement, contrairement à GRUB qui gère les modifications automatiquement, il faut dire à LILO de changer le secteur de démarrage :
# lilo Added foo * Added linux Added floppy $
Vous pouvez ainsi compiler autant de noyaux que vous le souhaitez, en rajoutant autant de sections que nécessaire. Vous n'avez plus qu'à redémarrer pour tester votre nouveau noyau. Notez qu'en cas d'erreur rapportée par LILO lors de l'installation de votre nouveau noyau, il ne modifie pas la configuration de votre secteur d'amorçage. LILO modifiera votre configuration seulement si aucune erreur n'a été trouvée.
É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 démarrage). Mais vous pouvez aussi 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 floppy root (fd0) chainloader +1
Ce
fichier est constitué de deux parties : l'en-tête avec les
options communes de base (les cinq premières lignes), et les
sections (ou entrées), chacune correspondant à un noyau
GNU/Linux différent ou à un autre OS (système
d'exploitation). timeout 5
définit le nombre
de secondes que GRUB attendra et dont vous disposez pour
choisir un autre noyau ou système d'exploitation que celui défini
par défaut. Cette valeur par défaut est spécifiée par
default 0
(ce qui signifie que la première
section définie est donc celle dite « par
défaut »). La directive keytable
, si
elle est présente, définit l'emplacement de la table de mappe de
clavier, ici le clavier est configuré en français. Si cette
directive n'est pas précisée, le clavier sera considéré comme un
simple QWERTY
. hd(x,y)
fait
référence à la partition numéro y
sur le
disque numéro x
, comme le BIOS les
voit.
Vient
ensuite la section des entrées. Dans cet exemple. trois images
sont définies : linux
,
failsafe
et floppy
.
La section linux
commence par indiquer
à GRUB le noyau à charger (kernel
hd(0,4)/boot/vmlinuz
), puis les options à passer à ce
noyau. Dans notre cas, root=/dev/hda5
indiquera au
noyau que le système de fichier racine est situé sur
/dev/hda5
. En fait,
/dev/hda5
est l'équivalent de
hd(0,4)
pour GRUB, mais le
noyau peut aussi être situé sur une partition différente de celle du système de
fichiers racine ;
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 » ;
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®, voire même un noyau GNU/Linux sur
disquette ;
![]() | Note |
---|---|
Suivant le niveau de sécurité 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/vmlinuz-2.6.10-foo root=/dev/hda5
Rappelez-vous d'adapter le fichier à votre
configuration ! Ici, le système de fichier racine est sur
/dev/hda5
, mais il est sûrement ailleurs sur
votre système.
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-la dans le menu et votre nouveau noyau démarrera.
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[43], 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/vmlinuz-2.6.8-foo root=/dev/hda5 vga=0x315
Pour plus de renseignements, consultez les pages d'info de GRUB (info grub).
[43] 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.