====== GRUB 2 ======
* Objet : GRUB 2, le chargeur d'amorçage version 2.
* Suivi : {{tag>à-compléter}}
* Créé par [[user>smolski]] le 29/01/2010
* Mise à jour par **...** le ...
* Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=8925 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Introduction =====
GNU GRUB (GRand Unified Bootloader) est un chargeur de démarrage universel.
Parce qu'il est capable de charger presque **toutes sortes d'OS**, des OS dérivés d'UNIX : Linux, BSD etc, toute la gamme des windows. Parce qu'on peut l'installer sur tous les types de systèmes de fichiers Linux/Unix (ext2, ext3, reiserFs, autres…) Parce que Grub est //multiplateformes//, il marche sur plusieurs types de machines : PC, Mac, IBM, Sun.
//Aussi GRUB fait référence à UNIX, d'où sont tirés presque tous les OS, voilà pourquoi Grub utilise **la numérotation des disques d'UNIX**, différente de celle de Linux et de windows....//
==== Installation de GRUB ====
Le chargeur GRUB pour BIOS a deux façons d'installer son image principale :
- soit dans un espace réservé hors du système de fichiers (espace entre le MBR et la première partition, partition "BIOS boot", espace réservé dans une partition Btrfs...). C'est "l'embarquage", et la méthode préférée quand elle est possible.
- soit dans un fichier normal. Cela oblige GRUB à utiliser les "listes de blocs" pour repérer les secteurs physiques qui contiennent ce fichier. Mais comme il est indiqué, cette méthode est moins fiable car le système de fichiers peut déplacer les blocs de données d'un fichier dans d'autres secteurs physiques et il est impossible de l'empêcher (même l'attribut "immutable" activé avec chattr +i ne l'empêche pas), et la liste de blocs de GRUB ne pointerait plus vers les bons secteurs.
Quand on installe GRUB dans le MBR d'une partition, il utilise l'embarquage si :
- la table de partition est au format MBR/DOS et l'espace non alloué entre le MBR et la première partition est suffisant
- la table de partition est au format GPT et il existe une partition de type "BIOS boot" de taille suffisante.
Sinon, il doit utiliser les listes de blocs si la position de /boot/grub le permet.
Quand on installe GRUB dans le secteur d'amorce d'une partition, il utilise l'embarquage si le type de contenu de la partition le permet. Actuellement c'est le cas si la partition est de type Btrfs, et il y a un travail en cours (à moins que ce soit fini) pour que GRUB puisse utiliser l'espace réservé à cet effet d'une partition de type LVM. Sinon, il utilise les listes de blocs, ce qui nécessite d'exécuter grub-install avec l'option --force (ce que fait le script d'installation du paquet grub-pc).
A noter que l'utilisation des listes de blocs n'est pas toujours possible, notamment si /boot/grub n'est pas dans une partition simple (RAID, LVM, volume chiffré...).
//Merci à //**LaFouine**// et //**raleur**// pour cet apport dans la compréhension du GRUB//
==== clavier AZERTY/QWERTY ====
**raleur** : Une astuce concernant les histoires de clavier AZERTY/QWERTY : \\
il est possible de configurer le système pour charger la disposition du clavier plus tôt afin qu'elle soit active dans le shell de l'initramfs ou quand on change d'init. Il faut mettre :
KEYMAP=y
dans '' /etc/initramfs-tools/initramfs.conf '' et reconstruire l'initramfs avec
update-initramfs -u
À noter que cette option est implicitement activée quand la racine est chiffrée, ce qui permet de taper la passphrase de déchiffrement avec la bonne disposition de clavier.
Source du forum :
* https://debian-facile.org/viewtopic.php?pid=314165#p314165 \\
==== Lien vers le forum : ====
* https://debian-facile.org/viewtopic.php?pid=303404#p303404
==== Spécificités ====
Avant d'expliquer les détails du boot avec Grub, il faut avoir en tête cette différence fondamentale avec les autres bootloaders: Grub n'est pas qu'un simple bootloader.
* Grub est un mini système, autonome avec ses propres commandes (en console), qu'on peut installer n'importe où sur le disque, voire sur une disquette.
* Grub est un chargeur interactif.
Il affiche le menu de choix de boot, et il est possible d'en modifier les options au clavier, ce qui n'est pas possible avec d'autres simbles bootloaders comme LiLo.
Cependant, ce n'est pas très pratique de lancer votre OS habituel avec des commandes au clavier, aussi pour lancer vos OS, Grub utilise un fichier de configuration qui s'appelle ''grub.cfg''
Ainsi, grub met à la fois à disposition un menu défini par le grub.cfg et un mini-shell de secours, permettant d'effectuer les mêmes opérations manuellement.
==== Différences d'avec GRUB 1 ====
Avec **GRUB 2** :
- Nous ne rédigeons plus directement dans un fichier les modifications et ajouts des distributions tel que nous le faisions dans le //menu.lst// de **GRUB**.
- Nous rédigeons des ''scripts'' et complétons des ''modules'' qui se chargeront eux-mêmes de faire cette rédaction pour le //grub//.
Cet aspect déroutant à l'abord force la connaissance des débutants vers un apprentissage plus précoce et plus vigoureux de Debian. :-)
Pour ce tuto, nous avons choisi de séparer ces aspects complémentaires,
* depuis l'install,
* la reconnaissance des systèmes installés
* la modulation de la présentation et l'ouverture de ceux-ci.
=== Précisions ===
//ce que tu décris Naguam c'est le chainloading? Où une partie de GRUB s'installe dans une partition /boot (?) (le stage 2) et une autre partie est dans le premier secteur de disque (stage 1)//
Non, on parle de "chainloading" (ou chaînage) quand un chargeur d'amorçage lance un autre chargeur d'amorçage. Par exemple quand le programme d'amorce standard du MBR lance le secteur d'amorce de la partition active (schéma de Naguam), ou quand GRUB lance le GRUB d'un autre système, ou quand GRUB lance le chargeur d'amorçage de Windows (ntldr/bootmgr). Le chargement de l'étage suivant de GRUB par l'étage précédent de GRUB n'est pas du chaînage, c'est juste le processus de démarrage de GRUB.
Stage 1, 1.5 et 2 sont des notions propres à l'ancienne version GRUB 1/legacy. Dans la version actuelle GRUB 2 elles sont remplacées par la boot image (secteur d'amorce) et la core image. La boot image charge la core image qui charge les modules et la configuration installés dans /boot/grub.
La boot image et la core image sont obligatoirement sur le même disque, alors que /boot/grub peut être sur un disque différent. Cependant c'est une configuration à éviter car cela rend les deux disques dépendants l'un de l'autre, chacun contenant seulement une partie de GRUB.
Sur le forum :
* https://debian-facile.org/viewtopic.php?pid=289665#p289665 ;-)
===== Utilisation =====
* [[:doc:systeme:grub2:détail|Vision d'ensemble]]
- [[:doc:systeme:grub2:installation|Installation pas à pas.]]
- [[:doc:systeme:grub2:configuration-2 | Scripts systèmes]]. Ajouter des OS par exemple...
- [[:doc:systeme:noyau:grub2-modules | Configuration des modules]].
- [[:doc:systeme:grub2:desinstallation|GRUB 2 - Désinstallation et Réinstallation de GRUB]] //En cours de test...//
* Pour lire un peu de théorie : [[:doc:systeme:grub2:theorie|le processus de chargement de GRUB]].
===== Liens =====
* [[https://wiki.debian.org/fr/Grub|GRUB sur le wiki Debian]] 8-)
* [[http://www.linuxpedia.fr/doku.php/expert/grub2|GRUB 2 sur LinuxPedia]]
* [[http://www.gnu.org/software/grub/manual/|Documentation officielle]] (en)
* [[https://fr.wikipedia.org/wiki/GNU_GRUB|Présentation sur Wikipédia]]
===== Liens utiles sur le forum =====
* Forums \\ » Installation de Debian \\ » Sélecteur de démarrage de Grub » (résolu) \\ » [[https://debian-facile.org/viewtopic.php?id=20768]]
* Problème de GRUB après une mise à jour :
* https://debian-facile.org/viewtopic.php?id=25173 :-)