GRUB2 Migration

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page GRUB2 Migration and the translation is 100% complete.

Other languages:
English • ‎español • ‎français • ‎polski • ‎português do Brasil • ‎čeština • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

L'objectif de ce guide est d'aider le lecteur à migrer sans encombre de GRUB Legacy vers GRUB2.

Contexte

Qu'est-ce que GRUB?

GRUB est l'un des chargeurs de démarrage les plus courants sur les systèmes non-embarqués. Le rôle de GRUB est de faciliter le chargement et le choix du noyau Linux depuis le disque dur vers la mémoire et de commencer à exécuter le noyau Linux.

Pourquoi migrer?

En premier lieu, parce que GRUB Legacy n'est plus maintenu et n'est donc plus actualiser. GRUB Legacy a été créé à une époque où les développeurs pouvaient faire certaines suppositions qui ne sont plus valables de nos jours. Par exemple, GRUB Legacy ne sait pas démarrer depuis des disques d'une taille supérieure à 2 TO et présuppose que de nouveaux systèmes de fichiers ne viendront pas remplacer /boot.

GRUB2 cherche à être plus robuste, plus portable et plus puissant. De plus il est maintenu sur une base de code plus saine. GRUB2 prend en charge un plus grand nombre de configurations matérielles, plus de types de systèmes de fichiers et plus d'agencements de disques que son prédécesseur.

Migration vers GRUB2

La migration vers GRUB2 est assez directe : il sera installé comme partie du processus de mise à jour habituelle par le gestionnaire de paquets. S'il n'est pas installé automatiquement, il est toujours possible de le faire à la main en utilisant sys-boot/grub:2.

root #emerge --ask sys-boot/grub:2

Disque de Démarrage

Il est avant tout primordial de savoir quel est le disque amorçable (bootable). Pour ceux qui ont suivit le manuel de Gentoo, il s'agit de /dev/sda. En cas d'incertitudes, le moyen le plus aisé de le savoir, est de regarder la configuration de GRUB Legacy. Vérifier le fichier /boot/grub/grub.conf.

Note
Assurez-vous que la partition /boot est monté pour être en mesure de voir ces fichiers.

Pour Monter la partition ː

root #mount /boot

grub.conf ressemblera plus ou moins a ceci:

FILE /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

En vous appuyant sur le fichier ci-dessus, il est possible de savoir que (hd0) est le disque de démarrage mais il faut l'associer à un périphérique réel. Pour connaître cette information, il faut regarder /boot/grub/device.map. En voici un exemple :

FILE /boot/grub/device.map
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
Note
Si vous pensez que /boot/grub/device.map est incorrect, exécuter la commande suivante pour recréer ce fichier ː
root #grub-install --recheck /dev/sda

En vous appuyant sur le fichier ci-dessus, vous savez que votre disque de démarrages est /dev/sda.

Installer et configurer GRUB2

L'étape suivante est l'installation et la configuration de GRUB2 sur la partition /boot sans retirer GRUB Legacy du MBR (Master Boot Record). L'exemple ci-dessous utilise /dev/sda (le chemin du disque de démarrage).

Premièrement, installer les fichiers nécessaires à GRUB2 dans /boot/grub.

root #grub-install --grub-setup=/bin/true /dev/sda
Installation finished. No error reported.
Attention !
L'option --grub-setup=/bin/true indique a grub-install de ne pas installer GRUB dans le MBR. Si cette option est omise,GRUB Legacy sera écrasé et charger en chaîne GRUB2 depuis GRUB Legacy pour vérifier la configuration ne sera pas possible.

Il faut maintenant trouver les noyaux disponibles pour générer un /boot/grub/grub.cfg fonctionnel. Passer cette étape si c'est une configuration manuelle.

root #grub-mkconfig -o /boot/grub/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
Attention !
GRUB2 utilise le fichier de configuration /boot/grub/grub.cfg tandis que GRUB Legacy utilise le fichier /boot/grub/grub.conf. Il faut donc faire attention et ne pas utiliser l'ancien fichier par erreur, par exemple quand ce dernier est toujours présent et que l'auto-complétion avec tab est utilisée.
Note
grub-mkconfig exige un nommage strict des images des noyaux et des systèmes de fichiers virtuels initiaux (initramfs). Une image de noyau doit être nommée kernel-${version} ou vmlinuz-${version} alors qu'une image d'initramfs doit être nommée initramfs-${version}.img ,initramfs-genkernel-${version} ,initramfs-genkernel-${arch}-${version} ,initrd-${version}.img ,initrd.img-${version} ,initrd-${version}.gz , ou initrd-${version} . Ces fichiers doivent être disponibles dans /boot.
Note
Le fichier /etc/default/grub contrôle les opérations de grub-mkconfig. Si il y a besoin de passer des paramètres au noyau (par exemple lorsque l'on utilise genkernel et le démarrage depuis LVM ou un RAID), éditer ce fichier avant de lancer la génération /boot/grub/grub.cfg comme cela:
root #nano /etc/default/grub
Jetez un œil sur le Wiki Gentoo the GRUB2 configuration ou sur le manuel officiel de GRUB2 pour décider comment modifier le fichier. La plupart des utilisateur devront spécifier dans GRUB_CMDLINE_LINUX les paramètres de démarrage pour le noyau.

Charger en chaîne GRUB2 depuis GRUB Legacy pour vérifier la configuration

Étant donné qu'une configuration défaillante de GRUB peut conduire à un système incapable de démarrer, vous devez tester votre configuration de GRUB2 avant de la rendre permanente. Pour faire cela, vous allez chaîner GRUB2 à GRUB Legacy. Vous pouvez le faire en ajoutant une nouvelle section dans /boot/grub/grub.conf. En voici un exemple :

Note
Soyez conscient du fait que la racine peut être différente de (hd0,0) utiliser ici en exemple, et assurez-vous que vous d'utilisez la même valeur de racine que celle tirée du fichier de configuration /boot/grub/grub.conf .
FILE /boot/grub/grub.conf
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
  
title GRUB2 Chainload
root (hd0,0)
kernel /boot/grub/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 la machine doit être redémarré et GRUB2 Chainload choisi depuis le menu de GRUB lorsque la machine commence à démarrer. un autre menu GRUB ce présente alors qui s'annoncera lui-même comme étant un menu GRUB 2.0.0 ou postérieur sur la première ligne présentant les noyaux valides disponible au démarrage . Si cela ne marche pas, redémarrez simplement le système et choisissez l'option de démarrage habituelle au lieu de GRUB2 Chainload.

Remplacer et retirer GRUB Legacy

Si tout s'est bien passé, remplacer GRUB Legacy et le retirer du système.

Attention !
Comme le système a été redémarrer, il peut être nécessaire de monter /boot à nouveau. Faites attention à monter le disque correct au démarrage au lieu de /dev/sda qui est,rappelons-le, un simple exemple. Si /boot n'est pas monter avant de lancer grub-install, le système deviendra indémarrable (unbootable)
Note
Comme indiqué précédemment, si GRUB2 a été émergé avec le USE flag multislot alors grub2-install doit être utilisé au lieu de grub-install. Dans ce cas, après que GRUB Legacy a été enlevé du système (à la prochaine étape), GRUB2 doit être ré-émergé sans le USE flag multislot afin que grub-install et grub-mkconfig se réfèrent à GRUB2.
root #grub-install /dev/sda
Installation finished. No error reported.

À ce stade utiliser le gestionnaire de paquets pour retirer sys-boot/grub:0

root #emerge -avC "=sys-boot/grub-0.97*"

La migration est maintenant terminée.

Maintenance de GRUB2

À chaque fois qu'un nouveau noyau est installer, il faut accomplir l'étape suivante de manière à ce que la configuration GRUB2 reconnaisse le nouveau noyau (sauf si vous avez utilisé une configuration manuelle).

Note
Être sure que la partition /boot est montée pour cette étape ǃ
root #grub-mkconfig -o /boot/grub/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

This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Cardoe
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.