GNU GRUB

GNU GRUB
Description de l'image Grub logo.png.
Description de l'image GRUB 2's boot menu.png.
Informations
Créateur Erich Boleyn (d)Voir et modifier les données sur Wikidata
Développé par Projet GNUVoir et modifier les données sur Wikidata
Première version Voir et modifier les données sur Wikidata
Dernière version 2.14 ()Voir et modifier les données sur Wikidata
Dépôt gitlab.freedesktop.org/gnu-grub/grubVoir et modifier les données sur Wikidata
Écrit en C et assembleurVoir et modifier les données sur Wikidata
Système d'exploitation GNU/Linux, GNU/Hurd (d) et BSDVoir et modifier les données sur Wikidata
Environnement IA-32, X64 et PowerPCVoir et modifier les données sur Wikidata
Type Paquet GNU
Chargeur d'amorçageVoir et modifier les données sur Wikidata
Licence Licence publique générale GNU version 3 ou ultérieureVoir et modifier les données sur Wikidata
Documentation www.gnu.org/software/grub/manual/grubVoir et modifier les données sur Wikidata
Site web www.gnu.org/software/grubVoir et modifier les données sur Wikidata

Chronologie des versions

StartUp-Manager.

GNU GRUB (acronyme signifiant en anglais « GRand Unified Bootloader ») est un programme d'amorçage de micro-ordinateur. Il s'exécute à la mise sous tension de l'ordinateur, après les séquences de contrôle interne et avant le système d'exploitation proprement dit, puisque son rôle est justement d'en organiser le chargement. Lorsque l'ordinateur héberge plusieurs systèmes (on parle alors de multi-amorçage), il permet à l'utilisateur de choisir quel système démarrer.

C'est un logiciel libre. Il permet l'amorçage de systèmes GNU/Linux ou Windows (ainsi que d'autres systèmes moins répandus FreeBSD et OpenBSD, Hurd, Solaris), la lecture de la configuration au démarrage (pas besoin de réinstaller GRUB dans le secteur d'amorçage après un changement de configuration, contrairement à LILO), une ligne de commande permettant de changer la configuration au démarrage et surtout la reconnaissance en natif de divers systèmes de fichiers existants. Il possède également une sorte de langage de commande simple permettant de « rattraper » un amorçage qui se serait mal passé, à la suite du mauvais adressage d'une partition, par exemple.

Grub doit être capable de reconnaître tous les systèmes de fichiers sur lesquels il pourrait être amené à démarrer. Il est pour cette raison beaucoup plus volumineux que LILO.

Il fait partie du projet GNU.

Fonctionnalités

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet article contient une ou plusieurs listes ().

Ces listes gagneraient à être rédigées sous la forme de paragraphes synthétiques, plus agréables à la lecture, les listes pouvant être aussi introduites par une partie rédigée et sourcée, de façon à bien resituer les différents items.
D'autre part, Wikipédia n'a pas pour rôle de constituer une base de données et privilégie un contenu encyclopédique plutôt que la recherche de l'exhaustivité.

Limitations

Distribution géographique des différents claviers en Europe :
L'interaction entre Grub et le monde extérieur se fait au travers de périphériques qui eux aussi peuvent requérir une initialisation ou une configuration.
  • QWERTY ;
  • QWERTZ ;
  • AZERTY ;
  • Dispositions nationales (notamment turque FGĞIOD, lettonne ŪGJRMV et lituanienne ĄŽERTY) ;
  • Écritures non latines.

Gestion du clavier

Grub est souvent configuré en mode QWERTY des Etats-Unis, qui peut différer des claviers présents dans le reste du monde, comme le clavier AZERTY, notamment pour les touches du clavier comme A, Z, Q ou W et M.

Grub dispose aussi d'un shell en mode interactif qui est prévu pour fonctionner avec un clavier QWERTY, ceci pouvant poser des difficultés dans des pays n'utilisant pas de clavier QWERTY.

L'utilisation de Grub avec un clavier français est possible :

  • soit avec un paramétrage spécifique de Grub. Grub dispose d'un fichier de configuration: /etc/default/grub en version v2.
  • soit avec un outil comme la commande grub-kbdcomp qui utilise l'outil ckbcomp,.

Ces problématiques de configuration de Grub peuvent affecter négativement la saisie d'un mot de passe.

Gestion de l'écran

Grub dispose également de commandes qui permettent à un écran de fonctionner en mode graphique,

Fonctionnement

GRUB Customizer
GNU GRUB on MBR-partitioned hard disk drives.
GNU GRUB on GPT-partitioned hard disk drives.
boot.img a la taille de 446 octets et est écrit dans le MBR (secteur 0). core.img est écrit dans les secteurs vides entre le MBR et la première partition, si disponible (pour des raisons historiques la première partition démarre au secteur 63 au lieu du 1, mais ce n'est pas obligatoire). Le répertoire /boot/grub peut être situé sur une partition distincte, ou sur la partition /.

Quand l'ordinateur est allumé, le BIOS cherche le premier périphérique bootable (habituellement le disque dur), charge le secteur d'amorçage ou Master Boot Record (MBR), correspondant aux 512 premiers octets de ce disque, puis transfère le contrôle à ce code.

GRUB version 1

Le MBR contient habituellement la partie 1 de GRUB, mais il peut aussi contenir un autre bootloader qui peut chaîner la partie 1 de GRUB depuis un autre secteur de boot, comme le début d'un autre disque ou une partition logique (de type DOS). À cause de la faible taille du MBR, la partie 1 se contente de charger la partie suivante de GRUB (qui elle peut se trouver n'importe où sur les 1024 premiers cylindres du disque). La partie 1 peut directement charger la partie 2, ou charger la partie 1.5, qui se trouve dans les 30 kilooctets suivant le MBR. Cette partie 1.5 charge ensuite la partie 2. La partie 1.5 peut contenir des pilotes pour pouvoir accéder à la partie 2.

GRUB version 2

Ceci est proche de la version 1 de GRUB, boot.img est rangé dans le MBR ou le secteur de démarrage de volume comme la partie 1 ; toutefois, il peut charger un secteur depuis n'importe quelle adresse LBA48. Ceci charge le premier secteur de core.img (généré depuis diskboot.img) qui est ensuite utilisé pour charger le reste du fichier généré core.img. Le fichier core.img est normalement rangé au même emplacement que la partie 1.5 avec les mêmes problèmes. Toutefois, il peut être déplacé dans un système de fichiers ou une partition avec moins de problème que le déplacement ou l'omission de la partie 1.5.

Une fois chargé le fichier core.img charge les fichiers de configurations et les autres modules nécessaires.

GRUB est chargé

Une fois que GRUB est chargé, il présente une interface qui permet à l'utilisateur de choisir quel système d'exploitation démarrer. Ceci prend normalement la forme d'un menu graphique. Si celui-ci n'est pas disponible, ou si l'utilisateur désire un contrôle direct, GRUB a sa propre invite de commande. L'utilisateur peut alors préciser manuellement les paramètres de démarrage. GRUB peut être réglé pour charger automatiquement un noyau précis après un délai d'attente défini par l'utilisateur.

Une fois que les options de démarrage ont été sélectionnées, GRUB charge le noyau choisi en mémoire et lui passe le contrôle. Sinon, GRUB peut passer le contrôle du démarrage à un autre chargeur, utilisant le chargement en chaîne. C'est cette méthode qui est utilisée pour charger des systèmes d'exploitation tels que Windows, qui ne supportent pas le multi-démarrage standard. Dans ce cas, des copies des chargeurs des autres programmes de démarrage ont été faites. Au lieu d'un noyau, l'autre système est chargé comme s'il avait été depuis le MBR. Ce peut être un autre chargeur de démarrage, comme le menu de démarrage de Microsoft, permettant la sélection du système d'exploitation.

Installation

À l'inverse de LILO, GRUB n'a pas besoin d'être réinstallé dans le MBR à chaque modification de son fichier de configuration.

Dans un système GNU/Linux, la commande grub-install est uniquement utilisée pour installer la Partie 1 de GRUB dans le MBR ou dans une partition. Les fichiers de configuration de GRUB doivent se trouver sur une partition utilisable, et dans le cas contraire, la Partie 1 exécute l'interpréteur de commandes automatiquement.

Le nom et l'emplacement de ce fichier varient d'un système à un autre. Par exemple, dans la distribution Debian GNU/Linux, ce fichier est situé dans /boot/grub/grub.cfg, alors que Fedora le place dans /boot/grub/grub.conf (ce dernier utilise un lien symbolique à l'emplacement /etc/grub.conf et qui pointe vers /boot/grub/grub.conf pour des raisons de compatibilité).

De plus, GRUB peut être installé sur un disque amovible, comme une disquette, un CD ou une clé USB pour charger un système qui ne pourrait démarrer directement depuis son propre disque.

Configuration basique

La configuration n'est pas extrêmement complexe, il faut connaître :

  hd0 : correspond au premier disque,
  hd1 : correspond au deuxième disque,
  hd0,2 : correspond au premier disque, 3e partition Grub Legacy, 2e partition Grub2

Grâce à un système de prompt interactif, GRUB gère la complétion, ceci permet de retrouver les noms de disque/kernel/initrd si le menu de chargement ne fonctionne plus.

Dans le fichier /boot/grub/menu.lst, se trouvent les éléments de couleurs et timeout pour le menu. Le paramètre default permet de présélectionner le kernel à charger. Par la suite sont définis les uns en dessous des autres les kernel qu'il est possible de charger.

 default 0
 timeout 5
 #
 foreground = ffffff
 background = 000000
 #
 splashimage=(hd0,1)/boot/grub/leaf_splash.xpm.gz
 #
 title Gentoo
 root (hd0,1)
 kernel /boot/vmlinuz root=/dev/sda2 quiet
 #
 title Windows
 root (hd1)
 chainloader +1

Pour la partie Microsoft, il n'y a pas de noyau spécifique à charger, l'astuce consiste à choisir le bon disque puis à débuter sur le premier octet de ce disque via « chainloader +1 ». La commande « boot » permet de lancer l'exécution.

Développement

Le terme « GRUB » fait généralement référence à GRUB Legacy. Cette version continue de recevoir des patchs, mais plus aucune nouvelle fonction n'est ajoutée. Les développeurs de GRUB ont décidé de se concentrer sur GRUB 2 : une réécriture complète du programme pour le rendre plus sûr, plus propre, plus puissant et plus robuste.

GNU GRUB 2

La nouvelle version GNU GRUB 2 pour succèder à GRUB est progressivement adoptée par plusieurs distributions GNU/Linux. Les développeurs prévoient donc :

Variantes

Plusieurs autres projets maintiennent leurs propres améliorations (fork) au code de GRUB Legacy. Ceci inclut Super Grub Disk (les nouvelles commandes incluent "setgrubdevice" et "usbshift") et GRUB4DOS. OpenSolaris utilise une version modifiée de GRUB Legacy qui prend en charge les noms de disque, la sélection automatique des noyaux 64 bits, et le démarrage depuis ZFS (avec compression et environnements de multi-démarrage),. Le projet Syllable OS a fait une version modifiée de GRUB pour charger le système depuis le système de fichiers AtheOS.

Histoire

GRUB est créé par Erich Boleyn pour démarrer le système d'exploitation GNU/Hurd, développé par la Free Software Foundation En 1999, Gordon Matzigkeit et Yoshinori K. Okuji font de GRUB un paquet logiciel officiel du GNU Project et ouvrent le processus de développement au public. Modèle:As of, la majorité des distributions Linux ont adopté GNU GRUB 2, mais c'est aussi le cas d'autres systèmes comme la PlayStation 4 de Sony.

Développement

GRUB version 0 (aussi dit "GRUB Legacy" en anglais) n'est plus développé et est progressivement abandonné. Les développeurs de GNU GRUB ont basculé leur focus sur GRUB 2, une réécriture complète cherchant à rendre GNU GRUB plus propre, plus robuste, plus portable et plus puissant. GRUB 2 s'appela d'abord PUPA. PUPA a été supporté par l' Information-technology Promotion Agency (IPA) au Japon. PUPA est intégré dans le développement GRUB 2 autour de 2002, quand GRUB version 0.9x est renommé GRUB Legacy.

Certains objectifs du projet GRUB 2 incluent la prise en charge des platforms non-x86, l'internationalisation et la localisation (i18n), les caractères non-ASCII, les modules à chargement dynamique, la gestion mémoire, un mini-langage de script, l'isolement de code spécifique aux plateformes (x86), et un atelier de travail orienté objet. GNU GRUB version 2.00 est officiellement publié le ,.

Trois des distributions Linux les plus utilisées utilisent GRUB 2 comme chargeur principal,,. La distribution Ubuntu l'adopte comme chargeur principal depuis sa version 9.10 version d'. La distribution Fedora suit avec Fedora 16 publié en . La distribution OpenSUSE adopte GRUB 2 comme chargeur principal avec sa version 12.2 publiée en . Le système Solaris adopte aussi GRUB 2 sur la plateforme x86 depuis Solaris 11.1 . Le logiciel Buildroot utilise aussi GNU GRUB sur des cibles x86 et x86_64.

Fin 2015, l'exploit de presser backspace 28 fois pour court-circuiter le login et le mot de passe est trouvé et résolu,.

Variantes

GNU GRUB est un logiciel libre, ainsi plusieurs variantes ont été créées. Parmi les plus notables, non fusionnées dans la branche principale de GRUB:

Notes et références

  1. ↑ « https://www.gnu.org/software/grub/manual/grub.html#History » (consulté le )
  2. ↑ Daniel Kiper, « GRUB 2.14 released » (consulté le )
  3. ↑ Michael Kofler, Linux : Installation, configuration et applications, , 720 p. (ISBN 9782744040887, lire en ligne), p. 42.
  4. ↑ GRUB_TERMINAL_INPUT avec la valeur at_keybord pour un clavier AZERTY français, par exemple
  5. ↑ Jean-Michel Léry, Unix & Linux : Utilisation et administration : avec plus de 400 exercices corrigés, , 832 p. (ISBN 9782340088429, lire en ligne), p. 522.
  6. ↑ par exemple avec la commande: "grub-kbdcomp -o /boot/grub/layouts/fr.gkb -layout fr"
  7. ↑ Unix & Linux - Utilisation et administration - avec plus de 400 exercices corrigés, page 527, Jean-Michel Léry, 2020
  8. ↑ Franck Huet et Christian Verhille, GNU/Linux Fedora, , 342 p. (ISBN 9782746037823, lire en ligne), p. 49.
  9. ↑ comme vbeinfo, videoinfo, video_load
  10. ↑ Il s'agit ici de le définition de l'écran en nombre de pixels en hauteur et en largeur
  11. ↑ https://askubuntu.com/questions/54067/how-to-safely-change-grub2-screen-resolution
  12. ↑ (en) « Ubuntu Forums - View Single Post », sur ubuntuforums.org via Wikiwix.
  13. ↑ (en) Liste complète des fonctionnalités
  14. ↑ x86: Modifying Boot Behavior by Editing the GRUB Menu at Boot Time, Modifying Solaris Boot Behavior on x86 Based Systems (Task Map) - System Administration Guide: Basic Administration
  15. ↑ x86: Supported GRUB Implementations, (System Administration Guide: Basic Administration) - Sun Microsystems
  16. ↑ 2.3 Why does Syllable have its own version of GRUB?, Syllable Documentation, Syllable
  17. 1 2 GRUB Manual – 1.2 Grub History « https://web.archive.org/web/20140416181331/https://www.gnu.org/software/grub/manual/html_node/History.html »(Archive.org • Wikiwix • Que faire ?), . Gnu.org (2012-06-23). Retrieved on 2012-12-01.
  18. ↑ « PS4 runs Orbis OS, a modified version of FreeBSD that's similar to Linux » [archive du ], sur extremetech.com, (consulté le )
  19. ↑ GNU GRUB – GRUB Legacy « https://web.archive.org/web/20140420104228/http://www.gnu.org/software/grub/grub-legacy.html »(Archive.org • Wikiwix • Que faire ?), . Gnu.org. Retrieved on 2012-12-01.
  20. ↑ (en) « GNU GRUB – GRUB 2 », sur gnu.org via Internet Archive (consulté le ).
  21. ↑ Paramètre nom obligatoire, Paramètre titre obligatoire, Paramètre liste obligatoire, (lire en ligne).
  22. ↑ Michael Larabel, « GRUB 2.00 Boot-Loader Officially Released » [archive du ], sur Phoronix.com (consulté le )
  23. ↑ (en) Tom Haddon, « An Introduction to Ubuntu », sur webjunction.org via Internet Archive, WebJunction, (consulté le ).
  24. ↑ Cory Janssen, « What is Red Hat Enterprise Linux (RHEL)? »(Archive.org • Wikiwix • Que faire ?), Technopedia (consulté le ).
  25. ↑ Sam Varghese, « SUSE chief lists progress since privatisation » [archive du ], (consulté le )
  26. ↑ « 9.10 Karmic GRUB version » [archive du ], sur distrowatch.com (consulté le ).
  27. ↑ GRUB 2 « https://web.archive.org/web/20120805080954/http://fedoraproject.org/wiki/GRUB_2 »(Archive.org • Wikiwix • Que faire ?), . FedoraProject. Retrieved on 2012-12-01.
  28. ↑ openSUSE:Upcoming features – openSUSE « https://web.archive.org/web/20120920065446/http://en.opensuse.org/openSUSE%3AUpcoming_features »(Archive.org • Wikiwix • Que faire ?), . En.opensuse.org. Retrieved on 2012-12-01.
  29. ↑ Solaris 11.1 « https://web.archive.org/web/20180619201612/http://www.oracle.com/technetwork/server-storage/solaris11/overview/solaris11-1-1845817.html »(Archive.org • Wikiwix • Que faire ?), . Oracle Retrieved 2015-03-19.
  30. ↑ (en) Swati Khandelwal, « You can Hack into a Linux Computer just by pressing 'Backspace' 28 times » [archive du ], sur thehackernews.com, (consulté le ).
  31. ↑ Hector Marco and et Ismael Ripoll, « Back to 28: Grub2 Authentication 0-Day » [archive du ], (consulté le )
  32. ↑ x86: Modifying Boot Behavior by Editing the GRUB Menu at Boot Time « https://web.archive.org/web/20110719115732/http://dlc.sun.com/osol/docs/content/SYSADV1/getov.html »(Archive.org • Wikiwix • Que faire ?), , Modifying Solaris Boot Behavior on x86 Based Systems (Task Map) – System Administration Guide: Basic Administration
  33. ↑ x86: Supported GRUB Implementations « https://web.archive.org/web/20091021160244/http://docs.sun.com/app/docs/doc/819-2379/getnk?a=view »(Archive.org • Wikiwix • Que faire ?), , (System Administration Guide: Basic Administration) – Sun Microsystems
  34. ↑ Tao Peng, « Grub4ext4 » [archive du ] (consulté le )
  35. ↑ 2.3 Why does Syllable have its own version of GRUB? « https://web.archive.org/web/20110107003333/http://web.syllable.org/documentation/FAQ.html »(Archive.org • Wikiwix • Que faire ?), , Syllable Documentation
  36. ↑ (en) « TrustedGRUB project » [archive du ], sur sourceforge.net, (consulté le ).
  37. ↑ BIOS Implementation Test Suite « https://web.archive.org/web/20161019132535/https://biosbits.org/ »(Archive.org • Wikiwix • Que faire ?), , Official BITS website
  38. ↑ « grub4dos » [archive du ], sur Google Site (consulté le )
  39. ↑ « GRUB for DOS Introduction » [archive du ], sur grub4dos.sourceforge.net, (consulté le )
  40. ↑ GNU GRUB sur GitHub

Voir aussi

Autres chargeurs d'amorçage

Liens externes