GRUB le manuel

De Wiki de la communauté Mandriva.

(Redirigé depuis GRUB, le manuel)
Cette page est en cours de traduction par Lebarhon depuis la version originale : [GNU GRUB Manual 0.97]

Si vous voulez aider à sa traduction, cliquez simplement sur l'onglet modifier. Vous pouvez contacter le traducteur en cliquant sur son nom et en modifiant sa page de discussion.

Consultez également les autres pages à traduire.

NdT signifie Nota du Traducteur et apporte des compléments de traduction ou d'information nécessaires à la compréhension. Ils ne sont pas dans le document original.

Lebarhon: Cette police indique un passage que je ne sais pas traduire

À noter !
Il existe une page moins technique à propos de grub.
Un manuel GNU

Ceci est la documentation de GNU GRUB, le Grand Unified Bootloader, un programme chargeur de boot souple et puissant pour PC.

Cette édition est la documentation de la version 0.97 (8 Mai 2005).

Copyright © 1999,2000,2001,2002,2004,2006 Free Software Foundation, Inc.

La permission est accordée de copier, distribuer et/ou modifier ce document conformément aux termes de la licence de la GNU Free Documentation, version 1.2 ou ultérieure publiée par la Free Software Foundation.

Licence de la documentation libre GNU License pour copier ce manuel.

Sommaire


Introduction à GRUB

Présentation

Brièvement, un chargeur de boot est le premier programme exécuté au démarrage d'un ordinateur. Il a en charge le chargement du noyau du système d'exploitation (tel que Linux ou GNU Mach) puis de lui transférer les commandes. Le noyau, à son tour, initialise le reste du système d'exploitation (par ex. un système GNU).

GNU GRUB est un chargeur de boot très puissant, il peut charger une grande variété de systèmes d'exploitation libres, ainsi que des systèmes propriétaires avec chain-loading (voir nota). GRUB est conçu pour répondre à la complexité du boot d'un ordinateur individuel; ensemble, le programme et ce manuel sont étroitement liés pour ce type d'ordinateur, bien que d'autres plate-formes seront possibles dans le futur.

Une des caractéristiques importantes de GRUB est sa souplesse; GRUB comprend les systèmes de fichiers et les formats exécutables du noyau, ainsi vous pouvez charger un système d'exploitation quelconque de la façon qui vous plaît, sans avoir à enregistrer la position physique du noyau sur le disque. Cela vous permet de charger le noyau simplement en spécifiant son nom de fichier, le lecteur et la partition ou il réside.

Pour booter avec GRUB, vous pouvez utiliser soit l'interface en ligne de commande (voir Interface en ligne de commande), ou l'interface menu). Avec l'interface en ligne de commande, vous entrez à la main la désignation du lecteur et le nom de fichier du noyau. Avec l'interface menu, vous choisissez simplement un OS en utilisant les touches fléchées. Le menu est basé sur un fichier de configuration que vous préparez au préalable (voir Configuration). Quand vous êtes dans le menu, vous pouvez passer en mode ligne de commande et vice versa. Vous pouvez même éditer les entrées du menu avant de les utiliser.

Dans les chapitres qui suivent, vous apprendrez comment spécifier un lecteur, une partition et un nom de fichier à GRUB (voir Conventions d'appellation), comment installer GRUB sur votre lecteur (Voir Installation), et comment booter sur vos OS (Voir Boot), pas à pas.

Aux côtés du chargeur de boot GRUB lui-même, il y a un shell grub appelé avec la commande grub (voir Invoquer le shell Grub) qui peut être exécuté alors que vous êtes dans le système d'exploitation. Il émule le chargeur de boot et peut être utilisé pour installer le chargeur de boot.

Nota: chain-loading ou chaînage est un mécanisme qui permet de charger des systèmes d'exploitation non supportés en chargeant un autre chargeur de boot. Il est typiquement utilisé pour charger DOS ou Windows.

Historique de GRUB

GRUB naquit en 1995 quand Erich Boleyn essayait de booter le GNU Hurd avec le micro noyau Mach 4 de l'université de Utah (maintenant connu sous le nom de GNU Mach). Erich and Brian Ford conçurent la spécification du multiboot (voir Spécification du multiboot), car ils étaient déterminés à ne pas ajouter un grand nombre de méthodes de boot de PC mutuellement incompatibles.

Erich commença alors la modification du chargeur de boot FreeBSD pour lui faire accepter le multiboot. Il comprit rapidement que se serait beaucoup plus facile d’écrire son propre chargeur de boot depuis la feuille blanche que de continuer à travailler sur le chargeur de boot de FreeBSD, et GRUB naquit ainsi.

Erich dota GRUB de nombreuses possibilités, mais d’autres priorités l’empêchèrent de continuer face aux exigences des utilisateurs dont le nombre augmentait rapidement. En 1999, Gordon Matzigkeit et Yoshinori K. Okuji ont admis GRUB en tant que paquetage officiel GNU, et ouvrirent son développement en rendant les dernières sources disponibles sur les CVS anonymes. Voir Obtenir et construire GRUB pour plus d’informations.

Caractéristiques de GRUB

La qualité primordiale de GRUB est de satisfaire aux exigences de la Spécification du Multiboot, qui est spécifiée dans Multiboot Specification.

Les autres objectifs, listés dans un ordre approximatif d’importance, sont :

  • Les fonctions fondamentales doivent être très simples à l’intention des utilisateurs finals
  • Riches de fonctionnalités à l’intention des experts et développeurs de noyau
  • Rétro-compatibilité pour booter FreeBSD, NetBSD, OpenBSD et Linux. Les noyaux propriétaires (tels que DOS, Windows NT et OS/2) sont supportés via la fonction chaînage (chain-loading).

A l’exception de modes de compatibilité spécifiques (chain-loading et le format pris en charge par Linux), tous les noyaux sont démarrés en grande partie conformément à la Spécification du Multiboot. Seuls les noyaux chargés au niveau de 1 mégaoctet et au-dessus sont actuellement supportés. Toute tentative de les charger en-dessous de cette limite provoquera immédiatement une défaillance et l’affichage d’un message d’erreur signalant le problème.

En plus des exigences ci-dessus, GRUB possède les caractéristiques suivantes (remarquez que la Spécification Multiboot n’exige pas toutes ces caractéristiques que GRUB possède) :

Reconnaissance de multiples formats exécutables 
Supporte beaucoup de variantes de a.out plus ELF. Les tables de symboles sont chargées aussi.
Supporte les noyaux non multiboot 
Supporte beaucoup de divers noyaux 32 bits libres qui respectent peu les exigences du multiboot (premiers FreeBSD, NetBSD, OpenBSD et Linux). Le chaînage (Chain-loading) des autres chargeurs de boot est aussi supporté.
Chargement de multiples modules 
Supporte pleinement la caractéristique multiboot de chargement de multiples modules
Chargement d’un fichier de configuration 
Supporte les fichiers texte de configuration lisibles par un humain avec des commandes de boot programmées. Vous pouvez aussi charger dynamiquement un autre fichier de configuration et enchâsser un fichier de configuration programmé dans un fichier image de GRUB. La liste des commandes (voir commandes) constitue un super-jeu de celles supportées en ligne de commande. Un exemple de fichier de configuration est donné dans Configuration
Dispose d’un menu en interface 
En interface, un menu présentant la liste des commandes de boot programmées, avec un temps d’expiration programmable, est disponible. Il n’existe pas de limite au nombre d’entrées de boot. L’implémentation actuelle a suffisamment d’espace pour plusieurs centaines.
Possède une interface flexible en ligne de commande 
Une interface flexible en ligne de commande plutôt réussie, accessible depuis le menu, est disponible pour modifier toute commande programmée, ou écrire entièrement un nouveau jeu de commandes de boot. Si aucun fichier de configuration n’est présent, GRUB renonce à la ligne de commande.
La liste des commandes (voir commandes) constitue un sous-jeu de celles supportées pour les fichiers de configuration. L’édition des commandes ressemble de près aux commandes du Bash en ligne de commande, avec l’auto-complétion des commandes grâce à TAB, les périphériques, les partitions et les fichiers étant dans un répertoire dépendant du contexte.
Supporte de multiples systèmes de fichiers 
Supporte de multiples systèmes de fichiers de façon transparente, plus une notation des listes de blocs explicite et utile. Les systèmes de fichiers actuellement supportés sont BSD FFS, DOS FAT16 et FAT32, Minix fs, Linux ext2fs, ReiserFS, JFS, XFS et VSTa fs. Voir Systèmes de fichiers pour plus d’informations.
Supporte la décompression automatique 
Peut décompresser les fichiers compressés avec gzip. Cette fonction est à la fois automatique et transparente pour l’utilisateur (C'est-à-dire toutes les fonctions agissent sur le contenu non compressé des fichiers spécifiés). Cela réduit grandement la taille des fichiers et le temps de chargement, un bénéfice particulièrement important pour les disquettes.
Il est concevable que des modules de noyaux doivent être chargés sous forme compressée, aussi une commande différente de chargement de modules peut être utilisée pour éviter la décompression des modules
Accède aux données de tout périphérique installé 
Supporte la lecture sur tout périphérique disquette ou disque dur reconnu par le BIOS, indépendamment de la configuration du périphérique racine (root device)
Est indépendant de la translation géométrique des lecteurs 
A la différence de nombreux autres chargeurs de boot, GRUB rend sans importance une translation de lecteur particulière. Un lecteur installé et fonctionnant avec une translation peut être converti dans une autre translation sans aucun effet pervers ou changement dans la configuration de GRUB.

Lebarhon: Je ne connais pas cette notion de translation des lecteurs. Correct ?'solaris: Le mot translation désigne l'action de déplacer quelque chose ou transfert (solaris...25-10-07)elisetendress: translation géométrique :http://fr.wikipedia.org/wiki/Translation_%28g%C3%A9om%C3%A9trie%29.

Détecte toute la RAM installée 
GRUB peut généralement détecter toute la RAM installée sur un PC compatible. Il utilise une technique avancée d’interrogation du BIOS pour trouver toutes les régions de la mémoire. Comme décrit dans la Spécification du Multiboot (voir Spécification du Multiboot), tous les noyaux ne font pas usage de cette information, mais GRUB la donne pour ceux qui l’utilisent.
Supporte le mode d’adressage des blocs logiques 
Lors des appels par les disques traditionnels (appelé mode CHS), il y a un problème de translation géométrique, ce qui fait que le BIOS ne peut pas accéder au-delà de 1024 cylindres, ainsi l’espace accessible est limité à 508 Mo pour le moins et au plus à 8Go. GRUB ne peut résoudre universellement ce problème, car aucune interface standard n’est utilisée par toutes ces machines. Cependant, plusieurs machines récentes possèdent une nouvelle interface, le mode d’adressage des blocs logiques (LBA). GRUB détecte automatiquement si le mode LBA est disponible et l’utilise si c’est le cas. En mode LBA, GRUB peut accéder à tout le disque
Supporte le boot en réseau 
GRUB est fondamentalement un chargeur de boot basé sur le disque, mais il supporte aussi le réseau. Vous pouvez charger des images d’OS depuis le réseau en utilisant le protocole TFTP.
Supporte les terminaux distants 
Pour supporter les ordinateurs sans console, GRUB fournit le support de terminaux distants, ainsi vous pouvez contrôler GRUB depuis un hôte distant. Seuls les terminaux série sont implémentés pour le moment.

Le rôle d'un chargeur de boot

Ce qui suit est une citation de Gordon Matzigkeit, un fanatique de GRUB :

Certaines personnes aiment donner la même importance à la fois au système d'exploitation et au noyau quand ils parlent de leur ordinateur, aussi ils peuvent dire qu'ils utilisent « GNU/Linux » or « GNU/Hurd ». D'autres semblent penser que le noyau est le plus important, aussi ils aiment appeler leur système d'exploitation « le système Linux ».
Moi, je crois que c'est une grande injustice, car le chargeur de boot est le plus important de tous les logiciels. J'ai l'habitude de faire référence au système ci-dessus sous le nom de système « LILO »(voir nota) ou « GRUB ».
Malheureusement, personne n'a jamais compris de quoi je parlais ; maintenant j'utilise simplement le mot « GNU » comme pseudonyme de GRUB.
Aussi, si jamais vous entendez quelqu'un parler de leur présumé système « GNU », rappelez vous qu'ils rendent hommage en fait au meilleur chargeur de boot des alentours ... GRUB!

Nous, les mainteneurs de GRUB, n'encourageons pas (habituellement) le niveau de fanatisme de Gordon, mais il aide à se rappeler que les chargeurs de boot méritent reconaissance. Nous espérons que vous apprécierez autant l'utilisation de GNU GRUB comme nous avons apprécié de l'écrire.

Nota : Le chargeur Linux (LInux LOader), un chargeur de boot que tout le monde utilise, mais que personne n'aime.

Conventions d'appellation

La syntaxe de désignation des lecteurs dans GRUB est légèrement différente de ce que vous avez pu voir jusque là dans votre système d'exploitation, et vous devez la connaître afin de pouvoir désigner un lecteur ou une partition.

Observez les exemples suivants avec leurs explications :

(fd0)

Avant toute chose, GRUB exige que le nom du périphérique soit compris entre '(' et ')'. Le fd signifie qu'il s'agit d'une disquette. Le nombre 0 est le numéro du lecteur, qui est compté à partir de zéro. Cette expression signifie que GRUB utilisera toute la disquette.

(hd0,1)

Ici, hd signifie qu'il s'agit d'un disque dur. Le premier entier 0 indique le numéro du lecteur, qui est le premier disque dur, tandis que le second entier, 1 indique le numéro de la partition (ou le numéro de tranche dans la terminologie BSD). Une fois de plus, notez que les numéros de partition sont comptés à partir de zéro, pas de un. Cette expression signifie la seconde partition du premier disque dur. Dans ce cas, GRUB utilise une partition du disque, au lieu du disque entier.

(NdT : hd concerne les disques durs IDE, les récents disques SATA sont désignés par sd).

(hd0,4)

Ceci spécifie la première partition étendue du premier disque dur. Notez que la numérotation des partitions étendues commence à 4, indépendamment du nombre de partitions présentes sur le disque dur.

(hd1,a)

Ceci désigne pour BSD la partition « a » du second disque dur. Si vous devez spécifier quel numéro de la tranche pc doit être utilisée, écrivez quelque chose comme cela : « (hd1,0,a) ». Si le numéro de la tranche pc est omis, GRUB recherche la première tranche pc qui a une partition BSD « a ».

Lebarhon : je ne suis pas sûr de l’expression "tranche pc" ? solaris : (segment)(portion) ex:si vous deviez spécifier quel segment du pc doit etre utilisée..... serais le mot pour définir : tranche pc selon moi ( solaris...25-10-07)

Bien sûr, pour accéder aux disques et partitions avec GRUB, vous avez besoin de mentionner la désignation du périphérique dans une commande, comme root (fd0) ou unhide (hd0,2). Pour vous aider à trouver par quel numéro une partition est désignée, les options de la ligne de commande GRUB permettent l’auto-complétion des arguments (voir l’interface en ligne de commande). Cela signifie, par exemple, que vous n’avez à taper que

root (

suivi d’un TAB, et GRUB affichera la liste des lecteurs, partitions et noms de fichier. Ainsi il devrait être assez facile de déterminer le nom de la partition désirée, même avec une connaissance minimum de la syntaxe.

Notez que GRUB ne fait pas la distinction entre IDE et SCSI. Il compte tout simplement les lecteurs depuis zéro, indépendamment de leur type. Normalement, tout numéro de lecteur IDE est inférieur à tout numéro de lecteur SCSI, bien que cela ne soit plus vrai si vous changez la séquence de boot en intervertissant des lecteurs IDE et SCSI dans le BIOS.

Maintenant la question est comment spécifier un fichier ? Une fois de plus, considérons un exemple :

(hd0,0)/vmlinuz

Ceci spécifie le fichier nommé vmlinuz, trouvé sur la première partition du premier disque dur. A noter que l’auto-complétion de l’argument fonctionne aussi avec les noms de fichier.

C’était facile, admettez le. Maintenant lisez le chapitre suivant pour découvrir comment installer GRUB sur votre lecteur.

Installation

Dans le but d’installer GRUB comme chargeur de boot, vous devez d’abord installer le système GRUB et les utilitaires dans votre système d’exploitation de type Unix (voir Obtenir et construire GRUB). Vous pouvez faire cela soit depuis le tarball source soit depuis un paquetage de votre système d’exploitation.

Une fois cela fait, vous devez installer le chargeur de boot sur un lecteur (disquette ou disque dur). Il y a deux façons de le faire – soit utiliser l’utilitaire grub-install (voir Invoquer grub-install) sur un OS de type Unix, soit en exécutant GRUB lui-même depuis une disquette. Les deux méthodes sont similaires, cependant l’utilitaire risque de détecter un lecteur erroné dans le BIOS, aussi vous devez être attentif.

Aussi, si vous installez GRUB sur un OS de type Unix, assurez vous d’avoir un disque de boot de secours, ainsi vous pourrez récupérer votre ordinateur si, par malchance, votre disque dur devenait inutilisable (non bootable).

GRUB contient des images de boot, qui sont normalement placées dans le répertoire /usr/lib/grub/i386-pc. Si vous n’utilisez pas grub-install, alors vous devez copier les fichiers stage1, stage2 et *stage1_5 dans le répertoire /boot/grub et exécuter grub-set-default (voir Invoquer grub-set-default) si vous avez l’intention d’utiliser ‘’default saved’’ (voir default) dans votre fichier de configuration.

Ci-après, le répertoire où les images GRUB sont initialement placées (normalement /usr/lib/grub/i386-pc sera appelé le "répertoire image", et le répertoire où le chargeur de boot doit les trouver (habituellement /boot/grub) sera appelé le "répertoire de boot".

Création d’une disquette de boot GRUB

Pour créer une disquette de boot GRUB, vous devez prendre les fichiers stage1 et stage2 du "répertoire image" et les écrire respectivement sur les premier et second blocs de la disquette.

Attention La procédure détruira toutes les données présentes sur la disquette.

Sur un système d’exploitation de type Unix, cela est réalisé avec les commandes suivantes :

 # cd /usr/lib/grub/i386-pc
     # dd if=stage1 of=/dev/fd0 bs=512 count=1
     1+0 records in
     1+0 records out
     # dd if=stage2 of=/dev/fd0 bs=512 seek=1
     153+1 records in
     153+1 records out
     #

Le nom de fichier du périphérique peut être différent. Consultez le manuel de votre OS.

Installation de GRUB nativement

Attention L’installation de stage1 de GRUB de cette manière effacera le secteur de boot normalement utilisé par un OS.

GRUB peut actuellement booter directement GNU Mach, Linux, FreeBSD, NetBSD et OpenBSD, aussi l’utiliser sur le secteur de boot (le premier secteur d’une partition) devrait convenir. Mais généralement, cela peut être une bonne idée de sauvegarder le premier secteur de la partition sur lequel vous installez le fichier stage1 de GRUB. Cela n’est pas aussi important si vous installez GRUB sur le premier secteur d’un disque dur, puisqu’il est facile de le réinitialiser (par exemple en exécutant FDISK/MBR depuis le DOS). (NdT : Sous Windows XP, utiliser la console de réparation)

Si vous décidez d’installer GRUB dans l’environnement natif, ce qui est vraiment préférable, vous devrez créer un disque de boot GRUB et rebooter votre ordinateur avec. Autrement voir Installer GRUB avec grub-install.

Une fois démarré, GRUB présentera l’interface en ligne de commande (voir L’interface en ligne de commande). Premièrement, indiquer à GRUB que le périphérique de root (voir nota) est la partition contenant le répertoire de boot, comme ceci :

grub> root (hd0,0)

Si vous n’êtes pas sûr de la partition qui contient ce répertoire, utilisez la commande find (voir find) , comme ceci :

grub> find /boot/grub/stage1

Cela recherchera le fichier /boot/grub/stage1 et présentera le périphérique qui contient ce fichier.

Une fois correctement établi le périphérique de root, exécutez la commande setup (voir setup) :

grub> setup (hd0)

Cette commande installera le chargeur de boot GRUB sur le Master Boot Record (MBR) du premier lecteur. Si vous désirez mettre GRUB dans le secteur de boot d’une partition au lieu du MBR, spécifier cette partition :

grub> setup (hd0,0)

Si vous installez GRUB dans une partition ou un lecteur autre que le(la) premier(ière), vous devez chaîner (NdT :chainload) GRUB depuis un autre chargeur de boot. Se reporter au manuel du chargeur de boot pour savoir comment chaîner GRUB.

Après l’utilisation de la commande setup, vous booterez avec GRUB sans la disquette GRUB. Voir le chapitre Boot pour trouver comment booter votre système d’exploitation avec GRUB.

Nota : Remarquez que le périphérique root de GRUB n’est pas nécessairement la partition de root de votre OS ; si vous avez besoin de spécifier une partition root pour votre OS, ajoutez l’argument dans la commande kernel.

Installer GRUB avec grub-install

Attention : Cette procédure est vraiment moins sûre car il existe plusieurs cas pour lesquels votre ordinateur ne pourra plus booter. Par exemple, la plupart des systèmes d’exploitation ne disent pas correctement à GRUB comment faire correspondre les lecteurs BIOS avec les périphériques de l’OS – GRUB sait mal deviner la table de correspondance. Cela réussira dans la plupart des cas, mais pas toujours. Cependant, GRUB vous fournit un fichier de correspondance appelé device map, que vous devez rectifier s’il est faux. Voir La table de correspondance pour plus de détails.

Si vous désirez malgré tout installer GRUB sous un OS de type Unix (tel que gnu), invoquez le programme grub-install (voir Invoquer grub-install) avec les droits du super utilisateur (root).

L’utilisation est fondamentalement très simple. Vous n’avez besoin que de spécifier un argument au programme, nommément, où installer le chargeur de boot. L’argument peut être soit un périphérique (comme /dev/hda) soit une partition spécifiée selon les règles de GRUB. Par exemple, sous Linux, ce qui suit installera GRUB dans le MBR du premier disque IDE :

# grub-install /dev/hda

De même , sous GNU/Hurd, cela produit le même effet :

# grub-install /dev/hd0

Si c’est le premier lecteur du BIOS, cela revient au même :

# grub-install '(hd0)'

Vous pouvez aussi omettre les parenthèses :

# grub-install hd0

Mais tous les exemples ci-dessus présument que GRUB doit utiliser les images placées dans le répertoire root. Si vous souhaitez que GRUB utilise les images placées dans un autre répertoire, vous devez spécifier l’option --root-directory. L’utilisation typique est la création d’une disquette GRUB de boot avec un système de fichiers. Voici un exemple :

# mke2fs /dev/fd0
# mount -t ext2 /dev/fd0 /mnt
# grub-install --root-directory=/mnt fd0
# umount /mnt

Un autre exemple lorsque vous avez une partition de boot séparée qui est montée dans /boot. Puisque GRUB est un chargeur de boot, il ignore complètement les points de montage. Ainsi, vous devez exécuter grub-install comme ceci :

# grub-install –root-directory=/boot /dev/hda

A propos, comme indiqué plus haut, il est assez difficile de deviner les lecteurs BIOS correctement sous un OS de type Unix. Ainsi, grub-install vous invitera à vérifier après l’installation si la correspondance des lecteurs est correct. Le format est défini dans La table de correspondance. Soyez très attentif. Si la sortie est fausse, il y a peu de chances que votre ordinateur puisse booter sans problèmes.

Remarquez que grub-install n’est en fait qu’un script shell et que la tâche est en réalité effectuée par le grub shell (voir Invoquer le shell Grub). En conséquence, vous pouvez exécuter grub directement pour installer GRUB, sans utiliser grub-install. Ne faites jamais cela, a moins que vous soyez très familier avec les composants internes de GRUB. Installer un chargeur de boot sur un système d’exploitation en cours d’exécution peut être extrêmement dangereux.

Créer un CDROM bootable GRUB

GRUB supporte le mode no emulation de la spécification « El Torito » (voir nota). Cela signifie que vous pouvez utiliser la totalité du CD ROM depuis GRUB et vous n’avez pas besoin de créer un fichier image sur disquette ou disque dur, ce qui peut créer des problèmes de compatibilité.

Pour booter depuis un CD ROM, GRUB utilise un stage 2 spécial appelé stage2_eltorito. Les seuls fichiers GRUB dont vous avez besoin dans votre CD ROM bootable sont ce stage2_eltorito et optionnellement un fichier de configuration menu.list. Vous n’avez pas besoin d’utiliser stage1 ou stage2, car EL Torito est différent des processus de boot standards.

Voici un exemple de procédure pour créer une image de CD ROM bootable. Premièrement, créer un répertoire chapeau pour contenir l’image bootable, disons 'iso' :

$ mkdir iso

Créer un répertoire pour GRUB :

$ mkdir -p iso/boot/grub

Copier le fichier stage2_eltorito :

$ cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub

Si désiré, créer le fichier de configuration menu.list dans iso/boot/grub (voir Configuration), et copier tous les fichiers et répertoires à placer sur le disque dans le répertoire iso/. Enfin, créer une image ISO9660 comme ceci :

$ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
         -boot-load-size 4 -boot-info-table -o grub.iso iso

Ceci produit un fichier appelé grub.iso, qui peut être gravé sur un CD (ou un DVD). mkisofs a déjà paramétré le disque pour qu’il boote sur le fichier boot/grub/stage2_eltorito, aussi il est inutile de paramétrer GRUB sur le disque. (Notez que le –boot –load –size 4 bit est requis pour la compatibilité avec le BIOS sur beaucoup d’anciennes machines).

Vous pouvez utiliser le périphérique '(cd)' pour accéder au CD ROM dans votre fichier de configuration. Ceci n’est pas exigé ; GRUB paramètre automatiquement le périphérique root à '(cd)' lors du boot depuis un CD ROM. Il n’est nécessaire de se référer à '(cd)' seulement si vous désirez accéder à d’autres lecteurs.

Nota : EL Torito est une spécification pour les CD bootables utilisant les fonctions BIOS.

Boot

GRUB peut charger des noyaux compatibles multiboot de façon cohérente, mais pour quelques systèmes d'exploitation libres vous devez utiliser des astuces spécifiques à l'OS.

Comment booter les systèmes d'exploitation

GRUB possède deux méthodes distinctes de boot. l'une est de charger l'OS directement, et l'autre est de chainer un autre chargeur de boot qui, alors, chargera le système d'exploitation. Généralement, la première méthode est préférable, car vous n'avez pas besoin d'installer ni de maintenir les autres chargeurs et GRUB est suffisamment flexible pour charger un système d'exploitation depuis n'importe quel disque ou partition. Cependant, la deuxième est quelque fois requise, puisque GRUB ne supporte pas nativement tous les OS existants.

Charger directement un système d'exploitation

Multiboot (voir Spécification Multiboot) est le format natif supporté par GRUB. Pour des raisons de commodité, il supporte aussi Linux, FreeBSD, NetBSD et OpenBSD. Si vous désirez booter d'autres systèmes d'exploitation, vous devrez les chainer (voir Charger un autre chargeur de boot pour booter un OS non supporté).

Généralement, GRUB peut booter tout noyau compatible multiboot selon les étapes suivantes :

  1. Etablir le périphérique root de GRUB comme étant le lecteur où les images de l'OS sont enregistrées avec la commande root (voir root).
  2. Charger l'image du noyau avec la commande kernel.
  3. Si vous avez besoin de modules, chargez les avec la commande module (voir module) ou modulenounzip (voir modulenounzip).

Linux, FreeBSD, NetBSD et OpenBSD peuvent être bootés de façon similaire. Vous chargez l'image du noyau avec la commande kernel puis lancez la commande boot. Si le noyau exige des paramètres, ajoutez-les à kernel, après le nom de fichier du noyau. Référez vous aux Mises en garde sur les problèmes d'OS spécifiques, pour des informations sur les problèmes de votre OS spécifiques.

Charger un autre chargeur de boot pour booter un OS non supporté

Si vous désirez booter un OS non supporté (par exemple Windows 95), chainez vers un chargeur de boot pour votre OS. Normalement, ce chargeur de boot est placé dans le secteur de boot (boot sector) de la partition sur laquelle l'OS est installé.

1. Etablir le périphérique root de GRUB comme étant la partition en question avec la commande rootnoverify (voir rootnoverify) :

 grub> rootnoverify (hd0,0)

2. Etablir le drapeau actif dans la partition avec la commande makeactive (voir nota et makeactive) :

grub> makeactive

3. Charger le chargeur de boot avec la commande chainloader (voir chainloader)

grub> chainloader +1

+1 indique que GRUB doit lire un secteur depuis le début de la partition. La description complète de cette syntaxe peut être trouvée dans Comment spécifier des blocs de liste.

4. Lancer la commande boot (voir boot).

Cependant, DOS et Windows ont des déficiences, aussi il est possible que vous deviez utiliser quelques instructions compliquées. Voir DOS/Windows pour plus d'informations.

Nota : Ceci n'est plus nécessaire pour la plupart des OS modernes.

Mises en garde sur les problèmes d'OS spécifiques

Ici, nous décrivons quelques mises en garde concernant certains OS.

GNU/Linux

Il est relativement facile de booter GNU/Linux avec GRUB, car cela ressemble à booter un OS compatible Multiboot.

1. Etablir le périphérique root de GRUB comme étant le même lecteur que celui de GNU/Linux. Probablement que la commande find /vmlinuz ou similaire peut vous aider (voir find).

2. Charger le kernel :

grub> kernel /vmlinuz root=/dev/hda1

Si vous avez besoin de spécifier des paramètres au noyau, ajoutez les à la commande. Par exemple pour définir vga à ext, écrire ceci:

grub> kernel /vmlinuz root=/dev/hda1 vga=ext

voir la documentation dans le Linux source tree pour une information complète sur les options disponibles.

3. Si vous avez besoin d'un initrd, exécutez la commande initrd après le noyau :

grub> initrd /initrd

4. Enfin exécutez la commande boot (voir boot).

Attention : si vous utilisez un initrd et spécifiez l'option mem= au kernel pour ne pas le laisser utiliser toute la mémoire disponible, vous devez aussi spécifier la même quantité de mémoire à GRUB. Pour indiquer cette quantité de mémoire à GRUB, utilisez la commande uppermem avant de charger le noyau. Voir uppermem), pour plus d'informations.

DOS/Windows

GRUB ne peut pas booter directement DOS ou Windows, vous devez donc les chainer (voir Charger un autre chargeur de boot pour booter un OS non supporté). Cependant leurs chargeurs de boot ont quelques déficiences critiques, aussi cela peut ne pas être suffisant de simplement les chainer. Pour surmonter les problèmes, GRUB vous fournit deux fonctions d'aide.

Si vous avez installé DOS (ou Windows) ailleurs que sur le premier disque dur, vous devez utiliser la technique de l'échange de disques (disk swapping) car cet OS ne peut pas booter sur un autre disque que le premier. (NdT : Cela n'est plus vrai depuis Win XP). Cela est géré dans GRUB avec la commande map (voir map), comme ceci :

grub> map (hd0) (hd1)
grub> map (hd1) (hd0)

Cela génère un échange (swap) virtuel entre vos premier et second disques durs.

Attention : Cela n'est effectif que si DOS (ou Windows) utilisent le BIOS pour accéder aux disques échangés. Si cet OS utilise un pilote spécial pour les disques, cela ne fonctionnera probablement pas.

Un autre problème apparait si vous avez installé plus d'un exemplaire de DOS/Windows sur votre disque, car ils peuvent être confondus s'il existe plus d'une partition primaire pour DOS/Windows. Vous devriez certainement éviter de faire cela, mais il existe une solution si vous y tenez. Utilisez la technique de la partition cachée/montrée (hiding/unhiding).

Si GRUB cache une partition DOS (ou Windows) (voir cacher (hide)), DOS (ou Windows) ignoreront cette partition. Si GRUB montre une partition DOS (ou Windows) (voir montrer (unhide)), DOS (ou Windows) détecteront cette partition. Ainsi, si vous avez installé DOS (ou Windows) sur les première et seconde partitions du premier disque dur, et vous désirez booter l'exemplaire de la première partition, faites ce qui suit :

     grub> unhide (hd0,0)
     grub> hide (hd0,1)
     grub> rootnoverify (hd0,0)
     grub> chainloader +1
     grub> makeactive
     grub> boot

Comment rendre votre système robuste

Quand vous testez un nouveau noyau ou un nouvel OS, il est important de vous assurer que votre ordinateur peut booter même si le nouveau système est imbootable. Ceci est crucial, plus particulièrement si vous maintenez des serveurs ou des systèmes distants. Pour atteindre ce but, vous devez paramétrer deux choses :

  1. Vous devez maintenir un système qui est toujours bootable. Par exemple, si vous testez un nouveau noyau, vous devez conserver un noyau en bon fonctionnement dans un endroit différent. Il pourrait même quelque fois être judicieux de conserver un copie complète d'un système en état de marche sur une partition ou disque différent(e).
  2. Vous devez dire à GRUB de booter sur le système en état de marche quand le nouveau est défaillant. Ceci est possible avec le système de boot de secours de GRUB.

La première exigence est très spécifique à chaque OS, aussi la présente documentation ne couvre pas le sujet. Il est préférable de consulter des outils de backup.

Voyons la partie GRUB. Il y a deux possibilités : La première est simple mais pas très robuste, et l'autre est un peu complexe mais c'est probablement la meilleure solution pour être sûr que votre système pourra démarrer aussi longtemps que GRUB lui-même est bootable.

Ne booter qu'une seule fois

Vous pouvez apprendre à GRUB de ne booter sur une entrée que la fois suivante. Supposons que vous ayez un vieux noyau, old_kernel et un nouveau noyau new_kernel. Vous savez que old_kernel peut booter votre système correctement, et vous désirez tester new_kernel.

Pour s'assurer que votre système retournera au vieux noyau même si le nouveau est défaillant (par exemple un kernel panic), vous pouvez spécifier que GRUB ne doit essayer le nouveau noyau qu'une seule fois et booter ensuite le vieux noyau.

Premièrement, modifiez votre fichier de configuration. Voici un exemple :

default saved        # Ceci est important!!!
timeout 10
     
title le vieux noyau
root (hd0,0)
kernel /old_kernel
savedefault
     
title le nouveau noyau
root (hd0,0)
kernel /new_kernel
savedefault 0         # Ceci est important!!!

Remarquez que ce fichier de configuration utilise default saved (Voir default) en tête et savedefault 0 (Voir savedefault) dans l'entrée concernant le nouveau noyau. Cela signifie que GRUB boote une entrée sauvegardée par défaut, et booter l'entrée du nouveau noyau enregistre '0' pour l'entrée sauvegardée.

Avec ce fichier de configuration, GRUB essaye toujours de booter le vieux noyau, après il boote le nouveau, car '0' est l'entrée du vieux noyau.

L'étape suivante consiste à dire à GRUB de booter le nouveau noyau au prochain boot. Pour cela, exécutez grub-set-default (Voir Invoquer grub-set-default) :

# grub-set-default 1

Cette commande fixe l'entrée sauvegardée à '1', ce faisant, au nouveau noyau.

Cette méthode est pratique, mais pas très robuste, car GRUB arrête le boot en cas d'erreur dans l'entrée de boot, telle qu'un format exécutable non valide du nouveau noyau. Ainsi, il est préférable d'utiliser le système de boot de secours de GRUB. Reportez vous au chapitre suivant pour connaitre cette caractéristique.

Systèmes de boot de secours

GRUB comprend un mécanisme de secours pour booter une ou plusieurs autres entrées si l'entrée de boot par défaut est défaillante. Vous pouvez spécifier de multiples entrées de secours si vous le désirez.

Supposons que vous avez trois systèmes, 'A', 'B' et 'C'. 'A' est le système à booter par défaut. 'B' est un système sauvegardé (backup) qui est supposé booter correctement. 'C' est un autre système sauvegardé qui est utilisé en cas où 'B' est défaillant.

Alors vous pouvez désirer que GRUB boote le premier système qui est bootable parmi 'A', 'B' et 'C'. Un fichier de configuration peut être écrit de cette façon :

default saved        #Ceci est important!!!
timeout 10
fallback 1 2         # Ceci est important!!!
     
title A
root (hd0,0)
kernel /kernel
savedefault fallback # Ceci est important!!!
     
title B
root (hd1,0)
kernel /kernel
savedefault fallback # Ceci est important!!!
     
title C
root (hd2,0)
kernel /kernel
savedefault

Notez que default saved (Voir default), fallback 1 2 et savedefault fallback sont utilisés. GRUB bootera une entrée sauvegardée par défaut et enregistrera une entrée de secours (fallback) comme entrée pour le prochain boot avec cette configuration.

Quand GRUB essaye de booter 'A', GRUB enregistre '1' comme entrée de prochain boot, car la commande fallback spécifie que '1' est la première entrée de secours. L'entrée '1' est 'B', aussi GRUB essaiera de booter au prochain boot.

De même, quand GRUB essaye de booter 'B', GRUB enregistre '2' comme entrée de prochain boot, car la commande fallback spécifie que '2' est la prochaine entrée de secours. Ceci assure que GRUB bootera 'C' après le boot de 'B'

Il est utile de remarquer que GRUB utilise les entrées de secours à la fois quand GRUB lui-même ne parvient pas à booter une entrée et quand 'A' ou 'B' échouent à démarrer le système. Aussi cette solution garantit que votre système est démarré même si GRUBne peut pas trouver votre noyau ou si votre noyau "panique".

Cependant, vou devez exécuter grub-set-default (Voir Invoquer grub-set-default) quand 'A' démarre correctement ou que vous l'ayez réparé après un crash, puisque GRUB établit toujours la prochaine entrée de boot à une entrée de secours. Vous devriez exécuter cette commande dans un script de démarrage tel que rc.local pour booter 'A' par défaut :

 
# grub-set-default 0

'0' est le numéro de l'entrée du boot pour le système 'A'

Si vous désirez savoir quelle est l'entrée par défaut en cours, vous pouvez regarder dans le fichier /boot/grub/default (ou /grub/default dans ceertains systèmes). Vu que ce fichier est en plein texte, vous pouvez simplement utiliser la commande cat. Il est fortement recommandé de ne pas modifier ce fichier directement, car GRUB peut échouer en sauvegardant une entrée par défaut dans ce fichier. Par conséquent, vous devez utiliser grub-set-default pour modifier les entrées par défaut.

Configuration

Vous avez probablement remarqué que vous devez taper plusieurs commandes pour booter votre OS. Il y a une solution à cela - GRUB fournit une interface menu (voir La simple interface menu) à partir de laquelle vous pouvez sélectionner une entrée (en utilisant les touches avec les flèches) qui fera tout le nécessaire pour booter l'OS.

Pour valider le menu, vous avez besoin d'un fichier de configuration, menu.lst dans le répertoire boot. Nous analyseront un fichier exemple.

LE fichier contient d'abord quelques paramètres généraux, les options en rapport avec l'interface menu. Vous pouvez placer ces commandes (voir Liste des commandes pour le menu seulement) devant chaque entrée du menu (commençant par title (voir title)).

#
# Echantillon de fichier de configuration de menu de boot
#

Comme vous l'avez peut-être deviné, ces lignes sont des commentaires. Les lignes qui commencent avec le caractère '#', et les lignes blanches sont ignorées par GRUB.

# Par défaut, booter sur la première entrée
default 0

La première entrée (ici, le comptage commence à zéro, non pas 1!) sera le chois par défaut.

# Boote automatiquement après 30 secs.
timeout 30

Comme le dit le commentaire, GRUB bootera automatiquement dans 30 secondes, à moins qu'il ne soit interrompu par la frappe d'une touche.

# Secours en seconde entrée
fallback 1

Si, pour quelque raison, l'entrée par défaut ne fonctionne pas, utiliser la seconde en secours (ceci est rarement utilisé, pour des raisons évidentes).

Remarquez que la description complète de ces commandes, qui sont spécifiques à l'interface menu, se trouvent dans Liste des commandes pour le menu seulement. D'autres descriptions se trouvent dans Liste des commandes disponibles.

Maintenant, sur des cas réels de définitions d'OS. Vous verrez que chaque entrée commence avec une commande spéciale, title (voir title), et l'action est décrite après. Remarquez qu'il n'y a pas de commande de boot (voir boot) à la fin de chaque entrée. Ceci parce que GRUB exécute le boot automatiquement s'il charge les autres commandes avec succès.

L'argument de la commande title est utilisé pour afficher un court titre/description de l'entrée du menu. Puisque title affiche l'argument tel quel, vous pouvez écrire absolument n'importe quoi ici.

# Pour booter GNU/Hurd
title  GNU/Hurd
root   (hd0,0)
kernel /boot/gnumach.gz root=hd0s1
module /boot/serverboot.gz

Ceci boote GNU/Hurd depuis le premier disque dur.

# Pour booter GNU/Linux
title  GNU/Linux
kernel (hd1,0)/vmlinuz root=/dev/hdb1

Ceci boote GNU/Linux, mais depuis le second disque dur

# Pour booter Mach (avec le noyau sur disquette)
title  Utah Mach4 multiboot
root   (hd0,2)
pause  Insert the diskette now^G!!
kernel (fd0)/boot/kernel root=hd0s3
module (fd0)/boot/bootstrap

Ceci boote Mach avec le noyau sur une disquette, mais le système de fichiers root est sur hd0s3. Il y a aussi une ligne pause (voir pause), qui provoquera l'affichage de l'invite et une attente, avant de poursuivre l'exécution du reste des commandes et le boot.

# Pour booter FreeBSD
title  FreeBSD
root   (hd0,2,a)
kernel /boot/loader

Cette entrée boote le noyau FreeBSD chargé depuis une partition 'a' du troisième segment PC du premier disque dur Lebarhon: segment PC reste à confirmer

# Pour booter OS/2
title OS/2
root  (hd0,1)
makeactive
# chainload le chargeur de boot OS/2 depuis le premier secteur
chainloader +1
# ceci est similaire au "chainload", mais charge un fichier spécifique
#chainloader /boot/chain.os2

Ceci bootera OS/2, en utilisant un chaînage (chain-loader) (Voir Charger un autre chargeur de boot pour booter un OS non supporté).

# Pour booter Windows NT ou Windows95
title Windows NT / Windows 95 menu de boot
root        (hd0,0)
makeactive
chainloader +1
# Pour charger DOS si Windows NT est installé
# chainload /bootsect.dos

Le même que ci-dessus, mais pour Windows.

# Pour installer GRUB sur le disque dur
title Installation de GRUB sur le disque dur
root    (hd0,0)
setup   (hd0)

Cela (re)installera GRUB sur le disque dur.

# Changer les couleurs.
title Changer les couleurs
color light-green/brown blink-red/blue

Dans la dernière entrée, la commande color est utilisée (voir color), pour changer les couleurs du menu (essayez le!). Cette commande est un peu spéciale, car elle peut être utilisée à la fois en ligne de commande et dans le menu. GRUBa plusieurs commandes comme cela, voir Liste des commandes générales.

Nous espérons que que maintenant vous comprenez mieux comment utiliser les fonctionnalités essentielles de GRUB. Pour en savoir plus, voir les chapitres suivants.

Téléchargement d’images d’OS depuis un réseau

Bien que GRUB soit un chargeur de boot basé sur disque, il assure le support du réseau. Pour utiliser le réseau, vous devez valider au moins un pilote de réseau dans le processus de construction de GRUB. Pour plus d’informations, veuillez voir netboot/README.netboot dans la distribution de la source.

Comment installer votre réseau

GRUB exige un serveur de fichiers et optionnellement un serveur qui assignera un e adresse IP à la machine sur laquelle GRUB est exécuté. Dans le premier cas, seul TFTP est supporté pour l’instant. Dans l’autre cas le serveur doit être soit BOOTP, DHCP ou un serveur RARP (voir nota). Il n’est pas nécessaire d’exécuter les 2 serveurs sur un ordinateur. Comment configurer ces serveurs sort du périmètre de ce document, aussi reportez vous aux manuels de ces protocoles ou serveurs.

Si vous avez décidé d’utiliser un serveur pour assigner une adresse IP, installez le serveur et exécutez bootp (voir bootp), dhcp (voir dhcp) ou rarp (voir rarp). Chaque commande montrera l’adresse IP assignée, le masque de réseau, une adresse IP pour votre serveur TFTP et une passerelle. Si une des adresses est fausse ou provoque une erreur, probablement que la configuration de votre serveur n’est pas correcte.

Autrement, lancez ifconfig, comme ceci :

grub> ifconfig --address=192.168.110.23 --server=192.168.110.14

Vous poouvez aussi utiliser ifconfig conjointement avec bootp, dhcp, ou rarp (par exemple pour réassigner manuellement l’adresse du serveur). Voir ifconfig pour plus de détails.

Enfin, téléchargez l’image de l’OS depuis le réseau. Il peut être accédé en utilisant le lecteur réseau ’(nd)’. Tout le reste est très similaire aux instructions habituelles (voir boot).

Voici un exemple :

grub> bootp
Probing... [NE*000]
NE2000 base ...
Address: 192.168.110.23    Netmask: 255.255.255.0
Server: 192.168.110.14     Gateway: 192.168.110.1
     
grub> root (nd)
grub> kernel /tftproot/gnumach.gz root=sd0s1
grub> module /tftproot/serverboot.gz
grub> boot

Nota : RARP n’est pas conseillé, puisqu’il ne fournit pas d’informations.

Booter depuis le réseau

Il est quelques fois très utile de booter depuis un réseau, spécialement quand vous utilisez une machine qui n’a pas de disque local. Dans ce cas, vous devez obtenir une sorte de Net Boot rom tel que PXE rom ou un paquetage du logiciel libre comm Etherboot. Un tel Boot rom premièrement boote la machine, paramètre la carte réseau installée dans la machine, et télécharge une image de boot de deuxième niveau (second stage boot) depuis le réseau. Alors, la seconde image essaiera de booter un OS depuis le réseau.

GRUB fournit deux images de deuxième niveau, nbgrub et pxegrub (voir Les fichiers image de GRUB). Ces images sont les mêmes que le stage 2 normal, excepté qu’elles établissent le réseau automatiquement, et essayent, si spécifié, de charger un fichier de configuration depuis le réseau. L’utilisation est très simple : si la machine possède un PXE rom, utilisez pxegrub. Si la machine possède un chargeur NBI tel que Etherboot, utilisez nbgrub. Il n’existe aucune différence entre les deux, excepté leurs formats. Puisque la façon de charger l’image de second niveau que vous désirez utiliser devrait être décrite dans le manuel sur votre Net Boot rom, veuillez vous y référer pour plus d’informations.

Cependant, il y a une chose spécifique à GRUB. Comment spécifier un fichier de configuration dans un serveur BOOTP/DHCP. Jusqu’à maintenant, GRUB utilise le tag '150', pour obtenir le nom d’un fichier de configuration. Ce qui suit est un exemple pour une configuration BOOTP :

.allhost:hd=/tmp:bf=null:\
             :ds=145.71.35.1 145.71.32.1:\
             :sm=255.255.254.0:\
             :gw=145.71.35.1:\
             :sa=145.71.35.5:
     
     foo:ht=1:ha=63655d0334a7:ip=145.71.35.127:\
             :bf=/nbgrub:\
             :tc=.allhost:\
             :T150="(nd)/tftpboot/menu.lst.foo":

Remarquez que vous devez spécifier le nom du lecteur '(nd)' dans le nom du fichier de configuration. Ceci car vous pourriez changer le lecteur root avant de télécharger la configuration depuis le serveur TFTP quand le menu programmé est utilisé (voir Intégrer un fichier de configuration dans GRUB)

Voir le manuel de votre serveur BOOTP/DHCP pour plus d’informations. la syntaxe exacte peut différer légèrement de l’exemple.

Utiliser GRUB via une liaison série

Ce chapitre décrit comment utiliser le support du terminal série dans GRUB.

Si vous avez plusieurs ordinateurs ou des ordinateurs sans écran ni clavier, il peut être utile de contrôler les ordinateurs à travers une liaison série. Pour connecter un ordinateur à l’autre via une liaison série, vous devez préparer un câble série null-modem (croisé), et vous pouvez avoir besoin de boitiers multiports série si votre ordinateur n’a pas suffisamment de ports série. De plus, un émulateur de terminal est aussi requis, tel que minicom. Référez vous au manuel de votre OS pour plus d’informations.

Comme pour GRUB, les instructions pour mettre en place un terminal série sont plutot simples. Premièrement, assurez vous que n’avez pas spécifié l’option –disable-serial dans le script de configuration quand vous avez construit les images de GRUB. Si vous les avez sous forme binaire, probablement qu’elles supportent déjà le terminal série.

Maintenant, initialisez le terminal série après le démarrage de GRUB. Voici un exemple :

grub> serial --unit=0 --speed=9600
grub> terminal serial

La commande serial initialise l’unité série 0 avec la vitesse de 9600 bps. L’unité série 0 est habituellement appelée 'COM1', ainsi, si vous désirez utiliser 'COM2', vous devez spécifier' –unit=1'. Cette commande accepte beaucoup d’autres options, référez vous à serial pour plus de détails.

La commande terminal (voir terminal) détermine quel type de terminal vous désirez utiliser. Dans le cas ci-dessus, le terminal sera un terminal série, mais vous pouvez aussi donner console à la commande, comme 'terminal serial console'. Dans ce cas, un terminal dans lequel vous tapez n’importe quelle touche sera sélectionné comme un terminal GRUB.

Cependant, notez que GRUB suppose que votre émulateur de terminal est compatible avec VT100 par défaut. Ceci est vrai de nos jours pour la plupart des émulateurs, mais vous devez donner l’option --dumb à la commande si votre émulateur de terminal n’est pas compatible avec VT100 ou n’implémente que peu de séquences d’échappement VT100. Si vous spécifiez cette option, alors GRUB vous fournit une interface menu alternative, car le menu normal exige plusieurs caractéristiques sophistiquées de votre terminal.


Intégrer un fichier de configuration dans GRUB

GRUB intègre un menu programmé qui doit toujours être chargé avant le démarrage. Ce menu programmé est utile, par exemple quand l’ordinateur ne possède pas de console mais un câble série. Dans ce cas, il est dangereux de paramétrer le terminal série le plus vite possible, puisque vous ne pouvez pas voir les messages avant que le terminal série commence à fonctionner. Aussi, il est préférable d’exécuter la commande serial (voir serie) et terminal (voir terminal) avant toute autre chose au moment du démarrage.

La façon dont le menu programmé fonctionne est un peu compliqué :

  1. GRUB vérifie si l’utilisation du menu programmé est prévue, et le charge s’il est disponible. Cela comprend l’exécution des commandes et la lecture des entrées de boot, comme un fichier de configuration ordinaire.
  2. GRUB vérifie si le fichier de configuration est disponible. Remarquez que cette vérification est réalisée indépendamment de l’existence du menu programmé
  3. Si le menu programmé comprend des entrées de boot, elles sont effacées quand le fichier de configuration est chargé. Cela n’a pas d’importance que le fichier de configuration ait ou pas d’entrées. Les entrées de boot dans le menu programmé ne sont utilisées que si GRUB échoue dans le chargement du fichier de configuration.

Pour activer le menu programmé, vous devez reconstruire GRUB en spécifiant un fichier pour le script de configuration avec l’option --enable-preset-menu. Le fichier utilise la même sémantique que les fichiers de configuration ordinaires. (Voir Configuration).

Un autre point auquel faire attention, est que le support du « sans disque » (voir Booter depuis le réseau) ne détourne pas le menu programmé. Les images « sans disque » incorporent un menu programmé pour exécuter la commande bootp (voir bootp) automatiquement, a moins que vous n’ayez spécifié votre propre menu programmé dans le script de configuration. Cela signifie que vous devez mettre vous-même des commandes dans le menu programmé pour initialiser un réseau, car les images « sans disque » ne se configurent pas implicitement, quand vous utilisez explicitement le menu programmé.

En conséquence, un menu programmé typique, utilisé avec le support du « sans disque » devrait ressembler à ceci :

# Mettre en place le terminal sérien avant toute chose.
serial --unit=0 --speed=19200
terminal --timeout=0 serial

# Initialiser le réseau.
dhcp

Protéger son ordinateur contre le piratage

Vous désirez peut être savoir comment empêcher les utilisateurs ordinaires de faire ce qu’ils veulent, si vous partagez votre ordinateur. Ce chapitre décrit comment améliorer la sécurité de GRUB.

Une chose qui pourrait être une faille de sécurité est qu’un utilisateur peut faire beaucoup de choses avec GRUB, car GRUB permet la modification de sa configuration et d’exécuter des commandes quelconques. Par exemple, l’utilisateur peut même lire le fichier /etc/password dans l’interface en ligne de commandes avec la commande cat (voir cat). Aussi, il est nécessaire d’invalider toutes les opérations interactives.

Ainsi, GRUB fournit un outil pour le mot de passe, afin que seuls les administrateurs peuvent exécuter les opérations interactives (par exemple, éditer les entrées du menu et entrer dans l’interface en ligne de commandes). Pour utiliser cet outil, vous devez placer la commande password dans le fichier de configuration (voir password), comme ceci :

password --md5 PASSWORD
Si cela est spécifié, GRUB interdit tout contrôle interactif, jusqu’à ce que vous appuyiez sur la touche

et entriez le mot de passe correct. L’option --md5 indique à GRUB que 'PASSWORD' est au format MD5. Si elle est omise, GRUB considère que le mot de passe est en clair. Vous pouvez crypter le mot de passe avec la commande md5crypt (voir md5crypt). Par exemple, exécutez le shell grub (voir Invoquer le shell Grub), et entrez le mot de passe :

grub> md5crypt
Password: **********
Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb.

Puis, coupiez/collez le mot de passe dans votre fichier de configuration.

Vous pouvez aussi spécifier un argument optionnel à la commande pasword. Voici un exemple :

password PASSWORD /boot/grub/menu-admin.lst

Dans ce cas, GRUB chargera le fichier /boot/grub/menu-admin.lst en tant que fichier de configuration quand vous entrez le mot de passe correct. Une autre chose peut être dangereuse, tout utilisateur peut choisir n’importe qu’elle entrée du menu. Habituellement, cela ne devrait pas poser de problèmes, mais vous pouvez désirer que seuls les administrateurs puissent sélectionner certaines entrées du menu, telles qu’une entrée pour booter sur un OS non sûr comme DOS.

GRUB propose la commande lock (voir lock). Cette commande échoue systématiquement jusqu'à la saisie d’un mot de passe valide, aussi vous pouvez l’utiliser comme ceci :

title Boot DOS
lock
rootnoverify (hd0,1)
makeactive
chainload +1

Vous devez insérer lock aussitôt après title, car tout utilisateur peut exécuter des commandes dans une entrée jusqu’à ce que GRUB rencontre lock.

Vous pouvez aussi utiliser la commande password au lieu de lock. Dans ce cas, le processus de boot demandera le mot de passe et arrêtera s’il n’est pas valide. Puisque le mot de passe possède son propre argument PASSWORD, ceci est utile si vous désirez des mots de passe différents pour les différentes entrées.

Les fichiers image de GRUB

GRUB est fait de plusieurs images : Deux stages essentiels, des stages optionnels appelés Stage 1.5, une image pour les CD ROM bootables, et deux images de boot réseau. Voici un court aperçu de ces images. Voir Internals pour plus de détails.

stage1 
C'est une image essentielle utilisée pour booter GRUB. Habituellement, elle est intégrée dans le MBR ou dans le secteur de boot de la partition. Par ce qu'un secteur de boot de PC fait 512 octets, la taille de cette image est exactement de 512 octets.
La seule chose assurée par Stage 1 est de charger Stage 2 ou Stage 1.5 depuis un disque local. En raison des restrictions de taille, Stage 1 encode la position de Stage 2 (ou de Stage 1.5) dans le format de listes de blocs, ainsi il ne connait aucune structure de système de fichiers.
stage2 
C'est l'image du noyau de GRUB. Il ne fait rien d'autre que de se booter lui-même. Habituellement, il est placé dans un système de fichiers, mais ce n'est pas obligatoire.
e2fs_stage1_5
fat_stage1_5
ffs_stage1_5
jfs_stage1_5
minix_stage1_5
reiserfs_stage1_5
vstafs_stage1_5
xfs_stage1_5 
Ils sont appelés Stage 1.5, car ils servent de pont entre Stage 1 et Stage 2, c'est à dire que Stage 1.5 est chargé par Stage 1 et Stage 1.5 charge Stage 2. La différence entre Stage 1 et Stage 1.5 et que le premier ne connaît pas de système de fichiers alors que le second en connaît un (par exemple e2fs_stage1_5 connait ext2fs). Ainsi vous pouvez déplacer l'image Stage 2 dans un autre endroit en toute sécurité, même après l'installation de GRUB.
Alors que Stage 2 ne peut pas en général être intégré dans une zone déterminée puisque sa taille est trop importante, Stage 1.5peut être installé dans la zone juste après le MBR, ou dans la zone du chargeur de boot de ReiserFS ou FFS.
stage2_eltorito 
C'est une image de boot pour les CD ROM utilisant le mode de non émulation dans la spécification El Torito. Il est identique à Stage 2, excepté qu'il boote sans le Stage 1 et met en place un lecteur spécial '(cd)'.
nbgrub 
C'est une image de boot réseau pour le Network Image Proposal utilisé par quelques chargeurs de boot réseau, tels que Etherboot. Il est en majeure partie identique à Stage 2, mais lui aussi met en place un réseau et charge le fichier de configuration depuis le réseau.
pxegrub 
C'est une autre image de boot réseau pour le Preboot Execution Environment utilisé par plusieurs Netboot ROMs. Il est identique à nbgrub, exepté pour le format.

Syntaxe et sémantique du système de fichiers

GRUB utilise une syntaxe spéciale pour spécifier les disques qui peuvent être accèdés par le BIOS. En raison des limitations du BIOS, GRUB ne peut pas distinguer entre IDE, ESDI, SCSI et autres. Vous devez connaître vous-même quel périphérique BIOS est équivalent à quel périphérique de l’OS. Normalement, cela devrait être clair si vous pouvez voir les fichiers contenus par le périphérique ou si vous utilisez la commande find (voir find).

Comment spécifier les périphériques

La syntaxe pour les périphériques est celle-ci : (périphérique[,numéro-partition][,lettre-bsd-subpartition])

'[ ]' Signifie que le paramètre est optionnel. périphérique doit être soit 'fd' ou 'hd' suivi par un chiffre, comme 'fd0'. Mais vous pouvez également attribuer à périphérique un nombre hexadécimal ou décimal qui est le numéro BIOS du lecteur, ainsi les désignations suivantes sont équivalentes :

  • (hd0
  • (0x80)
  • (128)

numéro-partition représente le numéro de la partition du périphérique, commençant à partir de 0 pour les partitions primaires et à partir de 4 pour les partitions étendues, et lettre-bsd-subpartition représente la subpartition du disklabel BSD, tel que 'a' ou 'e'. Un raccourci pour spécifier les subpartitions BSD est (périphérique,lettre-bsd-subpartition), dans ce cas, GRUB cherche la première partition du PC contenant un disklabel BSD, puis trouve la subpartition lettre-bsd-subpartition. Voici un exemple :

(hd0,a)

La syntaxe '(hd0)' représente le disque entier (ou le MBR quand on installe GRUB), alors que la syntaxe '(hd0,0)' représente la première partition du disque (ou le secteur de boot quand on installe GRUB).

Si vous activez le support du réseau, le lecteur spécial '(nd)' est aussi disponible. Avant d’utiliser le lecteur réseau, vous devez initialiser le réseau. Voir Téléchargement d’images d’OS depuis un réseau, pour plus d’informations.

Si vous bootez GRUB depuis un CD-ROM, '(cd)' est disponible. Voir Créer un CDROM bootable GRUB, pour plus de détails.

Comment spécifier les fichiers

Il y a deux façons de spécifier les fichiers, par nom de fichier absolu et par liste de blocs.

Un nom de fichier absolu ressemble à un nom de fichier absolu d’UNIX, utilisant '/' comme séparateur de répertoires (et non pas '\' comme dans DOS). Par exemple (hd0,0)/boot/grub/menu.lst. Cela désigne le fichier /boot/grub/menu.lst dans la première partition du premier disque dur. Si vous oubliez le nom du périphérique dans un nom de fichier absolu, GRUB utilise implicitement le périphérique root de GRUB. Aussi si vous déclarez le périphérique root comme étant '(hd1,0)' avec la commande root (voir root), alors /boot/kernel désigne la même chose que (hd1,0)/boot/kernel.

Comment spécifier des listes de blocs

Des listes de blocs (blocklist) sont utilisés pour spécifier un fichier qui n’apparaît pas dans le système de fichiers, comme un chaînage. La syntaxe est [offset]+lenght[,[offset]+lenght]… Voici un exemple :

0+100,200+1,300+300

Cela signifie que GRUB doit lire les blocs de 0 à 99, bloc 200 et les blocs de 300 à 599. Si vous omettez un offset, alors GRUB considère zéro.

Comme pour la syntaxe du nom de fichier (voir ci-dessus) si un blocklist ne contient pas de nom de périphérique, alors GRUB utilise implicitement le nom du périphérique root. Ainsi '(hd0,1)+1' désigne la même chose que +1 quand le périphérique root est '(hd0,1)'.

L’interface utilisateur de GRUB

GRUB dispose à la fois d’une simple interface menu pour sélectionner une entrée parmi celles programmées dans un fichier de configuration, et une interface ligne de commande très souple pour réaliser toutes les combinaisons désirées de commandes de boot.

Aussitôt chargé, GRUB recherche son fichier de configuration. S’il en trouve un, alors l’ interface menu est activée proposant toutes les entrées trouvées dans le fichier de configuration. Si vous choisissez l’option de l’interface ligne de commande, ou si le fichier de configuration n’a pas été trouvé, alors GRUB bascule vers l’interface ligne de commande.

L'interface ligne de commande, souple

L’interface ligne de commande présente une invite et à sa suite, une aire d’édition de texte, exactement comme une ligne de commande DOS ou UNIX. Chaque commande est exécutée immédiatement après l’appui sur la touche entrée (voir nota). Les commandes (voir Liste des commandes pour la ligne de commande et les entrées de menu) constitue un « sous-jeu » de celles disponibles dans le fichier de configuration, utilisées avec exactement la même syntaxe.

Les mouvements du curseur et la modification du texte sur la ligne peuvent être réalisés par un « sous-jeu » des fonctions disponibles dans le shell Bash :

C-f / PC right key 
(NdT touche flèche droite). Avance d’un caractère
C-b / PC left key 
(NdT touche flèche gauche). Recule d’un caractère
C-a / HOME 
(NdT : début document) Se place au début de la ligne
C-e / END 
(NdT : fin) Se place à la fin de la ligne
C-d / DEL 
(NdT : Suppr) Efface le caractère devant le curseur
C-h / BS 
(NdT : espace arrière) Efface la caractère situé derrière le curseur
C-k 
Efface le texte depuis la position du curseur jusqu’à la fin de la ligne
C-u 
Efface le texte dérrière la position du curseur jusqu’au début de la ligne
C-y 
Remettre le texte effacé à l'endroit du curseur.
C-p / PC up key 
(NdT touche flèche vers le haut). Remonte la liste de l’historique
C-n / PC down key 
(NdT touche flèche vers le bas). descend la liste de l’historique.

Lors de la frappe de commandes interactivement, si le curseur est à l’intérieur ou avant le premier mot dans la ligne de commande, appuyer sur la touche TAB (ou C-i affichera la liste des commandes disponibles, et si le curseur est après le premier mot, appuyer sur la touche TAB offrira une possibilité d’«autocomplétion » avec une liste des disques, partitions et nom de fichiers en fonction du contexte. Notez que pour obtenir une liste de lecteurs, il faut ouvrir une parenthèse, comme root (.

Notez que vous ne pouvez pas utiliser la fonction d’«autocomplétion » avec le système de fichiers TFTP. Ceci à cause qu’il ne permet pas les listes de noms de fichier, pour des raisons de sécurité.

Nota : Cependant, ce comportement sera changé dans le futur, d’une façon invisible pour l’utilisateur.

La simple interface menu

L’interface menu est très facile à utiliser. Ses commandes sont à la fois intuitives et décrites à l’écran.

Fondamentalement, l’interface menu offre une liste d’entrées de boot au choix de l’utilisateur. Utiliser les touches fléchée pour sélectionner l’entrée choisie, puis appuyer sur la touche Entrée pour la lancer. Une limitation de temps optionnelle est disponible pour booter sur l’entrée par défaut (la première si aucune n’est définie), limitation qui est annulée en appuyant sur n’importe quelle touche.

Les commandes peuvent être entrées dans une ligne de commande vide en pressant la touche c (qui agit exactement de la même façon que la version sans fichier de configuration de GRUB, mais autorise, si désiré, de retourner vers le menu s en appuyant sur la touche Echap) ou peuvent être utilisées pour modifier n’importe quelle entrée du menu de boot en pressant la touche e.

Si vous protégez l’interface menu avec un mot de passe (voir Protéger son ordinateur contre le piratage), tout ce que vous pouvez faire est de choisir une entrée en appuyant sur la touche Entrée, ou appuyer sur p pour entrer un mot de passe.

Modifier une entrée de menu

L’éditeur des entrées du menu ressemble beaucoup à l’interface menu principale, mais les lignes dans le menu sont des commandes individuelles dans l’entrée sélectionnée à la place des noms de l’entrée.

Si la touche Echap est appuyée dans l’éditeur, il annule tous les changements faits dans la configuration de l’entrée et retourne dans l’interface menu principale.

Quand une ligne particulière est sélectionnée, l’éditeur place l’utilisateur dans une version spéciale de GRUB en ligne de commandes pour modifier cette ligne. Quand l’utilisateur appuie sur Entrée, GRUB remplace la ligne en question de l’entrée de boot par les modifications (à moins qu’elles ne soient annulées via Echap, auquel cas les modifications sont perdues).

Si vous désirez ajouter une nouvelle ligne dans les entrées du menu, appuyez sur la touche o pour ajouter la ligne après la ligne courante ou appuyez sur la touche O pour ajouter la ligne avant.

Pour effacer une ligne, appuyer sur la touche d. Bien que malheureusement GRUB ne supporte pas undo, vous pouvez obtenir presque la même chose en retournant dans le menu principal.

Cacher l’interface menu

Quand vous avez un terminal dépourvu de capacités de calcul ou que vous demandez explicitement à GRUB de cacher l'interface menu avec la commande hiddenmenu (voir menu caché), GRUB ne montre pas l'interface menu (voir La simple interface menu) et boote automatiquement sur l'entrée par défaut, a moins qu'il ne soit interrompu par l'appui sur la touche Echap. Si vous interrompez le temps d'attente (timeout) et que votre terminal est dépourvu de capacités de calcul, GRUB se reporte sur l'interface en ligne de commande (voir L'interface ligne de commande).

Liste des commandes disponibles

Dans ce chapitre, nous listons toutes les commandes qui sont disponibles dans GRUB.

Les commandes appartiennent à différents groupes. Quelques unes ne peuvent être utilisées que dans le chapitre général du fichier de configuration (ou "menu"); la plupart peuvent être entrées en ligne de commandes et peuvent être utilisées soit n'importe où dans le menu ou spécifiquement dans les entrées du menu.

Liste des commandes pour le menu seulement

La sémantique utilisée dans l'analyse du fichier de configuration obéit aux règles suivantes :

  • Les cimmandes spécifiques aux menus doivent être utilisées avant toutes les autres
  • Les fichiers doivent être au format plein texte.
  • '#' au début d'une ligne dans un fichier de configuration signifie qu'il s'agit d'un commentaire
  • Les options sont séparées par des espaces
  • Tous les nombres peuvent être exprimés en décimal ou hexadécimal. Un nombre hexadécimaldoit être précédé de '0x', et est insensible à la casse.
  • Les options supplémentaires ou le texte en fin de ligne sont ignorés, a moins d'une spécification contraire.
  • Les commandes non comprises sont ajoutées à l'entrée en cours, excepté avant le début des entrées, où elles sont ignorées.

Lebarhon : je ne comprends pas cette dernière ligne

Ces commandes ne peuvent être utilisées que dans le menu :

default

default num

Définit l'entrée numéro num comme entrée par défaut. Lanumérotation commence à zéro, et l'rntrée numéro zéro est l'entrée par défaut si la commande default n'est pas utilisée.

Vous pouvez écrire 'saved' à la place d'un numéro. Dans ce cas, l' entrée par défaut est l'entrée enregistrée avec la commande savedefault. Voir savedefault) pour plus d'informations.

fallback

fallback num...

Part dans un mode inattendu de boot : Si le boot par défaut rencontre des erreurs, au lieu d'attendre que l'utilisateur fasse quelque chose, il continue sans délai en utilisant le numéro d'entrée indiqué. (Même numérotation que pour la commande default ci-dessus). Evidemment, ceci n'aide en rien si la machine fut rebootée par un noyau chargé par GRUB. Vous pouvez spécifier plusieurs numéros d'entrées dans fallback.

hiddenmenu

hiddenmenu

N'affiiche pas le menu. Si la commande est utilisée, aucun menu ne sera affiché sur le terminal, et l'entrée par défaut sera bootée après l'expiration du délai (timeout). L'utilisateur peut appeler le menu en appuyant sur Echap avant l'expiration du délai. Voir Cacher l’interface menu.

timeout

timeout sec

Etablit un temps d'attente, exprimé en secondes, avant de booter automatiquement l'entrée par défaut (normalement la première entrée définie).

title

title name...

Définit une nouvelle entrée de boot. Son nom est constitué du texte de la ligne à partir du premier caractère qui n'est pas un espace.

Liste des commandes générales

Commandes utilisables partout dans le menu et en ligne de commande.

bootp

title [--with-configfile]

Initialise un périphérique réseau via le protocole BOOTP. Cette commande n'est utilisable que si GRUB est compilé avec le support de netboot. Voir aussi Téléchargement d’images d’OS depuis un réseau.

Si vous spécifiez --with-configfile a la commande, GRUB recherchera et chargera un fichier de configuration spécifié par votre serveur BOOTP avec l'option (vendor tag) '150'

color

color normal [highlight]

Change les couleurs du menu. La couleur normal est utilisée pour la plupart des lignes du menu (voir [[#Interface menu|Interface menu), et la couleur highlight est utilisée pour la ligne sélectionnée. Si vous ne précisez pas highlight, alors la couleur inverse de normal est utilisée. Le format d'une couleur est foreground/background (NdT avant plan/arrière plan). foreground et background sont les noms symboliques des couleurs. Un nom symbolique de couleur doit faire partie de cette liste:

  • black (noir)
  • blue (bleu)
  • green (vert)
  • cyan (cyan)
  • red (rouge)
  • magenta (magenta)
  • brown (marron)
  • light-gray (gris clair)

Les couleurs suivantes ne sont disponibles que pour les caractères.

  • dark-gray (gris foncé)
  • light-blue (bleu clair)
  • light-green (vert clair)
  • light-cyan (cyan clair)
  • light-red (rouge clair)
  • light-magenta (magenta clair)
  • yellow (jaune)
  • white (blanc)

Seuls les huit premiers peuvent être utilisés pour le background. Ajouter le préfixe blink- à foreground pour le faire clignoter.

Cette commande peut être utilisée dans le fichier de configuration et en ligne de commande, aussi vous pouvez écrire ce qui suit dans votre fichier de configuration :

# Définir les couleurs par défaut.
color light-gray/blue black/light-gray
              
# Changer les couleurs.
title OS-BS like
color magenta/blue black/magenta

device

device drive file

Dans le shell de GRUB, spécifie que le fichier file correspond au lecteur drive du BIOS. vous pouvez utiliser cette commande pour créer une image disque et/ou pour modifier les lecteurs devinés par GRUB quand il échoue à le faire correctement, comme ceci :

grub> device (fd0) /floppy-image
grub> device (hd0) /dev/sd0

Cette commande ne peut s'utiliser que dans le shell GRUB (voir Invoquer le shell Grub)

dhcp

dhcp [–with-configfile]

Initialise un périphérique réseau via le protocole DHCP. Actuellement, cette commande n'est qu'un alias pour bootp puisque les deux protocoles sont très similaires. Cette commande n'est utilisable que si GRUB est compilé avec le support de netboot. Voir aussi Téléchargement d’images d’OS depuis un réseau.

Si vous spécifiez --with-configfile a la commande, GRUB recherchera et chargera un fichier de configuration spécifié par votre serveur DHCP avec l'option (vendor tag) '150'

hide

hide partition

Cache la partition partition en validant le bit hidden dans le code du type de la partition. Ceci n'est utile que lors des boots sur DOS ou Windows et que de multiples partitions primaires FAT exixtent sur un disque. Voir aussi DOS/Windows).

ifconfig

ifconfig [--server=server] [--gateway=gateway] [--mask=mask] [--address=address]

Configure manuellement l'adresse IP, le masque de réseau, la passerelle (gateway) et l'adresse du serveur d'un périphérique réseau. Les valeurs doivent être au format décimal avec des points, comme '192.168.11.178'. L'ordre des options n'est pas important. Cette commande affiche la configuration du réseau si aucune option n'est spécifiée. Voir aussi Téléchargement d’images d’OS depuis un réseau).

pager

pager [flag]

Inverse ou définit l'état du pager interne. Si le flag est 'on', le pager interne est validé. Si le flag est 'off', le pager interne est invalidé. Si aucun argument n'est donné, l'état est inversé.

partnew

partnew part type from len

Crée une nouvelle partition primaire. part est la spécification d'une partition dans la syntaxe de GRUB (voir Conventions d'appellation); part est le type de partition et doit être un nombre compris dans 0-0xff; from est l'adresse du début et len est la longueur, les deux exprimés en secteurs.

parttype

parttype part type

Modifie le type d'une partition existante. part est la spécification d'une partition dans la syntaxe de GRUB (voir Conventions d'appellation); type est le nouveau type de partition et doit être un nombre compris dans 0-0xff.

password

password [--md5] passwd [new-config-file]

Si elle est utilisée dans la première section d'un fichier menu, elle invalide tous les contrôles d'édition interactifs (édition des entrées du menu et ligne de commandes) et les entrées protégées par la commande lock. Si le mot de passe passwd est entré, il charge le nouveau fichier de configuration appelé new-config-file s'il est spécifié, et redémarre le stage 2 de GRUB. autrement, GRUB déverrouillera simplement les instructions privilégiées. Vous pouvez aussi utiliser cette commande dans la section de script, auquel cas elle demandera un mot de passe, avanr de continuer. L'option --md5 indique à GRUB que le mot de passe est crypté par md5crypt (voir md5crypt).

rarp

rarp

Initialise un périphérique réseau via le protocole RARP. Cette commande n'est utilisable que si GRUB est compilé avec le support de netboot. Voir aussi Téléchargement d’images d’OS depuis un réseau.

serial

serial [--unit=unit] [--port=port] [--speed=speed] [--word=word] [--parity=parity] [--stop=stop] [--device=dev

Initialise un périphérique série. unit est un numéro entre 0 et 3 qui désigne le port série à utiliser; 0 par défaut, ce qui correspond au port souvent appelé COM1. port est le port d'E/S où se trouve l'UART; si spécifié, elle annule unit. speed est la vitesse de transmission; 9600 par défaut. word et stop sont les numéros des bits de données et d'arrêt. Les bits de données sont compris entre 5 et 8, les bits d'arrêt doivent être 1 ou 2. Par défaut, il y a 8 bits de données et un bit d'arrêt. parity est soit no (aucune), odd (impaire) ou even (paire), la valeur par défaut est no. L'option --device n'est utilisable que dans le shell grub pour désigner le périphérique tty à utiliser dans le système d'exploitation hôte (voir Invoquer le shell Grub).

Le port série n'est pas utilisé comme canal de communication sauf si la commande terminal est utilisée (voir terminal)

Cette commande n'est disponible que si GRUB est compilé avec le support série. Voir aussi Utiliser GRUB via une liaison série.

setkey

setkey [to_key from_key]

Modifie l'affectation des touches du clavier. La touche from_key est remplacée par la touche to_key. Si aucun argument n'est spécifié, setkey réinitialise le clavier. Notez que cette commande ne permute pas les touches. Si vous souhaitez permuter les touches, lancez de nouveau la commande avec les arguments permutés, comme ceci :

grub> setkey capslock control
grub> setkey control capslock

Une touche doit être désignée par une lettre de l'alphabet, un chiffre, ou un de ces symboles :

'escape', 'exclam', 'at', 'numbersign', 'dollar', 'percent', 'caret', 'ampersand', 'asterisk', 'parenleft', 'parenright', 'minus', 'underscore', 'equal', 'plus', 'backspace', 'tab', 'bracketleft', 'braceleft', 'bracketright', 'braceright', 'enter', 'control', 'semicolon', 'colon', 'quote', 'doublequote', 'backquote', 'tilde', 'shift', 'backslash', 'bar', 'comma', 'less', 'period', 'greater', 'slash', 'question', 'alt', 'space', 'capslock', 'FX' ('X' est un chiffre), et 'delete'.

Ce tableau décrit quel caractère correspond à chaque symbole :

SymboleCaractère
exclam!
at@
numbersign#
dollar$
percent%
caret^
ampersand&
asterisk*
parenleft(
parenright)
minus-
underscore_
equal=
plus+
bracketleft[
braceleft{
bracketright]
braceright}
semicolon;
colon:
quote'
doublequote"
backquote`
tilde~
backslash\
bar|
comma,
less<
period.
greater>
slash/
question?
space

terminal

terminal [--dumb] [--no-echo] [--no-edit] [--timeout=secs] [--lines=lines] [--silent] [console] [serial] [hercules]

Choisit le terminal de dialogue avec l'utilisateur. Il est supposé compatible VT100 sauf si --dumb est spécifié. Si console<tt> et <tt>serial sont tous les deux spécifiés, alors GRUB utilisera celui où une touche est utilisée en premier ou le premier ayant expiré son délai d'attente (timeout). Si aucun n'est spécifié, le paramétrage en cours est affiché. Cette commande n'est disponible que si GRUB est compilé avec le support série. Voir aussi Utiliser GRUB via une liaison série.

Ceci peut n'avoir aucun sens pour la plupart des utilisateurs, mais GRUB supporte aussi la console Hercules. Elle est utilisable comme une console ordinaire, et l'usage de la commande se fait de façon similaire à tout terminal série : spécifier hercules/tt> en argument.

L'option <tt>--lines définit le nombre de lignes dans votre terminal, et elle est utilisée par le pager interne. Si vous n'utilisez pas cette option, le nombre est supposé être 24.

L'option --silent supprime le message qui vous invite à appuyer sur une touche. Ceci s'avère utile si votre système n'a pas de terminal.

L'option --no-echo fait que GRUB n'affiche pas les caractères entrés. Cela implique l'option --no-edit

L'option --no-edit invalide le mode d'édition ressemblant à BASH.

terminfo

terminfo --name=name --cursor-address=seq [--clear-screen=seq] [--enter-standout-mode=seq] [--exit-standout-mode=seq]

Définit les capacités de votre terminal. Utilisez cette commande pour définir les séquences d'échappement, s'il n'est pas compatible VT100. Vous pouvez utiliser \e pour Echap et ^X pour un caractère de controle.

Vous pouvez utiliser grub-terminfo pouor genérer les arguments appropriés à cette commande? Voir Invoquer grub-terminfo.

Si aucune option n'est spécifiée, les paramètres en cours sont affichés.

tftpserver

tftpserver ipaddr

Attention : Cette commande n'existe que pour la rétro-compatibilité. Utiliser ifconfig (voir ifconfig) à la place.

Change l'adresse du serveur TFTP retournée par un serveur BOOTP/DHCP/RARP. L'argument ipaddr doit être au format décimal avec des points, comme 192.168.0.15. Cette commande n'est disponible que si GRUB a été compilé avec le support netboot. Voir aussi Utiliser GRUB via une liaison série..

unhide

unhide partition

Rend la partition partition visible en enlevant le bit hidden (masqué) du code de type de la partition. Cette commande n'est utile que pour le démarrage de DOS ou de Windows avec plusieurs partitions primaires sur un disque. Voir aussi DOS/Windows.

Liste des commandes pour la ligne de commande et les entrées de menu

Ces commandes sont utilisables en ligne de commandes et dans les entrées du menu. Si besoin, vous pouvez utiliser la commande help voir help.

blocklist

blocklist file

Affiche le fichier file en notation liste de blocs. Voir Comment spécifier des listes de blocs.

boot

boot

Boote l'OS ou le chaînage (chain-loader) qui a été chargé. N'est utile qu'avec l'utilisation de la ligne de commande pleinement interactive (la commande est implicite à la fin d'une entrée du menu)

cat

cat file

Affiche le contenu du fichier file. Cette commande peut servir à vous rappeler la partition de root de votre OS :

grub> cat /etc/fstab

chainloader

chainloader [--force] file

Charge le fichier file en chaînage. Comme tout autre fichier chargé par le code du système de fichiers, il peut utiliser la notation en liste de blocs pour charger le premier secteur de la partition active avec la notation +1. Si vous spécifiez l'option --force, alors le chargement sera forcé, même si la signature n'est pas correcte. Ceci est nécessaire quand vous voulez charger un chargeur de boot défectueux, tel que "SCO UnixWare 7.1".

cmp

cmp file1 file2

Compare le fichier file1 avec le fichier file2. S'ils diffèrent en taille, la commande affiche les tailles comme ceci :

Differ in size: 0x1234 [foo], 0x4321 [bar]

si les tailles sont égales mais que les octets diffèrent à un offset donné, la commande affiche les octets comme ceci :

Differ at the offset 777: 0xbe [foo], 0xef [bar]

S'ils sont complétement identiques, rien n'est affiché.

configfile

configfile file

Charge le fichier file en tant que fichier de configuration.

debug

debug

Bascule le mode de débogage (par défaut, il est off). Quand le mode de débogage est on quelques messages supplémentaires sont affichés pour indiquer l'activité du disque. Ce drapeau général de débogage est principalement utile pour les développeurs de GRUB pour tester du nouveau code.

displayapm

displayapm Affiiche les informations APM du BIOS .

displaymem

displaymem

Affiche ce que GRUB pense être la cartographie des adresses mémoires de la machine, y compris toutes les parties de la RAM physique installée. L'affichage de la mémoire supérieure/basse utilise l'interface BIOS standard pour la mémoire disponible dans le premier mégaoctet, ou mémoire basse, et un nombre synthétisé provenant de diverses interface BIOS de la mémoire commençant à 1 Mo et allant jusqu'au premier vide pour la mémoire supérieure. (La mémoire supérieure standard du PC est limitée à 64 Mo) Lebarhon : paragraphe à revoir

embed

embed stage1_5 device

Incorpore le stage1_5 dans les secteurs après le MBR si device est un lecteur, ou dans la zone du chargeur de boot si device est une partition FFS ou une partition ReiserFS. (Cette dernière faculté n'est pas encore implémentée). Affiche le nombre de secteurs occupés par stage1_5, en cas de succès.

Habituellement, vous n'avez pas besoin d'exécuter cette commande directement. Voir setup.

find

find filename

Recherche le nom de fichier filename dans toutes les partitions montables et affiche la liste des périphériques qui contiennent le fichier. filename doit être un nom de fichier absolu comme /boot/grub/stage1.

fstest

fstest

Bascule le mode test du système de fichiers. Lorsque le mode test du système de fichiers est on (activé), il affiche les données correspondant à toutes les lectures des périphériques et quelles valeurs sont envoyées aux routines de bas niveau. Le format est partition-offset-sector, byte-offset, byte-length pour les lectures à l'intérieur d'une partition, et [disk-offset-sector] pour les requêtes de secteurs de bas niveau depuis le disque. Le mode test du système de fichiers est mis à off (désactivé) par l'utilisation des commandes install (voir install) ou testload (voir testload ).

geometry

geometry drive [cylinder head sector [total_sector]]

Affiche l'information pour le lecteur drive. Dans le shell Grub, vous pouvez établir arbitrairement la géométrie du lecteur. Le nombre de cylindres, le nombre de têtes, le nombre de secteurs et le nombre total de secteurs sont respectivement définis par CYLINDER, HEAD, SECTOR et TOTAL_SECTOR. Si vous omettez TOTAL_SECTOR, alors il sera calculé automatiquement sur la base des valeurs de C/H/S.

halt

halt halt --no-apm

Cette commande arrête l'ordinateur. Si l'option --no-apm est dpécifiée, aucun appel BIOS APM n'est réalisé.Dans le cas sontraire, l'ordinateur est arrêté en utilisant APM.

help

help --all [pattern ...]

Affiche une aide sur les commandes internes. Si vous ne spécifiez pas pattern, la commande affiche une courte description de la plupart des commandes disponibles. Si vous spécifiez l'option --all, une courte description de de commandes rarement utilisées (telles que {{cmd|testload) sont aussi affichées.

Si vous spécifiez un pattern quelconque, la commande affiche des informations complètes sur chaque commande qui correspond à pattern

impsprobe

impsprobe

Interroge la table de configuration de l'"Intel Multiprocessor Specification" 1.1 ou 1.4 et charge les divers CPU qui sont trouvés dans une boucle serrée. Cette commande ne s'utilise que dans le Stage 2 et pas dans le shell Grub. Lebarhon : paragraphe à revoir

initrd

initrd file ...

Charge un disque virtuel (ramdisk) initial pour une image de boot au format Linux et définit en mémoire les paramètres adéquats dans la zone de configuration de Linux. Voir aussi GNU/Linux

install

install [--force-lba] [--stage2=os_stage2_file] stage1_file [d] dest_dev stage2_file [addr] [p] [config_file] [real_config_file]

Cette commande est vraiement compliquée, et vous ne devriez pas l'utiliser à moins que vous ne soyez vraiment à l'aise avec GRUB. Utilisez setup à la place. (Voir setup).

Pour faire court, la commande réalise une installation complète en présumant que stage2 ou stage1.5 (voir nota) se trouvent l'endroit définitif de leur installation.

En un peu plus détaillé, la commande charge stage_file, vérifie que c'est un "stage 1" de GRUB à la bonne version, installe dedans une liste de blocs pour charger stage2_file en tant que "stage 2". Si l'option d est présente, le "stage 1" vérifiera toujours que le disque en cours stage2_file est installé, plutot que d'utiliser le lecteur de boot. Le "stage 2" sera chargé à l'adresse addr, qui doit être 0x8000 pour un vrai "stage 2", et 0x2000 pour un "stage 1.5". Si addr est absent, GRUB déterminera l'adresse automatiquement. Il écrira alors "stage 1" complété dans le premier bloc du lecteur dest_dev. Si les options p ou config_file sont présentes, alors il lit le premier bloc de "stage 2", le modifie avec les valeurs de la partition stage2_file trouvées dessus (pour p) ou place la chaîne config_file dans la zone disant à "stage 2" où chercher le fichier de configuration au moment du boot. De même, si real_config_file est présent et stage2_file est un "stage 1.5", alors le config_file de "Stage 2" est modifié par le fichier de configuration real_config_file. Cette commande conserve le BPB DOS (et pour les disques durs, la table de partition) du secteur où le "stage 1" va être installé.

Attention 1: Des BIOS buggés ne gèrent pas correctement un lecteur de boot quand le boot se fait depuis un disque dur. Par conséquent, vous devrez malheureusement devoir spécifier l'option d, que votre "stage 2" réside ou pas sur le lecteur de boot avec un tel BIOS. Nous savons que ceux-ci présentent ce défaut :

  • Fujitsu LifeBook 400 BIOS version 31J0103A
  • HP Vectra XU 6/200 BIOS version GG.06.11

Attention 2: Nombre de BIOS ne retournent pas un bitmap de support du LBA correct, même s'il ont ce support. Aussi GRUB fournit une solution pour ignorer le mauvais bitmap, c'est l'option --force-lba. N'utilisez pas cette option si vous savez que votre BIOS ne supporte pas le LBA.

Attention 3: Vous devez spécifier l'option --stage2 dans le shell Grub, si vous ne pouvez pas démonter lesystème de fichiers où réside votre "stage 2". L'argument doit être le nom de fichier dans votre système d'exploitation.

Nota : Ils sont chargés de la même façon, aussi nous considèrerons à partir de maintenant que le Stage 1.5 est un Stage 2

ioprobe

ioprobe drive

Explore les ports d'E/S pour le disque drive. Cette commande liste les ports d'E/S sur l'écran. Pour plus d'informations techniques, Voir Internals

kernel

kernel [--type=type] [--no-mem-option] file ...

Tente de charger l'image de boot primaire (Multiboot a.out ou elf, Linux zImage ou bzImage, FreeBSD a.out, NetBSD a.out, etc.) depuis file. Le reste de la ligne est intégralement passée en ligne de commande du noyau. Tous les modules doivent être rechargés après l'utilisation de cette commande.

La commande accepte aussi l'option --type pour spécifier explicitement le type du noyau de file. L'argument type doit être l'un de ceux-ci : netbsd, freebsd, openbsd, linux, biglinux et multiboot. Cependant, vous ne devez le spécifier que si vous voulez charger un noyau NetBSD elf, car GRUB peut déterminer automatiquement le type du noyau dans les autres cas, avec une bonne fiiabilité.

L'option --no-mem-option ne sert que pour Linux. Si l'option est spécifiée, GRUB ne passe pas l'option mem= au noyau. Cette option est implicite pour les noyaux Linux 2.4.18 et suivants.

lock

lock

Interdit aux utilisateurs normaux d'exécuter des entrées menu arbitraires. Vous devez utiliser la commande password si vous souhaitez que cette commande soit utile (voir password).

Cette commande est utilisée dans un menu, comme dans cet exemple :

title Cette entrée est trop dangereuse pour être utilisée par des utilisateurs ordinaires :
lock
root (hd0,a)
kernel /no-security-os

(voir Protéger son ordinateur contre le piratage).

makeactive

makeactive

Affecte la partition active du disque root à la partition root de GRUB. Cette commande est limitée aux partitions primaires d'un disque dur.

map

map to_drive from_drive

Fait correspondre le lecteur from_drive au lecteur to_drive. Cela est nécessaire quand vous chainez des systèmes d'exploitation tels que DOS, si un tel OS ne réside pas sur le premier lecteur. Voici un exemple :

grub> map (hd0) (hd1)
grub> map (hd1) (hd0)

L'exemple échange l'ordre entre le premier disque dur et le second. Voir aussi DOS/Windows.

md5crypt

md5crypt

Invite à entrer un mot de passe, et le crypte au format MD5. Le mot de passe crypté peut être utilisé avec la commande password (Voir password). Voir aussi Protéger son ordinateur contre le piratage

module

module file ...

Charge le module de boot file pour un image de boot au format Multiboot (aucune interprétation du contenu du fichier n'est faite, aussi l'utilisateur de cette commande doit savoir à quoi s'attend le noyau en question). Le reste de la ligne est passé en ligne de commande du module, comme la commande kernel. Vous devez charger une image de noyau Multiboot avant de charger tout mmodule. Voir aussi modulenounzip.

modulenounzip

modulenounzip file ...

La même chose que pour module, (voir ci-dessus), sauf que la décompression automatique est invalidée.

pause

pause message ...

Imprime le message, puis attend qu'une touche soit appuyée. Notez que mettre <^G> (ASCII code 7) dans le message provoquera l'émission d'un beep dans le haut parleur, ce qui est utile pour inviter l'utilisateur à changer les disquettes.

quit

quit

Sort du shell grub grub (voir Invoquer le shell Grub). Cette commande ne peut être utilisée que dans le shell grub.

reboot

reboot

Redémarre l'ordinateur

read

read addr

Lit une valeur en 32 bits dans la mémoire à l'adresse addr et l'affiche au format hexadécimal.

root

root device [hdbias]

Fait correspondre le périphérique root au périphérique device, puis essaie de le monter pour obtenir la taille de la partition (pour passer le descripteur de partition dans ES:ESI, utilisé par certains chargeurs de boot de chaînage), le type de lecteur BSD (pour booter les noyaux BSD en utilisant leur format de boot natif), et déterminer correctement la partition où une sous-partition BSD est située. La paramètre optionnel hdbias est un numéro pour dire au noyau BSD combien de lecteurs BIOS sont comptés par les contrôleurs avant celui qui est actif. Par exemple, s'il y a un disque IDE etun disque SCSI, et que votre partition de root de FreeBSD est sur le disque SCSI, alors mettez '1' pour hdbias.

Voir aussi rootnoverify

rootnoverify

rootnoverify device [hdbias]

Similaire à root (voir ci-dessus), mais n'essaye pas de monter la partition. Ceci est utile lorsqu'un OS est en dehors de la zone de disque que GRUB peut lire, mais paramétrer correctement le périphérique root reste désiré. Remarquez que les valeurs mentionnées ci-dessus dans root et qui sont dérivées de le tentative de montage ne fonctionneront pas correctement.

savedefault

savedefault num

Enregistre l'entrée de menu courante ou num si elle est spécifiée comme entrée par défaut. Voici un exemple :

default saved
timeout 10
              
title GNU/Linux
root (hd0,0)
kernel /boot/vmlinuz root=/dev/sda1 vga=ext
initrd /boot/initrd
savedefault
              
title FreeBSD
root (hd0,a)
kernel /boot/loader
savedefault

Avec cette configuration, GRUB choisira l'entrée précédemment bootée comme entrée par défaut.

Vous pouvez spécifier fallback (secours) à la place d'un nombre. Alors, la prochaine entrée de secours est enregistrée. Elle est choisie parmi les entrées de secours. Normalement, ce sera la première entrée parmi celles de secours.

Voir aussi Défaut et Invoquer grub-set-default

setup

setup [--force-lba] [--stage2=os_stage2_file] [--prefix=dir] install_device [image_device]

Paramètre automatiquement l'installation de GRUB. Cette commande utilise la commande install très souple (voir install) en arrière plan et installe GRUB dans le périphérique install_device. Si image_device est spécifié, alors la commande trouve les images GRUB (voir Les fichiers image de GRUB) dans le périphérique image_device, sinon, utilise le périphérique root courant, qui peut être défini par la commande root. Si install_device est un disque dur, alors un Stage 1.5 est intégré dans le disque si possible.

L'option --prefix spécifie le répertoire dans lequel sont mises les images GRUB. Si ce n'est pas spécifié, GRUB les recherche automatiquement dans /boot/grub and /grub.

Les options --force-lba et --stage2 sont passées à install si spécifié. Voir install pour plus d'informations.

testload

testload file

Lit le contenu entier de file de plusieurs façons différentes et les compare, pour tester le code du système de fichiers. La sortie est quelque peu énigmatique, mais si aucune erreur n'est reportée et que la lecture final de i=X, filepos=Y trouve X et Y égaux, alors c'est tout à fait cohérent, et fonctionnera très probablement correctement en raison d'une erreur d'offset cohérente. Si le test réussit, alors la suite consiste à charger un noyau.

testvbe

testvbe mode

teste le mode VESA BIOS EXTENSION mode. Cette commande bascule la carte graphique en mode graphique, et montre une animation sans fin. Appuyer sur n'importe quelle touche pour revenir. voir aussi vbeprobe.

uppermem

uppermem kbytes

Force GRUB à supposer que seuls kbytes kilo-octets de mémoire étendue sont installés. Toute table d'adressage du système est ignorée.

Attention : Cette commande doit être utilisée avec une grande attention, et ne devrait être nécessaire que sur d'anciennes machines. Le sondage par le BIOS de GRUB peut détecter toute la RAM sur les nouvelles machines dont l'auteur a entendu parler. Il peut aussi servir pour le débogage, pour mentir à un OS.

vbeprobe

vbeprobe [mode]

Examine les informations de VESA BIOS EXTENSION. Si le mode mode est spécifié, ne montre que les informations au sujet de mode. Sinon, la commande liste sur l'écran les modes VBE disponibles. Voir aussi testvbe.

Messages d'erreur retournés par GRUB

Ce chapitre décrit les messages d'erreur rapportés par GRUB quand vous rencontrez un problème. Voir Invoquer le shell Grub, si votre problème est spécifique au shell Grub.

Erreurs rapportées par « Stage 1 »

La façon générale dont « Stage 1 » gère les erreurs est d’imprimer un message d’erreur puis d’arrêter. Appuyer sur les touches CTRL – ALT –DEL reboot la machine.

Voici une liste compréhensible des messages d’erreur de « Stage 1 » :

Hard disk error 
Stage 2 ou stage 1.5 va être lu sur le disque dur, et la tentative de déterminer la taille et la géométrie du disque à échoué.
Floppy error 
Stage 2 ou stage 1.5 va être lu sur la disquette, et la tentative de déterminer la taille et la géométrie de la disquette à échoué. C’est une erreur listée à part puisque la séquence de test est différente de celle pour les disques durs.
Read error 
Une erreur de lecture du disque s’est produite en essayant de lire le stage 2 ou le stage 1.5.
Geom error 
L’endroit où se trouve le stage 2 ou le stage 1.5 n’est pas dans la partie du disque directement supportée par les appels en lecture du BIOS. Ceci peut arriver si la géométrie translatée du BIOS a été changée par l’utilisateur ou le disque est déplacé sur une autre machine ou contrôleur après l’installation, ou GRUB n’a pas été installé en s’utilisant lui-même (si c’était le cas, la version stage 2 de cette erreur aurait été vue pendant ce processus et l’installation ne se serait pas terminée).

Erreurs rapportées par « Stage 1.5 »

La façon générale dont « Stage 1.5 » gère les erreurs est d’imprimer un numéro d’erreur sous la forme Error num puis d’arrêter. Appuyer sur les touches CTRL – ALT –DEL reboot la machine.

Les numéros d’erreur correspondent aux erreurs rapportées par le stage 2. (Voir ci-dessous)

Erreurs rapportées par « Stage 2 »

La façon générale dont « Stage 2 » gère les erreurs est d’arrêter l’opération en cours, d’imprimer un message d’erreur, puis (si possible) soit continuer sur la base qu’une erreur s’est produite ou attendre que l’utilisateur traite l’erreur.

Voici une liste compréhensible des messages d’erreur de « Stage 2 » : (les numéros d’erreurs pour le stage 1.5 sont listés avant le tiret de chaque description) :

1 – Filename must be either an absolute filename or blocklist 
Cette erreur est retournée si un nom de fichier est requis et ne respecte pas la syntaxe/les règles listées dans le système de fichiers.
2 – Bad file or directory type
Cette erreur est retournée si un fichier requis n’est pas un fichier ordinaire, mais quelque chose comme un lien symbolique, un répertoire ou un FIFO.
3 - Bad or corrupt data while decompressing file 
Cette erreur est retournée si le code de décompression rencontre n erreur interne. Cela provient généralement d’un fichier corrompu.
4 – Bad or incompatible header in compressed file 
Cette erreur est retournée si un fichier d’en-tête de fichier compressé est défectueux.
5 – Partition table invalid or corrupt
Cette erreur est retournée si la vérification de l’intégrité de la table des partitions échoue. Ceci est un mauvais signe.
6 – Mismatched or corrupt version of stage1/stage2 
Cette erreur est retournée si la commande d’installation pointe vers des versions incompatibles ou corrompues de stage 1 ou stage 2. Elle ne peut pas détecter la corruption en général, mais c’est une vérification de la validité des numéros de version, qui devraient être corrects.
7 – Loading below 1MB is not supported
Cette erreur est retournée si l’adresse la plus basse dans le noyau est en-dessous de la limite des 1 Mo. Le format zImage de Linux est un cas spécial et n’est pas concerné puisqu’il a une adresse de chargement fixe et une taille maximum.
8 – Kernel must be loaded before booting 
Cette erreur est retournée si GRUB tente d’exécuter une séquence de boot sans avoir de noyau pour démarrer.
9 – Unknown boot failure 
Cette erreur est retournée si la tentative de boot échoue pour des raisons inconnues
10 – Unsupported Multiboot features requested 
Cette erreur est retournée quand les caractéristiques du Multiboot précisées dans l’en-tête du Multiboot requière une particularité qui n’est pas reconnue. La raison de cela est que le noyau exige une prise en compte spéciale que GRUB est probablement incapable de fournir.
11 – Unrecognized device string 
Cette erreur est retournée si un message de périphérique était attendu, et le message rencontré n’est pas conforme à la syntaxe ou aux règles listées dans le système de fichiers.
12 – Invalid device requested 
Cette erreur est retournée si un message de périphérique est reconnaissable mais ne correspond pas aux erreurs des autres périphériques.
13 - Invalid or unsupported executable format 
Cette erreur est retournée si l’image du noyau devant être chargée n’est pas reconnue comme Multiboot ou comme un des formats natifs supportés (Linux zImage ou bzImage, FREEBSD, NetBSD).
14 – Filesystem compatibility error, cannot read whole file
Certains codes de lecture du système de fichiers dans GRUB ont des limites sur la longueur des fichiers lisibles. Cette erreur est retournée quand l’utilisateur dépasse ces limites.
15 – File not found
Cette erreur est retournée si un nom de fichier donné n’est pas trouvé, mais tout le reste (comme les informations sur le disque ou la partition) est OK.
16 - Inconsistent filesystem structure 
Cette erreur est retournée par le code du système de fichiers pour indiquer une erreur interne trouvée lors de la vérification de la structure sur disque du système de fichiers. Ceci est généralement provoqué par un système de fichiers corrompu ou par des bogues dans le code qui le gère dans GRUB.
17 – Cannot mount selected partition 
Cette erreur est retournée si la partition demandée existe, mais le type du système de fichiers n’est pas reconnu par GRUB.
18 – Selected cylinder exceeds maximum supported by BIOS 
Cette erreur est retournée quand une lecture est tentée à l’adresse d’un bloc linéaire au-delà de la fin de la zone translatée du BIOS. Ceci arrive généralement si votre disque est plus grand que ce que le BIOS peut gérer (512Mo pour les disques (E)IDE sur les plus vieilles machines et 8Go en général).
19 – Linux kernel must be loaded before initrd 
Cette erreur est retournée si la commande initrd est utilisée avant de charger un noyau Linux.
20 – Multiboot kernel must be loaded before modules 
Cette erreur est retournée si la commande module load est utilisée avant de charger un noyau Multiboot. Toutefois, cela n’a de sens que dans ce cas, puisque GRUB ne sait pas comment communiquer la présences de ces modules à un noyau ignorant le Multiboot.
21 – Selected disk does not exist
Cette erreur est retournée si une chaîne désigne un disque ou un périphérique BIOS qui n’est pas présent dans le système ou non reconnu par le BIOS.
22 - No such partition 
Cette erreur est retournée si une partition est demandée alors qu’elle n’est pas sur le disque sélectionné.
23 – Error while parsing number 
Cette erreur est retournée si GRUB s’attendait à lire un nombre et rencontre de mauvaises données.
24 – Attempt to access block outside partition 
Cette erreur est retournée si un bloc d’adresses linéaire est en dehors de la partition. Ceci arrive généralement en raison d’un système de fichiers corrompu ou un bogue dans le code qui le gère dans GRUB (C’est un outil de débogage important)
25 – Disk read error 
Cette erreur est retournée s’il y a une erreur de lecture disque quand on essaye de tester ou de lire des données sur un disque particulier.
26 – Too many symbolic links 
Cette erreur est retournée si le comptage des liens dépasse le maximum (actuellement 5), il est possible que les liens symboliques forment une boucle.
27 – Unrecognized command 
Cette erreur est retournée si une commande inconnue est entrée en ligne de commandes ou dans une séquence de boot d’un fichier de configuration et que cette entrée est sélectionnée.
28 – Selected item cannot fit into memory 
Cette erreur est retournée si une commande de chargement d’un noyau, d’un module ou d’un fichier est soit en train d’essayer de charger ses données de telle sorte qu’elles ne rentrent pas en mémoire, ou elles sont tout simplement trop volumineuses.
29 – Disk write error 
Cette erreur est retournée s’il y a une erreur d’écriture sur disque quand on essaye d’écrire sur un disque particulier. Ceci n’arrive généralement que lors d’une installation de la commande set active partition.
30 - Invalid argument 
Cette est retournée si un argument spécifié à une commande n'est pas valide.
31 - File is not sector aligned 
Cette erreur ne peut arriver que lorsque vous accédez à une partition ReiserFS avec des listes de blocs (par exemple la commande {{cmd|install). Dans ce cas, vous devez monter la partition avec l'option -o notail.
32 - Must be authenticated 
Cette erreur est retournée si vous essayez de lancer une entrée verrouillée. vous devez entrer un mot de passe valide avant de démarrer une telle entrée.
33 - Serial device not configured 
Cette erreur est retournée si vous essayez de changer votre terminal pour un terminal série avant d'initialiser un périphérique série.
34 - No spare sectors on the disk 
Cette erreur est retournée si un disque n'a pas assez d'espace disponible. Ceci arrive quand vous essayez d'intégrer Stage 1.5 dans les secteurs inutilisés après le MBR, mais la première partition commence immédiatement après le MBR ou ils sont utilisés par EZ-BIOS.

Invoquer le shell Grub

Ce chapitre documente le shell GRUB. Remarquez que le shell GRUB est un émulateur, il ne s'exécute pas sous l'environnement natif, aussi il fait quelques fois des erreurs. En conséquence, vous ne devez pas trop lui faire confiance. S'il y a un problème avec lui, n'hésitez pas à essayer l'environnement natif de GRUB, plus particulièrement quand il devine une mauvaise table de correspondance entre les lecteurs BIOS et les périphériques de l'OS.

Introduction au shell grub

Vous pouvez utiliser la commande grub pour installer GRUB dans votre système d'exploitation et pour réaliser des tests quand vous ajoutez une nouvelle fonction dans GRUB ou quand vous corrigez un bogue. grub est presque identique au Stage 2, et, en fait , il partage le code source avec Stage 2 et vous pouvez utiliser les mêmes commandes (voir Liste des commandes disponibles). Stage 2 est émulé en remplaçant les appels du BIOS avec ceux du système UNIX et des fonctions de libc.

La commande grub accepte les options suivantes :

--help 
Affiche un résumé des options en ligne de commande et quitte
--version 
Affiche le numéro de version de GRUB et quitte
--verbose 
Affiche quelques messages à fins de debogage
--device-map=file 
Utilise le fichier de table de correspondance des périphériquefile. Le format est décrit dans La table de correspondance entre les lecteurs BIOS et les périphériques de l'OS.
--no-floppy 
Ne recherche pas de lecteur de disquette. Cette option est sans effet si l’option --device-map est spécifiée (Voir La table de correspondance entre les lecteurs BIOS et les périphériques de l'OS).
--probe-second-floppy 
Teste le deuxième lecteur de disquette. Si cette option n’est pas spécifiée, le shell grub ne le teste pas, car cela peut prendre beaucoup de temps. Si vous spécifiez le fichier de table de correspondance (Voir La table de correspondance entre les lecteurs BIOS et les périphériques de l'OS), le shell grub ignore cette option.
--config-file=file 
Lit le fichier de configuration file au lieu de /boot/grub/menu.list. Le format est le même que pour la syntaxe normale de GRUB. Voir Syntaxe et sémantique du système de fichiers pour plus d’informations.
--boot-drive=drive 
Désigne par drive le boot_drive de stage 2. L’argument drive doit être un nombre entier (décimal, octal ou hexadécimal).
--install-partition=par 
Désigne par par le install_partition de stage 2. L’argument drive doit être un nombre entier (décimal, octal ou hexadécimal).
--no-config-file 
N’utilise pas le fichier de configuration, même s’il peut être lu.
--no-curses 
N’utilise pas l’interface de gestion de l’écran curses, même si elle est disponible
--batch 
Cette option à la même signification que --no-config-file –no-curses.
--read-only 
Invalide toute écriture sur disque.
--hold 
Attend l’attribution d’un debogueur. Cette option est utile quand vous voules déboguer le code de démarrage.

Comment installer GRUB via la commande grub

La procédure d’installation est la même que sous Stage 2. Voir Installation, pour plus d’informations. La commandegrub-specific information est décrite ici. Vous devez faire attention au cache tampon. grub utilise les noms des périphériques au lieu des noms des systèmes de fichiers connus par votre système d’exploitation, aussi il y a risque de corruption du systèmes de fichiers par le cache. voici ce que nous recommandons :

  • Si vous pouvez démonter les lecteurs sur lesquels GRUB pourrait écrire des données, faites le avant de lancer grub.
  • Si un lecteur ne peut pas être démonté, mais peut être monté en mode read-only (lecture seule) faites-le. Cela sera plus sûr.
  • Si un lecteur doit être monté en mode lecture-écriture, assurez vous qu’aucune activité n’existe dessus pendant l’exécution de la commande grub.
  • Rebootez votre système le plus tôt possible. Ceci n’est probablement pas requis si vous suivez les règles ci-dessus, mais rebooter est la méthode la plus sûre.

De plus, entrez la commande quit quand vous terminez l’installation. Ceci est très important car quit ceci rend cohérent le cache tampon. Ne faites pas C-c.

Ni vous désirez installer GRUB non interactif, précisez l’option --batch dans la ligne de commande. Voici un exemple simple :

#!/bin/sh
     
     # Use /usr/sbin/grub if you are on an older system.
     /sbin/grub --batch <<EOT 1>/dev/null 2>/dev/null
     root (hd0,0)
     setup (hd0)
     quit
     EOT

La table de correspondance entre les lecteurs BIOS et les périphériques de l'OS

Quand vous spécifiez l’option --device-map (voir Introduction au shell grub), le shell grub crée le fichier de la table de correspondance automatiquement à moins qu’elle n’existe déjà.. le nom de fichier /boot/grub/device.map est préféré.

Si le fichier de la table de correspondance existe, le shell grub le lit pour mapper les lecteurs BIOS vers les périphériques de l’OS. Le fichier est constitué de lignes comme celle-ci :

device file

device est un lecteur spécifié avec la syntaxe de GRUB (voir Comment spécifier les périphériques), et file est un fichier de l’OS, qui normalement est un fichier de périphérique.

La raison pour laquelle le shell grub vous donne le fichier de la table de correspondance est qu’il ne peut pas deviner correctement la correspondance entre les lecteurs BIOS et les périphériques de l’OS dans certains environnements. Par exemple, si vous échangez la séquence de boot entre IDE et SCSI dans le BIOS, cela fausse l’ordre.

Ainsi, éditez le fichier si le shell grub commet des erreurs. Vous pouvez ajouter des commentaire si besoin dans le fichier, le shell grub considère qu’une ligne est un commentaire lorsqu’elle commence par #.

Invoquer grub-install

Le programme grub-install installe GRUB sur votre lecteur en utilisant le shell grub (voir Invoquer le shell Grub). Vous devez spécifier le nom du périphérique sur lequel vous désirez l’installer, comme ceci :

grub-install install_device

Le nom du périphérique install_device est un nom de périphérique de l’OS ou de GRUB.

grub-install accepte les options suivantes :

--help 
Affiche un résumé des options en ligne de commande et quitte.
--version 
Affiche le numéro de version de GRUB et quitte.
--force-lba  
Oblige GRUB à utiliser le mode LBA même pour un BIOS bogué. N’utilisez cette option que si le BIOS ne fonctionne pas correctement en mode LBA, si toutefois il supporte le mode LBA.
--root-directory=dir 
Installe les images de GRUB dans le répertoire dir à la place du répertoire root. Cette option est utile quand vous désirez installer GRUB sur une partition séparée ou sur un disque amovible. Voici un exemple dans lequel vous avez une partition de boot séparée qui est montée sur /boot :
grub-install --root-directory=/boot hd0
--grub-shell=file 
Utilise file pour le shell grub. vous pouvez ajouter des options après le nom de fichier, comme ceci :
grub-install --grub-shell="grub --read-only" /dev/fd0
--recheck 
revérifie la table de correspondance, même si /boot/grub/device.map existe déjà. Vous devez utiliser cette option chaque fois que vous ajoutez/enlevez un disque sur votre ordinateur.

Invoquer grub-md5-crypt

Le programme grub-md5-crypt crypte les mots de passe au format MD5. Ceci est juste une interface du shell grub (voir Invoquer le shell grub). Les mots de passe cryptés par ce programme peuvent être utilisés avec la commande password (voir password).

grub-md5-crypt accepte les options suivantes :

--help 
Affiche un résumé des options en la ligne de commande et quitte.
--version 
Affiche le numéro de veresion et quitte.
--grub-shell=file 
Utilise file comme le shell grub.

Invoquer grub-terminfo

Le programme grub-terminfo génère une commande terminfo depuis un nom terminfo (voir terminfo). Le résultat peut être utilisé dans un fichier de configuration, pour définir les séquences d’échappement. Parce que GRUB considère que votre terminal est par défaut compatible vt100, ceci ne devrait être utile que si votre terminal est hors standard (tel qu’un vt52).

terminfo accepte les options suivantes :

--help 
Affiche un résumé des options et quitte.
--version 
Affiche la version de GRUB et quitte.

Vous devez préciser un argument à cette commande. Par exemple :

grub-terminfo vt52

Invoquer grub-set-default

Le programme grub-set-default définit les entrées de boot par défaut de GRUB. Ceci crée automatiquement un fichier nommé default dans le répertoire de GRUB (par ex : /boot/grub), s’il n’est pas déjà présent. Ce fichier est utilisé pour déterminer les entrées de boot par défaut quand GRUB boote votre système avec l’utilisation de ‘’default saved’’ dans votre fichier de configuration (voir default), et pour enregistrer la prochaine entrée par défaut quand vous utilisez ‘’savedefault’’ dans une entrée de boot (voir savedefault).

grub-set-default accepte les options suivantes :

--help 
Affiche un résumé des options en ligne de commande et quitte
--version 
Affiche le numéro de version de GRUB et quitte
--root-directory=dir 
Utilise le répertoire dir à la place du répertoire de root (par ex : /) pour définir la position du fichier par défaut. Ceci est utile quand vous montez un disque qui est utilisé par un autre système.

Vous devez préciser un argument unique à cette commande. C’est normalement le numéro de l’entrée de boot par défaut. Par exemple, si vous avez ce fichier de configuration :

default saved
     timeout 10
     
     title GNU/Hurd
     root (hd0,0)
     ...
     
     title GNU/Linux
     root (hd0,1)
     ...

Et si vous désirez définir la prochaine entrée de boot par défaut pour GNU/Linux, vous pouvez exécuter cette commande :

grub-set-default 1

Parce que l’entrée pour GNU/Linux est 1. Remarquez que les entrées sont comptées depuis zéro. Ainsi si vous désirez spécifier GNU/Hurd ici, alors vous devriez spécifier 0. cette caractéristique est très utile si vous désirez tester un nouveau noyau ou pour rendre votre système robuste. Voir Comment rendre votre système robuste pour plus d’informations sur la façon de rendre un système robuste.

Invoquer mbchk

Le programme mbchk vérifie le format d'un noyau Multiboot. Nous vous recommandons d'utiliser ce programme avant de démarrer votre propre noyau avec GRUB. mbchk accepte les options suivantes:

--help 
Affiche un résumé des options et quitte.
--version 
Affiche la version de GRUB et quitte.
--quiet 
Supprime les messages normaux.

Annexe A : Comment obtenir et construire GRUB

Attention : GRUB nécessite binutils-2.9.1.0.23 ou plus récent car l’assembleur GNU a été changé pour qu’il puisse produire du code machine réellement 16 bits entre 2.9.1 et 2.9.1.0.x. voir http://sources.redhat.com/binutils/ pour obtenir des informations sur comment obtenir la dernière version.

GRUB est disponible depuis le site de l’archive GNU alpha à ftp://alpha.gnu.org/gnu/grub ou un de ses mirroirs. Le fichier est nommé grub-version.tar.gz. La version actuelle est 0.97, aussi le fichier que vous devriez trouver est : ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz

Pour décompacter GRUB, utilisez cette instruction :

zcat grub-0.97.tar.gz | tar xvf -

Qui va créer un répertoire appelé grub-0.97 avec toutes les sources. Vous pouvez regarder le fichier INSTALL pour obtenir des instructions détaillées sur la méthode pour construire et installer GRUB, mais vous ne devriez n’avoir qu'à faire :

cd grub-0.97
./configure
make install

Ceci installera le shell grub (voir Invoquer le shell Grub), le vérificateur Multiboot mbchk (Voir Invoquer mbchk), et les images de GRUB. Ceci installera aussi le manuel de GRUB.

Aussi, la dernière version est disponible depuis le CVS. Voir http://savannah.gnu.org/cvs/?group=grub pour plus d’informations.

Annexe B : Rapporter les bogues

  1. Voici le guide pour rapporter un bogue. Examinez le avant de soumettre un bogue.
  2. Avant de se tourmenter, lisez et relisez ce manuel. Aussi, voir le GNU GRUB FAQ..
  3. Toujours indiquer les informations de votre GRUB. Le numéro de version et la configuration sont très importants. Préciser si vous l’avez construit vous-même, donnez les options spécifiées au script de configuration et votre OS, y compris les versions de gcc et de binutils.
  4. Si vous avez des problèmes d’installation, dites nous comment vous avez installé GRUB. N’oubliez pas les messages d’erreur, s’il y en a. Ne dire que « GRUB bloque quand il boote » n’est pas suffisant.
  5. Les informations sur votre matériel sont aussi essentielles. Ce qui l’est particulièrement sont la géométrie et les tables de partition de votre disque dur et votre BIOS.
  6. Si GRUB ne peut pas booter votre OS, écrivez tout ce que vous voyez sur l’écran. Ne pas paraphraser comme « L’OS plante avec GRUB, alors même qu’il peut booter correctement avec un autre chargeur de boot". Mentionnez les commandes exécutées, les messages affichés par celles-ci, et les informations sur votre OS y compris le numéro de version.
  7. Expliquez ce que vous vouliez faire. Il est très utile de connaître vos objectifs et vos souhaits, et pourquoi GRUB n’y répond pas.
  8. Si vous pouvez enquêter vous-même sur la raison du problème, faites le. Ceci apportera plus d’informations pour vous comme pour vous. Joindre un correctif est même mieux.
  9. Quand vous joignez un correctif, écrivez le au format diff unifié et écrivez les entrées ChangeLog. Mais même quand vous créez un correctif, n’oubliez pas d’expliquer votre problème, pour que nous puissions comprendre à quoi sert le correctif.
  10. Ecrivez tout ce dont vous pensez qui pourrait être indiqué. Comprenez que nous avons besoin de reproduire le même problème que celui que vous avez rencontré dans notre environnement. aussi vos informations doivent être suffisantes pour nous permettre de la faire. N’oubliez pas que nous ne pouvons pas voir votre ordinateur directement. Si vous n’êtes pas sûr de devoir ou pas relater un fait, relatez le ! Rapporter trop de choses est préférable que d’en omettre.

Si vous suivez ce guide, soumettez le rapport à Bug Tracking System. En parallèle, vous pouvez un rapport par courrier électronique à bug-grub@gnu.org. Mais nous vous recommandons fortement d’utiliser le ‘’Bug Tracking System’’, car le courrier électronique peut facilement se perdre. Une fois votre rapport en notre possession, nous essayons de corriger le bogue.

Annexe C : Où va GRUB ?

Nous avons commencé la nouvelle génération de GRUB, GRUB 2. Il intégrera l’internationalisation, le chargement dynamique des modules, la gestion de la mémoire réelle, le support d’architectures multiples, un langage de script, et beaucoup d’autres caractéristiques intéressantes. Si vous êtes intéressé par le développement de GRUB 2, jettez un œil sur sa page d’accueil

FAQ

FAQ en français

A suivre ...



Vous êtes libre de copier et de modifier ce manuel GNU, comme un logiciel GNU. Les copies publiées par la Free Software Foundation lèvent des fonds pour le développement de GNU.