Table des matières
- Grub 2 : configuration et installation du boot loader sous Debian
- Grub 2: installer et démarrer une image avec initrd
Grub 2: installer et démarrer une image avec initrd
Date de publication: le jeudi 26 mai 2011 à 13h09
Dernière modification: par Pascal BOYER le jeudi 26 mai 2011 à 20h05
Debian : le noyau par défaut
On supposera que le noyau courant est le noyau installé lors de l'installation de la version stable de Debian, à savoir une image 2.6.18-4-686.
On supposera également que nous disposons de deux disques durs IDE que ce noyau a détectés et nommés:
- hde
- hdf
Les noms des deux disques durs peuvent surprendre mais c'est ainsi qu'ont été détectés mes deux seuls disques durs IDE installés sur ma carte mère P5K Deluxe.
Debian : comment installer une nouvelle image d'un noyau
Pour cela il suffit de télécharger le package image. Par exemple:
apt-get install linux-image-2.6.22-2-686-bigmem
L'installation d'un tel package met automatiquement le fichier:
/boot/grub/menu.lst
à jour.
C'est à dire que ces deux sections sont ajoutées:
title Debian GNU/Linux, kernel 2.6.22-2-686-bigmem root (hd0,1) kernel /boot/vmlinuz-2.6.22-2-686-bigmem root=/dev/hde2 ro vga=795 initrd /boot/initrd.img-2.6.22-2-686-bigmem savedefault title Debian GNU/Linux, kernel 2.6.22-2-686-bigmem (single-user mode) root (hd0,1) kernel /boot/vmlinuz-2.6.22-2-686-bigmem root=/dev/hde2 ro single initrd /boot/initrd.img-2.6.22-2-686-bigmem savedefault
L'option vga=795 est une option ajoutée à la main qui permet de paramétrer la définition de l'écran pendant la phase de démarrage.
Voici les valeurs possibles et les résolutions auxquelles elles correspondent:
640x480x8 : 769 (0x301) 800x600x8 : 771 (0x303) 1024x768x8 : 773 (0x305) 1280x1024x8 : 775 (0x307) 640x480x16 : 785 (0x311) 800x600x16 : 788 (0x314) 1024x768x16 : 791 (0x317) 1280x1024x16 : 794 (0x31A) 640x480x32 : 786 (0x312) 800x600x32 : 789 (0x315) 1024x768x32 : 792 (0x318) 1280x1024x32 : 795 (0x31B)
Debian : message de boot Waiting for root file system...
Si on reboot juste après avoir installé la nouvelle image, il est fort possible que la phase de démarrage se lance pour se terminer rapidement par un message du type:
Waiting for root file system...
Pour résoudre ce problème, voici ce que j'ai fait.
Tout d'abord, dans les messages de boot qui s'affichent avant le message Waiting for root file system... je repère la désignation des disques durs.
J'ai pu remarqué qu'avec le noyau 2.6.18-4-686, mes deux disques durs sont référencés hde et hdf alors qu'avec la nouvelle image ils sont repérés en tant que hda et hdb. Il y a donc déjà un problème avec les lignes ajoutées au fichier menu.lst
D'autre part, le fichier /etc/fstab fait lui aussi référence à un disque hde et non hda.
En fait, il y a plusieurs fichiers qui font référence au disque hde alors que la nouvelle image est liée à un disque hda.
Créer les devices
La première chose à faire est de s'assurer que les devices hda et hdb existent. Par défaut, ce n'était pas le cas chez moi, donc le les ai créés:
cd /dev
./MAKEDEV
udev active, devices will be created in /dev/.static/dev/
Puis j'ai copié les devices /dev/.static/dev/hda à /dev/.static/dev/hda7 et /dev/.static/dev/hdb à /dev/.static/dev/hdb7 à la racine du répertoire /dev
/etc/fstab
Dans ce fichier, j'ai remplacé tous les hde par des hda.
/etc/mtab
Dans ce fichier, j'ai remplacé tous les hde par des hda.
/etc/initramfs-tools/conf.d/resume
L'unique ligne de ce fichier devient:
RESUME=/dev/hda1
/boot/grub/menu.lst
Dans ce fichier, les lignes ajoutées par l'installation de l'image 2.6.22-2-686-bigmem deviennent:
title Debian GNU/Linux, kernel 2.6.22-2-686-bigmem root (hd0,1) kernel /boot/vmlinuz-2.6.22-2-686-bigmem root=/dev/hda2 ro vga=795 initrd /boot/initrd.img-2.6.22-2-686-bigmem savedefault title Debian GNU/Linux, kernel 2.6.22-2-686-bigmem (single-user mode) root (hd0,1) kernel /boot/vmlinuz-2.6.22-2-686-bigmem root=/dev/hda2 ro single initrd /boot/initrd.img-2.6.22-2-686-bigmem savedefault
On remplace simplement hde par des hda.
/boot/grub/device.map
Le contenu de ce fichier devient:
(hd0) /dev/hda
/etc/uswsusp.conf
La deuxième ligne devient:
resume device = /dev/hda1
Booter sur l'image 2.6.22-2-686-bigmem
Une fois toutes ces modifications apportées, on peut rebooter la machine et lancer la nouvelle image du noyau.
Cependant, il reste un problème: à la place de Waiting for root file system j'obtiens maintenant:
resume: could not stat the resume device file '/dev/hde1'
Please type in the full path name to try again or press ENTER to boot the system.
...ce qui m'oblige à taper:
/dev/hda1
Ce problème provient de cette ligne du fichier /boot/grub/menu.lst:
# kopt=root=/dev/hde2 ro
:
Cette ligne, qui semble être un commentaire, est utilisée par la commande /sbin/update-grub.
Il faut donc la remplacer par celle-ci:
# kopt=root=/dev/hda2 ro
:
Chaque fois que l'on installera une image avec la commande:
apt-get install linux-image-2.6.xxx
la commande /sbin/ update-grub sera lancée et mettra à jour le fichier menu.lst.
Commentaires














