From Mageia wiki
Jump to: navigation, search


Drakconf multiflag.png
Autres langues
Deutsch ; English ; Français

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 de Grub2-efi et peut-être ré-écrit avec la commande grub2-mkconfig,
  • 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.
Grub2-14.png
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 :
Grub2-15.png
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.
Grub2-1.png

  • 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
Grub2-2.png

  • 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
Grub2-3.png

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

Grub2-sc1.png
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=" Grub2-4.png
Vous devez maintenant mettre à jour le fichier /boot/grub2/grub.cfg avec la commande grub2-mkconfig -o /boot/grub2/grub.cfg.
Grub2-5.png
Vous obtenez ce menu minimal
Grub2-sc2.png

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 avec update-grub et chercher la partie qui crée l'entrée Ubuntu. Vous la trouverez après le commentaire :### BEGIN /etc/grub.d/30_os-prober###. La première partie concerne l'entrée pour Windows, puis vient l'entrée pour Ubuntu (arrière plan en bleu-gris dans la copie d'écran ci-dessous) et enfin le sous-menu d'Ubuntu.

Grub2-6-fr.png

  • 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 exemple 50_custom, ajoputer les lignes "#!/bin/sh", "cat <<EOF" et "EOF" comme montré dans la copie d'écran ci-dessous, enregistrer 50_custom dans le dossier /etc/grub.d et le rendre exécutable.

Grub2-7.png

  • désactiver 30_os-prober et générer grub.cfg à nouveau
  • voici le nouveau menu

Grub2-sc3.png

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.
Grub2-9.png
Ne pas oublier de rendre les scripts exécutables et de régénérer le fichier grub.cfg
Voici le nouveau menu
Grub2-sc4.png

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.
Grub2-sc5.png

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'
Grub2-8.png
Grub2-sc6.png

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.
Grub2-11.png
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.
Grub2-12-fr.png
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.
Grub2-13.png

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 :
Grub2-16.png
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