SDB:GRUB2 sur une machine BIOS

Aller à : navigation, rechercher
Cette page traite de l'utilisation de GRUB – version GRUB2 par opposition à GRUB Legacy – sur des systèmes utilisant le micro-logiciel dit BIOS. Ne sont abordés ici, ni le cas du micro-logiciel UEFI, ni le problème du partitionnement, sauf pour signaler une exigence particulière de GRUB liée à l'utilisation d'un partitionnement GPT qui, signalons le, reste possible avec un BIOS.

Dans une première partie nous aborderons ce qu'il faut absolument savoir pour utiliser GRUB2 pour un fonctionnement multi-démarrages.

Dans une deuxième partie, nous aborderons certains réglages pouvant apporter du confort à l'utilisateur mais sans nous perdre dans les nombreuses personnalisations de valeur purement cosmétique et pour lesquelles, si vous avez du temps à perdre, il existe sur le Web de nombreux tutoriels, parfois un peu confus.


Testé sur openSUSE Articles recommendés Articles liés
Icon-checked.png

Icon-manual.png Icon-help.png


L'essentiel pour les gens sans exigence particulière

Partitionnement DOS ou GPT ?

Abordons tout de suite ce sujet pour dire que tout ce qui est dit ci-dessous est valable aussi bien pour une table de partitions dite « DOS », que pour une table de partitions dite « GPT » – voir le sens de ces termes sur la page SDB:Bases sur les partitions, systèmes de fichiers et point de montage. La seule condition supplémentaire pour un partitionnement GPT est de prévoir un partition de type BIOS Grub d'environ 2GO pour chacun des systèmes installés.

Bref rappel sur le démarrage d'un ordinateur équipé de Windows ?

Lorsqu'un ordinateur démarre, ses registres sont remis dans un état initial bien déterminé par les signaux électroniques, puis il exécute les instructions qu'il trouve à une adresse bien précise située dans une mémoire non volatile, l'adresse : 0xFFFF0. Les instructions en question forment un programme de base appelé BIOS pour Basic Input Output System - Système d'entrées sorties de base. Ce programme exécute alors les tests et l'initialisation de base des composants électroniques du système, ce qu'on appelle généralement l' auto-test à la mise en énergiePOST Power On Self Test (en).

Passé ce test, le programme saute à l'adresse du premier secteur du périphérique de démarrage. En général, c'est le premier disque dur mais cela peut avoir été modifié pour démarrer sur un CD/DVD, sur une clé USB, etc. Pour faire simple, considérons le cas d'un disque. Le premier secteur s'appelle le MBR est contient une zone de 446 octets qui contient un morceau de programme et une zone de 64 octets — la table des partitions — qui contient les descripteurs pour au maximum quatre partitions — on se reportera à la page SDB:Bases sur les partitions, systèmes de fichiers et point de montage pour des informations plus détaillées.

Le morceau de code situé dans le MBR s'appelle le chargeur primaire de démarragePBL Primary Boot Loader (en).

Par défaut, le chargeur primaire de démarrage recherche la partition dont le drapeau d'amorçageBoot Flag (en) – est positionné, charge le code de son secteur d'amorçage en mémoire et lui passe le contrôle. Ce deuxième morceau de code constitue en général le deuxième étage du chargeur de démarrage. C'est lui qui charge le système d'exploitation.

Le secteur d'amorçage d'une partition, à l'instar du MBR, est un secteur placé avant la partition disponible pour recevoir du code des chargeurs d'amorçage.


GRUB en vue aérienne

GRUB est d'abord un chargeur de démarrage – Boot Loader en anglais. On verra qu'il est aussi un gestionnaire d'amorçageBoot Manager en anglais, dans le sens où il est capable de charger un système d'exploitation parmi plusieurs disponibles. Sans entrer dans les détails des commandes de GRUB pour le moment, disons qu'il comprend lui aussi deux étages:

  • Un premier étage contenu dans une image (un fichier compressé le plus souvent) notée boot.img et appelée Boot Image – Image de démarrage en français — qui n'est modifiée, ni par les commandes de l'utilisateur de GRUB, ni par celles émanant de l'installateur YaST.
  • Un deuxième étage contenu dans une image notée core.img et appelée Core Image – Image de cœur en français. Contrairement à boot.img, core.img est fabriquée par les commandes GRUB lancées manuellement par l'utilisateur ou automatiquement par des programmes d'installation tels que YaST.

Comment les choses se passent-t-elles avec GRUB lors d'une installation ?

Il semble évident, avec ce qui a été expliqué plus haut et que pour reprendre la main sur le processus du démarrage imposé par, pour ne prendre que l'exemple le plus courant, Windows, il faut remplacer le code situé dans les premiers 446 octets du MBR en y plaçant le premier étage, à savoir : l'image de boot.

En fait, les recommandations des développeurs de GRUB sont de placer GRUB dans le MRB Gap — « Vide après MBR » dont la définition est donnée plus haut. C'est d'ailleurs le choix par défaut de l'installateur.

Attention Arrêtons-nous aussi un moment sur le vocabulaire utilisé par beaucoup – y compris les développeurs de GRUB – et qui manque un peu de clarté ou de précision. Lorsque ces personnes disent « placer GRUB dans la partition » ou « placer GRUB dans le MBR » elles parlent essentiellement du deuxième étage – l'image de cœur. Le premier étage – l'image de boot – implicitement doit être placé soit dans le MBR, soit dans le VBR selon que l'on installe GRUB sur l'amorce du disque ou dans la partition. Losque GRUb est installé sur l'amorce du disque, l'image de cœur va dans le « vide après MBR » et lorsqu'il est installé dans la partition, cette dernière est placée quelque part sur le disque et son emplacement est indiqué dans les premiers octets de la partition. L'accès à ces premiers octets se fait par codage en dur des adresses, c'est à dire qu'à ce moment GRUB n'a pas encore besoin de comprendre les systèmes de fichiers des partitions.

Comment l'utilisateur renseigne-t-il l'installateur sur où installer GRUB ?

En fait il existe deux commutateurs qui ne sautent pas aux yeux car ils sont un peu noyés dans le texte récapitulatif de l'installation à laquelle il va être procédé après que l'utilisateur a définit tous les autres réglages. Il apparaissent dans la rubrique Amorçage de ce récapitulatif comme le montre la figure qui suit :

RécapInstallDétail1.png

Détail troublant qui pourrait amener à se poser des questions, les deux commutateurs ne sont pas exclusifs. Ainsi donc, avec deux commutateurs – nous avons quatre choix. Examinons à quoi ils conduisent l'un après l'autre :

Choix 1 - le choix proposé par défaut
* Installer le code d'amorçage dans le MBR
* Ne pas installer le code d'amorçage dans la partition <Nom de partition>

Avec ce choix, qui correspond à la solution préconisée par les développeurs de GRUB, l'image de cœur est installée dans le vide MBR et pointe sur le dernier système qui a procédé à cette installation dans le MBR – MBR pris au sens large de MBR + vide après MBR. Tous les systèmes détectés par GRUB sont accessibles y compris le dernier installé.

Choix 2
* Ne pas installer le code d'amorçage dans le MBR
* Installer le code d'amorçage dans la partition <Nom de partition>

Avec ce choix, qui n'est pas la solution préconisée par les développeurs de GRUB mais qui est acceptée, l'image de cœur est installée sur la partition et l'image de boot est placée dans le VBR. Comme rien n'a été modifié dans le secteur d'amorçage du disque, l'image de démarrage contenue dans le vide après MBR continue de pointer sur la configuration du dernier système à avoir installé GRUB dans le MBR – toujours au sens large. Le nouveau système ne sera pas accessible dans le menu présenté à l'utilisateur.

Choix 3
* Installer le code d'amorçage dans le MBR
* Installer le code d'amorçage dans la partition <Nom de partition>

Dans ce cas, GRUB est placé à la fois dans le MBR – au sens large – et dans la partition. Comme le secteur d'amorce du disque a été modifié, l'image de démarrage contenue dans le vide après MBR pointe sur la configuration définie par la nouvelle installation, et permet d'accéder à tout ce que GRUB a été capable de détecter; en général tous les systèmes installés.

Choix 4
* Ne pas installer le code d'amorçage dans le MBR
* Ne pas installer le code d'amorçage dans la partition <Nom de partition>

Ce cas fait l'objet d'un avertissement — voir image ci-dessous — si vous le conserver vous pourriez aboutir à un refus de démarrer que vous pourrez réparer ensuite — voir les moyens de récupération dans la suite de ce document.

Recap-install-2nons.png

L'installation d'openSUSE - cas typiques

Nous allons passer ici en revue, différents cas de l'installation d'openSUSE censés être les plus courants. Bien sûr notre propos ne porte que sur la problématique liée à GRUB.

L'ordinateur est seulement équipé de Windows et nous voulons un amorçage Dual Boot

Un amorçage dual boot signifie que nous voulons avoir la possibilité de démarrer, soit Windows, soit openSUSE.

On suppose ici que les partitions pour openSUSE sont réalisées, ce qui fait l'objet d'autres pages dans ce wiki.

Dans ce cas, l'utilisateur n'a pas beaucoup de questions à se poser. Il faut absolument remplacer ces 446 bits du MBR - le fameux chargeur primaire de démarrage — qui pointe sur le chargeur de démarrage de Windows – deuxième étage – lequel ignore le reste du monde. On choisira donc :

* Installer le code d'amorçage dans le MBR
* Ne pas installer le code d'amorçage dans la partition /dev/sd<lettre>/<chiffre>

On veut rajouter un système openSUSE à un ordinateur qui amorce déjà par GRUB plusieurs systèmes

Les deux possibilités

Dans ce cas, la question à se poser est simple. : « Est-ce que je veux conserver mon ancien menu tel qu'il était auparavant en lui ajoutant une ligne pour le nouveau système ? » ou bien, « Est-ce que j'accepte que le menu soit refait, en me présentant le dernier système installé en première ligne ? »

  • Si on choisit de refaire le menu, il faut prendre : « Installer le code d'amorçage dans le MBR ».
  • Si on veut conserver l'ordre du menu actuel, il faut prendre : « Installer le code d'amorçage dans la partition ».
Attention Comme cela a été dit précédemment, avec le deuxième choix le dernier système installé ne sera pas accessible par le menu. Il faudra démarrer le système qui a créé ce menu et, dans ce système, demander à GRUB d'analyser les disques pour refaire une configuration, puis la réinstaller dans le MBR depuis ce même système. Cela fait l'objet de la section suivante.


Comment ajouter au menu le dernier système installé pour lequel on a choisit « Installer le code d'amorçage dans la partition » ?

Dans un tel cas, démarrez le premier choix du menu – s'il n'y a pas eu d'intervention spéciale sur la configuration il s'agit du système qui règle le menu actuel. Ouvrez un terminal et entrez, en tant que super-utilisateur, la commande suivante :

root # grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Thème trouvé : /boot/grub2/themes/openSUSE/theme.txt
Image Linux trouvée : /boot/vmlinuz-4.1.15-8-default
Image mémoire initiale trouvée : /boot/initrd-4.1.15-8-default
Image Linux trouvée : /boot/vmlinuz-4.1.12-1-default
Image mémoire initiale trouvée : /boot/initrd-4.1.12-1-default
Found memtest image: /boot/memtest.bin
Ubuntu 15.10 (15.10) trouvé sur /dev/sda4
openSUSE 42.1 (x86_64) trouvé sur /dev/sda6
fait
Bien sûr la sortie de la commande va dépendre de ce qui est installé sur votre ordinateur.

Option Il se peut que vous ayez démarré un système autre que le premier dont vous voudriez utiliser le menu. Dans ce cas, à la commande précédente, vous devez ajouter la commande suivante :

root # grub2-install /dev/sd<lettre du disque>
Installing for i386-pc platform.
Installation terminée, sans erreur.

On veut complètement réinitialiser son ordinateur pour n'y installer qu'openSUSE

Que voilà un choix raisonnable et bien utile !

Refaire une nouvelle table de partitions

Dans ce cas, démarrer votre ordinateur sur un CDROM live de GParted – un logiciel de partitionnement libre et gratuit accessible dont vous aurez soin de télécharger et de graver sur disque l'image iso correspondant à l'architecture de votre ordinateur (32 ou 64 bits). Une fois GParted lancé, sélectionnez le disque de démarrage de votre ordinateur et choisissez de créer une nouvelle table de partitions de type DOS. Validez. Voilà c'est tout.

Installer openSUSE

Vous pouvez accepter toutes les propositions par défaut de l'installateur quant au partitionnement et quant à l'installation de GRUB. Bien sûr, selon votre niveau d'expertise vous pouvez vous écarter du modèle.

Au delà de l'essentiel

Dans cette partie, nous allons commencer à procéder à des peaufinages qui ne sont pas strictement indispensables mais qui peuvent apporter un peu de confort dans l'utilisation de votre ordinateur multi-démarrage.

Le fichier de configuration de base /etc/default/grub

En pratique, au moment du démarrage, le chargeur de démarrage, après avoir accompli certaines initialisation de base – comme celles qui consiste à installer les pilotes des systèmes de fichiers – utilise le fichier /boot/grub2/grub.cfg pour y lire les réglages effectués par l'utilisateur. Or il est vivement déconseillé – et inutile car celui-ci serait rapidement écrasé par les mises à jours – d'intervenir directement dans ce fichier.

Ce dernier est en effet produit par la commande 'grub2-mkconfig qui se sert d'un autre fichier – /etc/default/grub – pour le créer. C'est donc dans /etc/default/grub que toute la configuration de l'utilisateur doit avoir lieu.

Ce dernier est constitué de lignes toutes formées sur le modèle clé = <valeur>. C'est donc en jouant sur les valeurs des différentes clé que les choses se passent.

Attention L'intervention sur le fichier /etc/default/grub ne sert à rien si la commande suivante n'est pas exécutée tout de suite après :
root # grub2-mkconfig -o /boot/grub2/grub.cfg


Cet avertissement étant donné, voyons ce que nous pouvons faire avec /etc/default/grub

Choisir sur quel OS démarrer par défaut

La chose est simple il suffit d'intervenir sur la valeur de la clé GRUB_DEFAULT. On peut lui donner les valeurs suivantes :

  • saved pour démarrer sur l'OS choisi lors du dernier démarrage effectué ;
  • un numéro d'ordre, le numéro d'ordre dans la liste des entrées affichées par le menu. Par exemple GRUB_DEFAULT = 0 vous fera démarrer sur la première entrée de la liste ;
  • le titre même de l'entrée, ainsi si dans le fichiers /boot/grub2/grub.cf vous trouvez une entrée présentée comme suit :
    gmenuentry 'openSUSE Leap 42.1'  --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-c15e4510-ab66-4ed6-b2d1-d175ed46d64d' {
    vous pouvez écrire GRUB_DEFAULT = 'openSUSE Leap 42.1'

Maîtriser l'affichage du menu

Pour maîtriser l'affichage du menu, il faut jouer avec plusieurs clés.

  • GRUB_DEFAULT (déjà vue)
  • GRUB_TIME_OUT – en français temps d'attente : c'est le temps en secondes au bout duquel l'entrée par défaut sera démarrée si aucune intervention de l'utilisateur n'a lieu. Par défaut elle vaut 5. La valeur -1 équivaut à l'infini. Durant ce laps de temps, l'utilisateur peut utiliser les flèches vers le haut et vers le bas pour choisir une autre entrée. Cela nécessitera alors de presser la touche Entrée pour démarrer sur l'entrée choisie. L'utilisateur a aussi la possibilité d'écourter le temps d'attente sur l'entrée par défaut en pressant la touche Entrée.
  • GRUB_HIDDEN_TIME_OUT – en français, temps d'attente caché : ce paramètre est un peu plus subtil et réclame un peu d'attention car les méprises sont probables. C'est le temps pendant lequel GRUB attendra une intervention de l'utilisateur pour afficher le menu. Sans intervention de sa part, le menu ne sera pas affiché et l'entrée par défaut sera démarrée. Par contre si l'utilisateur presse une touche, le menu sera affiché comme il l'aurait été sans le recours à cette clé.
Attention Il semblerait que ce fonctionnement soit incompatible avec la valeur saved pour GRUB_DEFAULT.


Résumons-nous dans un tableau:

Cas typiques de gestion de l'affichage du menu de GRUB
Résultat recherché GRUB_DEFAULT GRUB_TIME_OUT GRUB_HIDDEN_TIME_OUT Observations
Affichage du menu pendant un temps égal à GRUB_TIME_OUT avant de démarrer sur l'entrée par défaut ou celle choisie par l'utilisateur. Le temps peut être écourté en pressant la touche Enter Valeur saved ou

le numéro d'ordre ou le titre.

<x> seconde(s) soit le temps laissé à l'utilisateur pour faire un autre choix que le choix par défaut La ligne est commentée (# en tête) pour ne pas utiliser la fonction C'est le cas par défaut après une nouvelle installation.
Démarrage sans affichage du menu sur l'entrée par défaut si l'utilisateur n'intervient pas mais possibilité d'intervenir pendant un certain laps de temps pour reprendre le fonctionnement précédent. Un numéro d'ordre ou

le titre, mais ne fonctionne pas avec saved.

<x> seconde(s) soit le temps laissé à l'utilisateur pour faire un autre choix que le choix par défaut <x> seconde(s) soit le temps laissé à l'utilisateur frapper une touche quelconque et reprendre le fonctionnement décrit plus haut avec affichage du menu Les temps GRUB_TIME_OUT et GRUB_HIDDEN_TIME_OUT se cumulent si l'utilisateur n'intervient pas.

On peut masquer l'affichage du décompteur de temps de GRUB_HIDDEN_TIME_OUT en positionnant la clé GRUB_HIDDEN_TIME_OUT_QUIET à la valeur true.

L'utilisateur recherche le démarrage le plus rapide possible sur l'entrée par défaut sans intervention de sa part. Il veut cependant pouvoir afficher le menu et faire un autre choix Un numéro d'ordre ou

le titre, mais ne fonctionne pas avec saved.

-1 0 Lorsque l'utilisateur affiche le menu pour faire un autre choix, il n'a aucune raison de se contraindre à choisir vite d'où le -1 du GRUB_TIME_OUT qui correspond à l'infini.