29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / Système / Debian / Grub 2 : configuration et installation du boot loader sous Debian / Grub 2: installer et démarrer une image avec initrd





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

Grub 2 : configuration et installation du boot loader sous Debian

Table des matières

  1. Grub 2 : configuration et installation du boot loader sous Debian
  2. 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