| Autres langues Deutsch ; English ; Français |
Contents
Presentation
Grub2-efi est installé par défaut lors de l'installation de Mageia 5 et suivantes en mode UEFI. Cette page explique comment réaliser une configuration post-installation et/ou une personnalisation de Grub2-efi. Ne pas utiliser cette page si vous avez Grub Legacy ou Grub2 en mode MBR.
Structure de Grub2-efi
Lors de l'installation de Mageia, l'installateur a réalisé les actions suivantes :
- il a cherché une partition système EFI (EFI System Partition = ESP), l'a créée si non trouvée et l'a montée dans
/boot/EFI, - il a installé
Grub2-efi, ce qqui signifie :- il a écrit le fichier
/boot/EFI/EFI/mageia/grubx64.efidans l'ESP, - il a écrit les scripts de configuration dans le dossier
/etc/grud.det le fichier de configuration/etc/default/grub, - il a exécuté les scripts pour générer le principal fichier de configuration
/boot/grub2/grub.cfg. Ce fichier est lu à chaque exécution deGrub2-efiet peut-être ré-écrit avec la commandegrub2-mkconfig,
- il a écrit le fichier
- il a créé une entrée dans la RAM non volatile de la carte mère, cette entrée est placée en première place dans l'ordre de boot et pointe vers
/boot/EFI/EFI/mageia/grubx64.efi.
En cas de problèmes avec le fichier /boot/EFI/EFI/mageia/grubx64.efi ou le dossier /boot/grub2, ils peuvent être ré-écrits avec la commande grub2-install --target=x86_64-efi --efi-directory=/boot/EFI --bootloader-id=mageia --recheck. "--efi-directory" spécifie le point de montage de l'ESP. "--bootloader-id" spécifie le nom du dossier où grubx64.efi est copié, c'est aussi le nom de la nouvelle entrée créée dans la RAM non volatile, vous pouvez choisir le nom que vous voulez.

Voir Interagir avec le firmware UEFI pour plus d'informations concernant la gestion des entrées dans la RAM non volatile.
L'ESP
L'ESP (pour "EFI System Partition") est une petite vfat partition d'environ 100 à 300 Mo qui contient les programmes du chargeur d'amorçage (boot loader) de chaque système d'exploitation installé sur le PC. Elle fait partie de la spécification de l'UEFI et est indépendante de tout système d'exploitation. Lors d'une installation en mode UEFI, l'installateur de Mageia la détecte automatiquement (ou la crée le cas échéant), c'est le plus souvent /dev/sda et la monte sur /boot/EFI.
Voici l'ESP sur le PC utilisé pour écrire cette page :

Vous pouvez voir dans l'ESP et plus précisément dans /boot/EFI/EFI qu'il y a trois dossiers appelés /boot/EFI/EFI/mageia, /boot/EFI/EFI/Microsoft et /boot/EFI/EFI/ubuntu. Chacun d'eux a été créé par l'installateur correspondant. Si Mageia avait été installé une seconde fois, il n'y aurait toujours qu'un seul dossier appelé /boot/EFI/EFI/mageia pour les deux installations.
Grub configuration
Principe
A chaque démarrage du PC, grub2.efi est exécuté, il agit selon son fichier de configuration appelé grub.cfg placé dans /boot/grub2/. Ce fichier n'est pas destiné à être modifié à la main, mais si vous en êtes capable et désirez le faire, alors faites le. grub.cfg est écrit dans un langage de script intégré qui possède une syntaxe assez similaire à celle du bash GNU et autres dérivés des shells Bourne.
Pour les autres, un outil appelé grub2-mkconfig peut très bien le faire. Il utilise un bouquet de scripts enregistrés dans /etc/grub.d et un fichier de configuration appelé /etc/default/grub. Ce fichier contient les paramètres du menu de grub2.efi qui sont lus par les scripts et écrits dans grub.cfg. C'est la partie personnalisation de grub2.efi. Cela signifie que pour modifier le menu de grub2.efi, vous aurez à éditer les scripts existants, ou à en créer de nouveaux, puis à mettre à jour le menu.
Les scripts de configuration
Regardons le dossier /etc/grub.d.

- 00_header, est le script qui charge les paramètres de GRUB depuis
/etc/default/grub, cela comprend le délai d'attente (avant de lancer l'entrée par défaut), l'entrée par défaut, et autres. - 10_linux, charge les entrées du menu pour la distribution qui installe
grub2.efi. - 20_linux_xen,
- 20_ppc_terminfo,
- 30_os-prober, est le script qui recherche tous les autres systèmes d'exploitation déjà installés sur les disques, et les ajoute au menu commencé par 10_linux.
- 40_custom, est un modèle que vous pouvez utiliser pour créer des entrées supplémentaires dans le menu.
- 41_custom
- 90_persistent
- 93_memtest, charge l'utilitaire memtest utility.
Avez vous noté la numérotation des noms de scripts ? elle définit l'ordre d’exécution. Cela signifie que 10_linux sera exécuté avant 30_os-prober et donc ses entrées placées plus haut dans le menu.
Comme pour le fichier /boot/grub2/grub.cfg, ils ne sont pas destinés à être modifiés, sauf 40_custom et 41_custom. Vous devez être prudent avec ces scripts. Ils sont destinés à être exécutés, ils doivent donc avoir le bit d’exécution activé. Pour ne pas exécuter un script, ne pas l'effacer, simplement désactiver le bit d'éxécution,
Il est possible de placer autant de fichiers que désirés dans le répertoire /etc/grub.d, tous les scripts exécutables seront lus dans l'ordre de leur numérotation.
Les fichiers de configuration
Le principal fichier de configuration est /etc/default/grub, il est utilisé par le script 00_header

- GRUB_DISABLE_OS_PROBER= autorise ou non OS_PROBER à rechercher tous les systèmes d'exploitation installés sur les disques et à créer une entrée pour chacun d'eux dans le menu.
- GRUB_CMDLINE_LINUX_DEFAULT= permet d'ajouter des options au noyau.
- GRUB_THEME= spécifie le thème par défaut.
- GRUB_TIMEOUT= spécifie le délai d'attente par défaut. Mettre -1 fera attendre
grub2indéfiniment jusqu'à la sélection manuelle d'une entrée puis l'appui sur la touche entrée.
Il y a beaucoup d'autres options, voir all the valid keys (en anglais)
Vous pouvez également utiliser un autre fichier de configuration : /boot/grub2/custom.cfg

Convention de nommage
Elle est différente de celle de grub-legacy.
- les disques durs et SSD sont désignés par hd et les disquettes par fd, ils sont comptés depuis 0, hd0 pour sda, hd1 pour sdb, ...
- les partitions sont désignées par gpt et sont comptées depuis 1, gpt1 pour la première, gpt2 pour la seconde, ...
exemple: sdb4 est appelé hd1,gpt4
Si un chemin est ajouté après le lecteur et la partition, utiliser les parenthèses, exemple: (hd0,gpt4)/boot/grub2
Menu modification
Menu par défaut

voici le menu obtenu par défaut dans le cas ou vous avez installé Windows 10, puis Ubuntu et enfin Mageia 5. Parce qu'il est le dernier installé, Mageia est en première ligne et est démarré par défaut.
La seconde ligne est un sous-menu où sont le mode secours de Mageia et les précédents noyaux. Ces deux lignes ont été écrites par le script 10_linux.
La troisième ligne concerne Windows
Enfin la quatrième ligne démarre Ubuntu et la cinquième est aussi un sous-menu où sont le mode secours de Ubuntu et les précédents noyaux. Ces trois dernières lignes ont été écrites par le script 30_os-prober.
Effacer des entrées
Si le script 30_os-prober est inactivé, vous obtiendrez un menu minimal avec seulement les entrées Mageia. Le meilleur moyen d'obtenir cela est de modifier le fichier /etc/default/grub, remplacer "false" par "true" dans l'option "GRUB_DISABLE_OS_PROBER="

Vous devez maintenant mettre à jour le fichier /boot/grub2/grub.cfg avec la commande grub2-mkconfig -o /boot/grub2/grub.cfg.

Vous obtenez ce menu minimal
| Remarque : La commande update-grub est un alias de grub2-mkconfig -o /boot/grub2/grub.cfg
|
Ajouter une entrée
Pour ajouter une entrée, il est possible d'utiliser le script 40_custom mais nous allons plutôt écrire un nouveau script car de cette façon on peut choisir l'emplacement de la nouvelle entrée dans le menu en modifiant la place du script dans le dossier /etc/grub.d.
Pour écrire un nouveau script pour une nouvelle entrée d'Ubuntu par exemple, nous pouvons copier/coller la partie du fichier /boot/grub2/grub.cfg écrite par le script 30_os-prober :
- s'assurer que
30_os-proberest activé dans/etc/default/grub - générer
grub.cfgavecupdate-grubet chercher la partie qui crée l'entréeUbuntu. Vous la trouverez après le commentaire :### BEGIN /etc/grub.d/30_os-prober###. La première partie concerne l'entrée pourWindows, puis vient l'entrée pourUbuntu(arrière plan en bleu-gris dans la copie d'écran ci-dessous) et enfin le sous-menu d'Ubuntu.
- Sélectionner l'entrée
Ubuntu(plus le sous menu si vous voulez, mais il est beaucoup plus long que ce qui est affiché dans la copie d'écran) et copiez/collez le dans le fichier script appelé par exemple50_custom, ajoputer les lignes "#!/bin/sh", "cat <<EOF" et "EOF" comme montré dans la copie d'écran ci-dessous, enregistrer50_customdans le dossier/etc/grub.det le rendre exécutable.
- désactiver
30_os-proberet générergrub.cfgà nouveau - voici le nouveau menu
Il est aussi possible de créer une entrée pour arrêter ou redémarrer le système. Simplement créer le script comme présenté ci-dessous, l'appeler 60_custom. Vous pouvez créer les deux entrées dans le même script ou bien créer deux scripts.

Ne pas oublier de rendre les scripts exécutables et de régénérer le fichier grub.cfg
Voici le nouveau menu

Changer l'ordre des entrées
Il est facile de changer l'ordre des entrées dans le menu grub2, il suffit de modifier la numérotation des scripts dans le dossier /etc/grub.d. Par exemple, pour avoir Ubuntu en première ligne, renommer 50_custom par 04_custom et regenerer le fichier grub.cfg.

Modifier le titre des entrées
Le script qui crée une entrée commence toujours par :
| menuentry 'Title' <options> { ... ... |
Le texte entre les guillemets simples est libre et constitue le titre affiché dans le menu grub2.
Par exemple, pour Ubuntu, le titre est souligné dans la copie d'écran ci-dessous, vous pouvez le changer par ce que vous voulez, par exemple 'New title for Ubuntu'

| Remarque : Vous pourriez aussi changer le titre en modifiant le fichier grub.cfg, mais en procédant ainsi, le nouveau titre ne survivrai pas à une régénération du fichier grub.cfg
|
Grub-customizer
Grub-customizer est un outil graphique destiné à la gestion des principaux paramètres de grub2. Il est présent dans les dépôts de Mageia.
Dans le premier onglet, on peut reconnaître notre menu avec quatre entrées et un sous-menu. Il est possible ici de modifier le titre des entrées, de créer ou de supprimer une entrée et de modifier leur ordre.

Le second onglet est évident, excepté la case à cocher "Recherche d'autres systèmes d'exploitation", si elle est cochée, le script {file|30_os-prober}} est activé. Le bouton "Paramètres avancés" permet de sélectionner les options du fichier /etc/default.

Le dernier onglet traite de la résolution et des thèmes. Le bouton "Paramètres avancés" est le même que ci-dessus.

Pour plus d'informations, voir https://launchpad.net/grub-customizer
Interagir avec le firmware UEFI
Ne confondez pas le chargeur d'amorçage (boot loader), grub2-efi dans notre cas, installé par le système d'exploitation et le gestionnaire de boot UEFI qui est partie du logiciel UEFI livré avec votre carte mère. Chaque fois que vous installez un nouveau système d'exploitation, celui-ci crée une entrée dans le gestionnaire de boot UEFI qui lance le chargeur d'amorçage. grub2-efi est indépendant du gestionnaire de boot, mais en cas de problème avec un chargeur d'amorçage, vous pouvez demander au gestionnaire de boot d'amorcer un autre système d'exploitation, en utilisant un autre chargeur d'amorçage.
Depuis Mageia
Avec la commande efibootmgr -v, vous pouvez voir les entrées UEFI :

BootCurrents indique quelle est l'entrée courante et Timeout est le délai d'attente avant utilisation de l'entrée par défaut, c'est à dire la première citée dans BootOrder.
Boot0002 est l'entrée produite par l'installation de mageia, Boot0004 par celle de Ubuntu et Boot0001 par celle de Windows.
Supposons que vous avez des problèmes avec grub2-efi qui bloque avant d'atteindre le menu. Vous pouvez alors essayer d'amorcer Ubuntu en changeant l'ordre d'amorçage grâce à cette commande :
| # efibootmgr -o 4,2 |
et l'entrée Ubuntu sera utilisée en premier, elle lancera le chargeur d'amorçage mis en place par l'installation de Ubuntu.
Pour plus d'informations concernant le gestionnaire de boot UEFI, voir efibootmgr
Depuis Windows
Pour choisir l'entrée par défaut, démarrer Windows et ouvrir une invite de commandes avec les droits administrateur :
Menu -> Tous les programmes -> Système Windows -> clic droit sur Invite de commandes -> Exécuter en tant qu'administrateur
Puis cliquer sur "Oui" dans la boite de dialogue et taper :
| bcdedit /set {bootmgr} path \EFI\<id>\grubx64.efi |
spécifie le nom du répertoire où grubx64.efi est copié, par exemple "mageia" ou "ubuntu", voir L'ESP.
Liens
- https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/
- http://dedoimedo.com/computers/grub-2.html
- http://fedoraproject.org/wiki/GRUB_2
- http://www.rodsbooks.com/efi-bootloaders/installation.html
- https://wiki.archlinux.org/index.php/GRUB#
- http://www.dedoimedo.com/computers/grub2-efi-recovery.html


