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.efi
dans l'ESP, - il a écrit les scripts de configuration dans le dossier
/etc/grud.d
et 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-efi
et 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
grub2
indé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-prober
est activé dans/etc/default/grub
- générer
grub.cfg
avecupdate-grub
et 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_custom
dans le dossier/etc/grub.d
et le rendre exécutable.
- désactiver
30_os-prober
et 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