Aller au contenu

GNU GRUB

Un article de Wikipédia, l'encyclopédie libre.
GNU GRUB
Description de l'image Grub logo.png.
Description de l'image Debian Unstable GRUB2 (2015).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 [1]Voir et modifier les données sur Wikidata
Dernière version 2.12 ()[2]Voir et modifier les données sur Wikidata
Version avancée 2.12-rc1 ()[3]Voir et modifier les données sur Wikidata
Dépôt git.savannah.gnu.org/cgit/grub.gitVoir et modifier les données sur Wikidata
Écrit en CetassembleurVoir et modifier les données sur Wikidata
Système d'exploitation GNU/Linux,GNU/Hurd(d)etBSDVoir et modifier les données sur Wikidata
Environnement IA-32,x86-64etPowerPCVoir 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(acronymesignifiant en anglais «GRandUnifiedBootloader») est unprogramme d'amorçagedemicro-ordinateur.Il s'exécute à la mise sous tension de l'ordinateur, après les séquences de contrôle interne et avant lesystème d'exploitationproprement dit, puisque son rôle est justement d'en organiser le chargement. Lorsque l'ordinateur héberge plusieurs systèmes (on parle alors demulti-amorçage), il permet à l'utilisateur de choisir quel système démarrer.

C'est unlogiciel libre.Il permet l'amorçage de systèmesGNU/LinuxouWindows(ainsi que d'autres systèmes moins répandusFreeBSDetOpenBSD,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 diverssystèmes de fichiersexistants. Il possède également une sorte de langage de commande simple permettant de « rattraper » unamorçagequi se serait mal passé, à la suite du mauvais adressage d'unepartition,par exemple.

Grub doit être capable de reconnaîtretousles 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

[modifier|modifier le code]
  • Contrairement à LILO, GRUB n'a pas besoin d'être réinstallé pour mettre à jour sa configuration. GRUB prend en compte les modifications de son fichier de configuration dynamiquement.
  • Au cas où le fichier de configuration serait incorrect, GRUB peut fournir uninterpréteur de commandespour permettre à l'utilisateur de charger unsystème d'exploitationmanuellement.
  • GRUB est très portable: il permet de charger aussi bien des systèmes compatibles avec le multiboot que des systèmes non-compatibles avec cette fonction (commeMicrosoft Windows). GRUB prend en charge beaucoup de systèmes de fichiers commeext3,VFATouNTFS.GRUB est également compatible avec le modeLogical block addressing(LBA).
  • GRUB peut être utilisé avec différentes interfaces. Beaucoup de distributions GNU/Linux utilisent la prise en charge graphique de GRUB pour afficher au démarrage de l'ordinateur un menu avec une image de fond, et parfois une prise en charge de la souris.
  • GRUB peut télécharger des images desystèmes d'exploitationdepuis un réseau, ce qui permet d'amorcer un système sur les ordinateurs sans disques. GRUB peut décompresser ces images pour les charger ensuite.
  • GRUB prend également en charge des systèmes d'exploitation non Linux via le chargement en chaîne (chain loading) d'un autre bootloader tel ceux de Windows, ou une autre version de lui-même (coexistence entre Grub Legacy (version 1) et Grub2).

Fonctionnement

[modifier|modifier le code]
GRUB Customizer
GNU GRUB onMBR-partitioned hard disk drives.
GNU GRUB onGPT-partitioned hard disk drives.
boot.imga la taille de 446 octets et est écrit dans leMBR(secteur 0).core.imgest é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/grubpeut être situé sur une partition distincte, ou sur la partition /.

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

GRUB version 1

[modifier|modifier le code]

LeMBRcontient 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 duMBR,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 leMBR.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

[modifier|modifier le code]

Ceci est proche de la version 1 de GRUB,boot.imgest rangé dans leMBRou le secteur de démarrage de volume comme la partie 1; toutefois, il peut charger un secteur depuis n'importe quelle adresseLBA48.Ceci charge le premier secteur decore.img(généré depuisdiskboot.img) qui est ensuite utilisé pour charger le reste du fichier générécore.img.Le fichiercore.imgest 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 fichiercore.imgcharge les fichiers de configurations et les autres modules nécessaires.

GRUB est chargé

[modifier|modifier le code]

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 unnoyaupré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 leMBR.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.

À 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 commandegrub-installest 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 distributionDebianGNU/Linux, ce fichier est situé dans/boot/grub/grub.cfg,alors queFedorale place dans/boot/grub/grub.conf(ce dernier utilise unlien symboliqueà l'emplacement/etc/grub.confet qui pointe vers/boot/grub/grub.confpour des raisons de compatibilité).

De plus, GRUB peut être installé sur un disque amovible, comme unedisquette,un CD ou uneclé USBpour charger un système qui ne pourrait démarrer directement depuis son propre disque.

Configuration basique

[modifier|modifier le code]

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

  • le périphérique où se trouve le noyau (kernel):
hd0: correspond au premier disque,
hd1: correspond au deuxième disque,
hd0,2: correspond au premier disque,3epartition Grub Legacy,2epartition Grub2[4]
  • Le nom dukernel;
  • Le nom duinitrdsi besoin;
  • Puis:boot.

Grâce à un système depromptinteractif, GRUB gère lacomplétion,ceci permet de retrouver les noms dedisque/kernel/initrd si le menu de chargement ne fonctionne plus.

Dans le fichier /boot/grub/menu.lst, se trouvent les éléments de couleurs ettimeoutpour le menu. Le paramètredefaultpermet de présélectionner lekernelà charger. Par la suite sont définis les uns en dessous des autres leskernelqu'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

[modifier|modifier le code]

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

Véritable suite de GRUB, GNU GRUB 2 est la nouvelle version par défaut progressivement adoptée par plusieursdistributionsGNU/Linux.Les développeurs prévoient donc[5]:

  • de pouvoir scripter GRUB, avec des structures comme les boucles ou les conditions;
  • une interface graphique;
  • un système pour charger lesmodulesà l'exécution, plutôt que d'alourdir la compilation;
  • une portabilité accrue;
  • la prise en charge des caractères non-ASCII;
  • la prise en charge du système de fichiersext4depuis le;
  • le nouveau système de fichiersbtrfs;
  • une meilleure accessibilité (système d'étiquettes vocales…).

Plusieurs autres projets maintiennent leurs propres améliorations (fork) au code de GRUB Legacy. Ceci inclutSuper Grub Disk(les nouvelles commandes incluent "setgrubdevice" et "usbshift" ) etGRUB4DOS. OpenSolarisutilise 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 depuisZFS(avec compression et environnements de multi-démarrage)[6],[7].Le projetSyllable OSa fait une version modifiée de GRUB pour charger le système depuis le système de fichiers AtheOS[8].

Notes et références

[modifier|modifier le code]
  1. «https://www.gnu.org/software/grub/manual/grub.html#History»(consulté le)
  2. Daniel Kiper, «GRUB 2.12 released»,(consulté le)
  3. «GRUB 2.12 release candidate 1»,
  4. http://ubuntuforums.org/showpost.php?s=13e274036ad7b03c3f500520b490742e&p=8162655&postcount=4
  5. (en)Liste complète des fonctionnalités
  6. 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
  7. x86: Supported GRUB Implementations,(System Administration Guide: Basic Administration) - Sun Microsystems
  8. 2.3 Why does Syllable have its own version of GRUB?,Syllable Documentation, Syllable

Autres chargeurs d'amorçage

[modifier|modifier le code]

Liens externes

[modifier|modifier le code]