GRUB2 Migration
L'objectif de ce guide est d'aider le lecteur à migrer sans encombre de GRUB Legacy vers GRUB.
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.
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:
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 :
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
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.
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
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.
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.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
GRUB_CMDLINE_LINUX
les paramètres de démarrage pour le noyau.root #
nano /etc/default/grub
Have a look at GRUB configuration on the Gentoo Wiki or the official GRUB2 manual to decide how to modify the file. Most users will need to change GRUB_CMDLINE_LINUX
to specify parameters to be passed on the kernel command line.}}
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 :
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 .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.
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)
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 --ask -vc sys-boot/grub:0
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).
Ê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.