Gentoo Logo

GRUB2 migration from GRUB Legacy

Table des matières :

1.  Notions de base

Qu'est-ce que Grub?

GRUB est des chargeurs de démarrage les plus couramment utilisés sur des systèmes Linux non-embarqués. Le rôle de Grub est de faciliter le chargement du noyau depuis votre disque vers la mémoire vive et de lancer son exécution.

Pourquoi migrer ?

La première raison, c'est que GRUB n'est plus maintenu et qu'il n'est donc plus mis à jour. GRUB Legacy a été créé à une époque où les développeurs pouvaient s'appuyer sans risque sur des vérités qui n'en sont plus plus aujourd'hui. Par exemple, GRUB Legacy est incapable de démarrer depuis des disques dont la taille est supérieure à 2 TO et s'appuie sur l'idée que les systèmes de fichiers les plus récents n'en viendront pas à remplacer /boot.

GRUB2 cherche à être plus robuste, plus portable, plus puissant et est maintenu avec une base de code plus propre. GRUB2 prend en charge plus de configurations matérielles, plus de types de systèmes de fichiers et plus de plans de partitionnement de disques que son prédécesseur.

2.  Migration vers GRUB2

La migration vers GRUB2 est assez directe : il sera mis en place par votre gestionnaire de paquets dans votre processus normal de mise à jour. S'il n'est pas mis en place automatiquement, vous pouvez toujours installer le paquet sys-boot/grub:2.

Disque de démarrage

La première chose importante à comprendre, c'est quel est votre disque de démarrage. Pour beaucoup de gens, c'est /dev/sda. La façon la plus facile de le savoir, est de regarder la configuration de votre GRUB Legacy existant, en particulier le fichier /boot/grub/grub.conf. Un exemple est présenté ci-dessous.

Note : votre partition /boot doit être montée pour voir ces fichiers. Ce ne devrait pas être plus compliqué que mount /boot pour monter /boot.

Exemple de code 2.1 : /boot/grub/grub.conf

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 3.2.12
root (hd0,0)
kernel /boot/kernel-3.2.12-gentoo root=/dev/sda3 quiet dolvm
initrd /boot/initramfs-genkernel-x86_64-3.2.12-gentoo

La lecture du fichier ci-dessus vous apprend que (hd0) est le disque de démarrage mais vous devez encore rapporter ceci à un périphérique réel. Pour le savoir, il vous faut regarder le fichier /boot/grub/device.map. Un exemple est présenté ci-dessous.

Exemple de code 2.2 : /boot/grub/device.map

(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb

Ce fichier vous apprend que /dev/sda est le disque de démarrage.

Installation et configuration de GRUB2

Ensuite, il faut installer et configurer GRUB2 sur votre partition /boot sans retirer GRUB Legacy de votre Master Boot Record (MBR). L'exemple qui suit utilise /dev/sda que vous devez remplacer par votre propre disque de démarrage. La première étape installe les fichiers GRUB2 requis dans /boot/grub2, tandis que la deuxième étape analyse la présence de vos noyaux disponibles et génère un fichier de configuration approprié nommé /boot/grub2/grub.cfg.

Exemple de code 2.3 : installer et configurer GRUB2

# grub2-install --grub-setup=/bin/true /dev/sda
Installation finished. No error reported.
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/kernel-3.2.12-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo
done

Note : GRUB2 ne reconnait que les noyaux et les disques virtuels de démarrage (initramfs) obéissant à des règles strictes de nommage. Un noyau doit être nommé soit kernel-${version}, soit vmlinuz-${version} alors qu'un disque virtuel de démarrage (initramfs) doit être nommé au choix, initramfs-${version}, initramfs-genkernel-${version}, initramfs-genkernel-${arch}-${version}, initrd-${version}.img, initrd.img-${version}, initrd-${version}.gz, ou initrd-${version}. Ce nom (incluant la ${version}), doit correspondre à un noyau, ou un disque initial, disponible dans /boot.

Chargement en chaîne de GRUB2 depuis GRUB Legacy pour tester la configuration

Comme une configuration défectueuse de GRUB peut conduire à un système incapable de démarrer, vous aimeriez tester votre configuration de GRUB2 avant de l'appliquer en permanence. Pour ce faire, vous devez charger GRUB2 en chaîne depuis GRUB Legacy en ajoutant une nouvelle section dans le fichier /boot/grub/grub.conf. Un exemple est présenté ci-dessous.

Note : soyez conscient du fait que votre racine peut être autre chose que (hd0,0) telle qu'utilisée dans l'exemple et assurez-vous de toujours utiliser la même valeur de racine partout.

Exemple de code 2.4 : /boot/grub/grub.conf

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title GRUB2 Chainload
root (hd0,0)
kernel /boot/grub2/i386-pc/core.img
boot

title Gentoo Linux 3.2.12
root (hd0,0)
kernel /boot/kernel-3.2.12-gentoo root=/dev/sda3 quiet dolvm
initrd /boot/initramfs-genkernel-x86_64-3.2.12-gentoo

À ce stade, vous devriez redémarrer votre machine et sélectionner GRUB2 Chainload du menu de GRUB au début du démarrage. Un autre menu GRUB, se présentant avec un entête GRUB 2.0.0 (ou plus récent) et affichant tous les noyaux disponibles pour le démarrage,  vous sera alors proposé. Si ceci venait à ne pas fonctionner, redémarrez votre système et choisissez votre option habituelle de démarrage au lieu de GRUB2 Chainload.

Replacement et suppression de GRUB Legacy

Maintenant, si tout s'est bien passé, vous pouvez remplacer GRUB Legacy et le retirer de votre système.

Note : dans la mesure où vous avez redémarré votre système, vous devez probablement remonter /boot. Pensez à bien utiliser votre propre disque de démarrage si ce n'est pas /dev/sda.

Exemple de code 2.5 : remplacer GRUB Legacy

# grub2-install /dev/sda
Installation finished. No error reported.
# rm -rf /boot/grub/

Maintenant, vous pouvez utiliser votre gestionnaire de paquets pour désinstaller sys-boot/grub:0. La migration est terminée.

3.  Maintenance de GRUB2

À chaque fois que vous installerez un nouveau noyau, vous devrez effectuer l'étape qui suit pour que GRUB2 puisse reconnaître votre nouveau noyau.

Note : votre partition /boot doit être montée pour ce qui suit.

Exemple de code 3.1 : installere un nouveau noyau

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/kernel-3.3.8-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.3.8-gentoo
Found linux image: /boot/kernel-3.2.12-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo
done

4.  FAQ / Problèmes connus / Remèdes

Contenu à paraître.



Imprimer

Dernière mise à jour le 27 juillet 2012

La version originale de cette traduction n'est plus maintenue

Résumé : Le but de ce guide est de vous montrer comment passer en douceur de GRUB Legacy à GRUB2.

Doug Goldstein
Author

José Fournier
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.