GRUB
Le GRUB, dont le nom provient de l'anglicisme «GRand Unified Bootloader», est un gestionnaire de démarrage (aussi appelé par certain programme d'amorçage) permettant de lancer n'importe quel système d'exploitation et voir même lancer certains systèmes d'exploitation avec des paramètres particulier. Pour la communauté open source, il est perçu comme une solution de remplacement LILO, parce qu'il est plus flexible et qu'il n'a pas besoin d'être réinstaller à chaque petite modification souhaité.
Il rattrape donc les retards qu'il avait par rapport à des applications professionnels comme System Commander par exemple. Toutefois, un bienfait n'arrivant jamais seul, il offre aussi la possibilité à celui sachant quel instruction indiquer une façon de contourner les mots de passe de l'utilisateur «root» sur une distribution Linux lorsque la partition n'est pas crypté.
Fichier de configuration
L'emplacement du fichier de configuration GRUB est situé sur une partition ext3 ou ext4 de Linux et peu varié d'un distribution Linux à l'autre, ainsi :
Distribution | Emplacement |
---|---|
Debian | /boot/grub/grub.cfg |
CentOS / Fedora / Redhat | /etc/grub.conf (lien symbolique) /boot/grub/grub.conf |
Introduction
Un chargeur de démarrage est le premier logiciel exécuté au démarrage d'un ordinateur. Il est responsable du chargement et du transfert de contrôle vers le noyau d'un système d'exploitation (comme Linux ou GNU Mach). Le noyau, à son tour, initialise le reste du système d'exploitation (par exemple, un système GNU).
GNU GRUB est un chargeur de démarrage très puissant, capable de charger une grande variété de systèmes d'exploitation libres, ainsi que des systèmes d'exploitation propriétaires avec chargement en chaîne1. GRUB est conçu pour gérer la complexité du démarrage d'un ordinateur personnel ; le programme est étroitement liés à cette plateforme, bien que le portage vers d'autres plateformes puisse être envisagé ultérieurement.
L'une des fonctionnalités importantes de GRUB est sa flexibilité ; GRUB comprend les systèmes de fichiers et les formats exécutables du noyau, ce qui vous permet de charger n'importe quel système d'exploitation comme vous le souhaitez, sans enregistrer l'emplacement physique de votre noyau sur le disque. Ainsi, vous pouvez charger le noyau simplement en spécifiant son nom de fichier, l'unité de disque et la partition où il réside.
Lors du démarrage de GRUB, vous pouvez utiliser soit une interface en ligne de commande (voir Interface en ligne de commande), soit une interface de menu (voir Interface de menu). L'interface en ligne de commande vous permet de saisir manuellement les spécifications du lecteur et le nom de fichier du noyau. Dans l'interface de menu, il vous suffit de sélectionner un système d'exploitation à l'aide des touches fléchées. Le menu est basé sur un fichier de configuration préalablement préparé (voir Configuration). Dans le menu, vous pouvez passer en mode ligne de commande, et inversement. Vous pouvez même modifier les entrées du menu avant de les utiliser.
Dans les sections suivants, vous apprendrez à spécifier un unité de disque, une partition et un nom de fichier (voir Convention de nommage) pour GRUB, à installer GRUB sur votre unité de disque et à démarrer vos systèmes d'exploitation (voir Démarrage), étape par étape.
Histoire de GRUB
GRUB est né en 1995, lorsqu'Erich Boleyn tentait de démarrer le GNU Hurd avec le micronoyau Mach 4 de l'Université de l'Utah (aujourd'hui connu sous le nom de GNU Mach). Erich et Brian Ford ont conçu la spécification Multiboot (voir Motivation dans la spécification Multiboot), déterminés à ne pas multiplier les méthodes de démarrage incompatibles entre PC.
Erich a ensuite commencé à modifier le chargeur de démarrage de FreeBSD afin qu'il comprenne Multiboot. Il a rapidement réalisé qu'il serait beaucoup plus simple d'écrire son propre chargeur de démarrage de toutes pièces que de continuer à travailler dessus, et c'est ainsi que GRUB est né.
Erich a ajouté de nombreuses fonctionnalités à GRUB, mais d'autres priorités l'ont empêché de répondre aux demandes d'une base d'utilisateurs en pleine expansion. En 1999, Gordon Matzigkeit et Yoshinori K. Okuji ont adopté GRUB comme paquet GNU officiel et ont ouvert son développement en mettant à disposition les dernières sources via un CVS anonyme.
Au cours des années suivantes, GRUB a été étendu pour répondre à de nombreux besoins, mais il est rapidement devenu évident que sa conception ne suivait pas les extensions qui lui étaient apportées, et il était devenu très difficile d'y apporter des modifications supplémentaires sans altérer les fonctionnalités existantes. Vers 2002, Yoshinori K. Okuji a commencé à travailler sur PUPA (Preliminary Universal Programming Architecture pour GNU GRUB), visant à réécrire le coeur de GRUB pour le rendre plus propre, plus sûr, plus robuste et plus puissant. PUPA a finalement été renommé GRUB 2, et la version originale de GRUB a été renommée GRUB Legacy. Une légère maintenance a continué d'être effectuée sur GRUB Legacy, mais la dernière version (0.97) date de 2005 et, au moment de la rédaction de cet article, il semble peu probable qu'une autre version soit disponible.
Vers 2007, les distributions GNU/Linux ont commencé à utiliser GRUB 2 dans une mesure limitée, et à la fin de 2009, plusieurs distributions majeures l'installaient par défaut.
Différences par rapport aux versions précédentes
GRUB 2 est une réécriture de GRUB, bien qu'il partage de nombreuses caractéristiques avec la version précédente, désormais connue sous le nom de GRUB Legacy. Les utilisateurs de GRUB Legacy auront peut-être besoin d'aide pour s'y retrouver dans cette nouvelle version.
Le fichier de configuration a un nouveau nom (grub.cfg au lieu de menu.lst ou grub.conf), une nouvelle syntaxe (voir Configuration) et de nombreuses nouvelles commandes (voir Commandes). La configuration ne peut pas être copiée directement, bien que la plupart des utilisateurs de GRUB Legacy ne soient pas surpris par la syntaxe.
grub.cfg est généralement généré automatiquement par grub-mkconfig (voir Configuration simple). Cela facilite la gestion des mises à niveau du noyau versionnées.
Les numéros de partition dans les noms de périphériques GRUB commencent désormais à 1, et non plus à 0 (voir Convention de nommage).
Le fichier de configuration est désormais écrit dans un langage de script plus complet : variables, conditions et boucles sont disponibles.
Une petite quantité de stockage persistant est disponible lors des redémarrages, grâce aux commandes save_env et load_env de GRUB et à l'utilitaire grub-editenv. Cette fonctionnalité n'est pas disponible dans toutes les configurations.
GRUB 2 offre des méthodes plus fiables pour trouver ses propres fichiers et ceux des noyaux cibles sur les systèmes multidisques, et propose des commandes pour trouver des périphériques à l'aide d'étiquettes de système de fichiers ou d'identifiants uniques universels (UUID).
GRUB 2 est disponible pour plusieurs autres types de systèmes, en plus des BIOS PC pris en charge par GRUB Legacy : PC EFI, PC coreboot, PowerPC, SPARC et MIPS Lemote Yeeloong sont tous pris en charge.
De nombreux autres systèmes de fichiers sont pris en charge, notamment ext4, HFS+ et NTFS.
GRUB 2 peut lire les fichiers directement depuis les périphériques LVM et RAID.
Un terminal graphique et un système de menus graphiques sont disponibles.
L'interface de GRUB 2 peut être traduite, y compris les noms des entrées de menu.
Les fichiers image (voir Images) composant GRUB ont été réorganisés ; les étapes 1, 1.5 et 2 ont disparu.
GRUB 2 intègre de nombreuses fonctionnalités dans des modules chargés dynamiquement, ce qui permet de réduire la taille de l'image principale et de la construire de manière plus flexible.
Fonctionnalités de GRUB
La principale exigence de GRUB est sa conformité à la spécification Multiboot, décrite dans la section «Motivation de la spécification Multiboot».
Les autres objectifs, classés par ordre d'importance approximatif, sont les suivants :
- Les fonctions de base doivent être simples d'utilisation pour les utilisateurs finaux ;
- Des fonctionnalités riches pour les experts et les concepteurs de noyaux ;
- Une rétrocompatibilité pour le démarrage de FreeBSD, NetBSD, OpenBSD et Linux. Les noyaux propriétaires (tels que DOS, Windows NT et OS/2) sont pris en charge via une fonction de chargement en chaîne de caractères.
À l'exception de modes de compatibilité spécifiques (chargement en chaîne et format Linux piggyback), tous les noyaux seront démarrés dans un état similaire à celui de la spécification Multiboot. Seuls les noyaux chargés à 1 Mo ou plus sont actuellement pris en charge. Toute tentative de chargement en dessous de cette limite entraînera un échec immédiat et un message d'erreur signalant le problème.
Outre les exigences ci-dessus, GRUB possède les fonctionnalités suivantes (à noter que la spécification Multiboot ne requiert pas toutes les fonctionnalités prises en charge par GRUB) :
- Reconnaissance de plusieurs formats exécutables : Prise en charge de nombreuses variantes de a.out, ainsi que d'ELF. Les tables de symboles sont également chargées.
- Prise en charge des noyaux non multiboot : Compatible avec de nombreux noyaux 32 bits libres non compatibles multiboot (principalement FreeBSD, NetBSD2, OpenBSD et Linux). Le chargement en chaîne d'autres chargeurs de démarrage est également pris en charge.
- Chargement de plusieurs modules : Prise en charge complète de la fonctionnalité Multiboot permettant de charger plusieurs modules.
- Charger un fichier de configuration : Prise en charge d'un fichier de configuration texte lisible par l'utilisateur avec des commandes de démarrage prédéfinies. Vous pouvez également charger dynamiquement un autre fichier de configuration et intégrer un fichier de configuration prédéfini dans un fichier image GRUB. La liste des commandes est un sur-ensemble de celles prises en charge en ligne de commande. Un exemple de fichier de configuration est fourni dans la section «Configuration».
- Fournir une interface de menu : Une interface de menu listant les commandes de démarrage prédéfinies, avec un délai d'expiration programmable, est disponible. Il n'y a pas de limite fixe au nombre d'entrées de démarrage, et l'implémentation actuelle peut en contenir plusieurs centaines.
- Posséder une interface de ligne de commande flexible : Une interface de ligne de commande relativement flexible, accessible depuis le menu, permet de modifier les commandes prédéfinies ou d'écrire un nouvel ensemble de commandes de démarrage. En l'absence de fichier de configuration, GRUB utilise la ligne de commande. La liste des commandes est un sous-ensemble de celles prises en charge pour les fichiers de configuration. L'édition des commandes ressemble beaucoup à la ligne de commande Bash, avec la saisie semi-automatique des commandes, périphériques, partitions et fichiers d'un répertoire par tabulation selon le contexte.
- Prise en charge de plusieurs types de systèmes de fichiers : Prise en charge transparente de plusieurs types de systèmes de fichiers, ainsi qu'une notation explicite et utile des listes de blocage. Les types de systèmes de fichiers actuellement pris en charge sont Amiga Fast FileSystem (AFFS), AtheOS fs, BeFS, BtrFS (y compris raid0, raid1, raid10, gzip et lzo), cpio (variantes bin, odc et newc petit et gros boutien), Linux ext2/ext3/ext4, DOS FAT12/FAT16/FAT32, exFAT, F2FS, HFS, HFS+, ISO9660 (y compris les fichiers Joliet, Rock-ridge et multi-chunk), JFS, Minix fs (versions 1, 2 et 3), nilfs2, NTFS (y compris la compression), ReiserFS, ROMFS, Amiga Smart FileSystem (SFS), Squash4, tar, UDF, BSD UFS/UFS2, XFS et ZFS (y compris lzjb, gzip, zle, mirror, stripe, raidz1/2/3 et le chiffrement en AES-CCM et AES-GCM).
- Prise en charge de la décompression automatique : Décompresser les fichiers compressés par gzip ou xz3. Cette fonction est à la fois automatique et transparente pour l'utilisateur (c'est-à-dire que toutes les fonctions agissent sur le contenu non compressé des fichiers spécifiés). Cela réduit considérablement la taille et le temps de chargement des fichiers, un avantage particulièrement important pour les disquettes.
- Certains modules du noyau peuvent être chargés compressés ; une commande de chargement de module différente peut donc être spécifiée pour éviter la décompression des modules.
- Accès aux données sur tout périphérique installé : Lecture des données depuis une ou plusieurs disquettes ou disques durs reconnus par le BIOS, indépendamment de la configuration du périphérique racine.
- Indépendance des conversions de géométrie de l'unité de disque : Contrairement à de nombreux autres chargeurs de démarrage, GRUB rend la conversion de l'unité de disque indifférente. Un lecteur installé et exécuté avec une conversion peut être converti vers une autre conversion sans effets indésirables ni modification de la configuration de GRUB.
- Détecter toute la RAM installée : GRUB peut généralement trouver toute la RAM installée sur une machine compatible PC. Il utilise une technique avancée d'interrogation du BIOS pour trouver toutes les zones mémoire. Comme décrit dans la spécification Multiboot (voir Motivation dans la spécification Multiboot), tous les noyaux n'utilisent pas ces informations, mais GRUB les fournit à ceux qui le font.
- Prise en charge du mode d'adressage de bloc logique : Les appels disque traditionnels (appelés mode CHS) posent un problème de translation géométrique : le BIOS ne peut accéder à plus de 1 024 cylindres, ce qui limite l'espace disponible à 508 Mo minimum et 8 Go maximum. GRUB ne peut pas résoudre ce problème de manière universelle, car il n'existe pas d'interface standard utilisée par toutes les machines. Cependant, plusieurs machines plus récentes disposent de la nouvelle interface, le mode d'adressage de bloc logique (LBA). GRUB détecte automatiquement si le mode LBA est disponible et l'utilise s'il est disponible. En mode LBA, GRUB peut accéder à l'intégralité du disque.
- Prise en charge du démarrage réseau : GRUB est essentiellement un chargeur de démarrage sur disque, mais il prend également en charge le réseau. Vous pouvez charger des images de système d'exploitation depuis un réseau grâce au protocole TFTP.
- Prise en charge des terminaux à distances : Pour prendre en charge les ordinateurs sans console, GRUB prend en charge les terminaux distants, vous permettant ainsi de contrôler GRUB depuis un hôte distant. Seul le terminal série est actuellement pris en charge.
Le rôle d'un chargeur de démarrage
Voici des citations de Gordon Matzigkeit, un fanatique de GRUB :
- Certains aiment parler à la fois du système d'exploitation et du noyau lorsqu'ils parlent de leurs ordinateurs, et disent donc utiliser «GNU/Linux» ou «GNU/Hurd». D'autres semblent penser que le noyau est la partie la plus importante du système, et préfèrent donc appeler leurs systèmes d'exploitation GNU «systèmes Linux».
- Personnellement, je pense que c'est une grave injustice, car le chargeur de démarrage est le logiciel le plus important de tous. J'appelais auparavant ces systèmes « LILO »5 ou « GRUB ».
- Malheureusement, personne n'a jamais compris de quoi je parlais ; maintenant, j'utilise simplement le mot « GNU » comme pseudonyme pour GRUB.
- Alors, si jamais vous entendez quelqu'un parler de ses prétendus systèmes « GNU », rappelez-vous qu'il s'agit en réalité d'un hommage au meilleur chargeur de démarrage du marché... GRUB !
Convention de nommage
La syntaxe des périphériques utilisée dans GRUB est légèrement différente de celle que vous avez pu observer dans vos systèmes d'exploitation. Vous devez la connaître pour pouvoir spécifier un lecteur/une partition.
Consultez les exemples et explications suivants :
(fd0) |
Tout d'abord, GRUB exige que le nom du périphérique soit entouré de «(» et «)». La partie «fd» signifie qu'il s'agit d'une disquette. Le chiffre «0» correspond au numéro du lecteur, compté à partir de zéro. Cette expression signifie que GRUB utilisera l'intégralité de la disquette.
(hd0,msdos2) |
Ici, «hd» désigne un disque dur. Le premier entier, « 0 », indique le numéro du lecteur, c'est-à-dire le premier disque dur ; la chaîne de caractères «msdos» indique le schéma de partitionnement ; le second entier, « 2 », indique le numéro de partition (ou le numéro de tranche PC selon la terminologie BSD). Les numéros de partition sont comptés à partir de un, et non de zéro (comme c'était le cas dans les versions précédentes de GRUB). Cette expression désigne la deuxième partition du premier disque dur. Dans ce cas, GRUB utilise une seule partition du disque, au lieu du disque entier.
(hd0,msdos5) |
Ceci spécifie la première partition étendue du premier disque dur. Notez que les numéros de partition pour les partitions étendues sont comptés à partir de « 5 », quel que soit le nombre réel de partitions principales sur votre disque dur.
(hd1,msdos1,bsd1) |
Il s'agit de la partition BSD «a» sur le premier numéro de tranche du second disque dur.
Bien sûr, pour accéder aux disques ou partitions avec GRUB, vous devez utiliser la spécification du périphérique dans une commande, comme «set root=(fd0)» ou «parttool (hd0,msdos3) hidden-». Pour vous aider à déterminer le numéro de la partition souhaitée, les options de ligne de commande de GRUB (voir Interface de ligne de commande) disposent de la complétion des arguments. Cela signifie, par exemple, qu'il vous suffit de saisir :
set root=( |
suivi d'une tabulation, et GRUB affichera la liste des unités de disques, partitions ou noms de fichiers. Il devrait donc être assez facile de déterminer le nom de votre partition cible, même avec une connaissance minimale de la syntaxe.
Notez que GRUB ne distingue pas les disques IDE des disques SCSI ; il compte simplement les numéros de lecteur à partir de zéro, quel que soit leur type. Normalement, tout numéro de lecteur IDE est inférieur à tout numéro de lecteur SCSI, bien que ce ne soit pas le cas si vous modifiez la séquence de démarrage en intervertissant les disques IDE et SCSI dans votre BIOS.
La question est maintenant : comment spécifier un fichier ? Prenons un exemple :
(hd0,msdos1)/vmlinuz |
Ceci spécifie le fichier nommé «vmlinuz», situé sur la première partition du premier disque dur. Notez que la complétion des paramètres fonctionne également avec les noms de fichiers.
C'était facile, avouez-le. Lisez maintenant le section suivant pour savoir comment installer GRUB sur votre disque.
Remarques spécifiques au système d'exploitation concernant les outils GRUB
Sur les systèmes d'exploitation dont les nouds de périphériques sont similaires à ceux d'Unix, les outils GRUB utilisent le nom du système d'exploitation. Par exemple, pour GNU/Linux :
grub-install /dev/sda |
Sur AROS, nous utilisons une autre syntaxe. Pour les volumes :
//:<nom de volume> |
Exemple :
//:DH0 |
Pour les disques, nous utilisons la syntaxe :
//:<nom de pilote>/unit/flags |
Exemple :
grub-install //:ata.device/0/0 |
Sous Windows, nous utilisons le chemin UNC. Pour les volumes, c'est généralement :
\\?\Volume{<GUID>} \\?\<lettre d'unité>: |
Exemple :
\\?\Volume{17f34d50-cf64-4b02-800e-51d79c3aa2ff} \\?\C: |
Pour les disques, c'est :
\\?\PhysicalDrive<nombre> |
Exemple :
grub-install \\?\PhysicalDrive0 |
Attention, selon votre interpréteur de commande, vous devrez peut-être échapper les barres obliques inverses.
Lorsqu'il est compilé avec la prise en charge de Cygwin, les noms d'unités de disques Cygwin sont automatiquement affichés si nécessaire. Par exemple :
grub-install /dev/sda |
Installation
Pour installer GRUB comme chargeur de démarrage, vous devez d'abord installer le système et les utilitaires GRUB sous votre système d'exploitation de type UNIX (voir Obtenir et compiler GRUB). Vous pouvez le faire soit depuis l'archive source, soit sous forme de paquet pour votre système d'exploitation.
Ensuite, vous devez installer le chargeur de démarrage sur un lecteur (disquette ou disque dur) à l'aide de l'utilitaire grub-install sur un système d'exploitation de type UNIX.
GRUB est fourni avec des images de démarrage, généralement placées dans le répertoire /usr/lib/grub/<cpu>-<plateforme> (pour les machines équipées d'un BIOS, /usr/lib/grub/i386-pc). Par la suite, le répertoire où les images GRUB sont initialement placées (généralement /usr/lib/grub/<cpu>-<plateforme>) sera appelé le répertoire d'images, et le répertoire où le chargeur de démarrage doit les trouver (généralement /boot) sera appelé le répertoire de démarrage.
- Installation de GRUB avec grub-install
- Création d'un CD-ROM amorçable GRUB
- Cartographie des périphériques
- Installation du BIOS
Installation de GRUB avec grub-install
Pour savoir où installer GRUB sur les BIOS de PC, consultez la section «Installation du BIOS».
Pour installer GRUB sous un système d'exploitation de type UNIX (comme GNU), appelez le programme grub-install (voir «Appel de grub-install») en tant que superutilisateur (root).
L'utilisation est très simple. Il suffit de spécifier un argument au programme, à savoir l'emplacement d'installation du chargeur de démarrage. Ce paramètre doit être un fichier de périphérique (par exemple, «/dev/hda»). Par exemple, sous Linux, la commande suivante installera GRUB dans le MBR du premier disque IDE :
grub-install /dev/sda |
De même, sous GNU/Hurd, cela a le même effet :
grub-install /dev/hd0 |
Cependant, tous les exemples ci-dessus supposent que GRUB doit placer les images dans le répertoire /boot. Si vous souhaitez que GRUB place les images dans un répertoire autre que /boot, vous devez spécifier l'option --boot-directory. L'utilisation typique consiste à créer une disquette de démarrage GRUB avec un système de fichiers. Voici un exemple :
mke2fs /dev/fd0 mount -t ext2 /dev/fd0 /mnt mkdir /mnt/boot grub-install --boot-directory=/mnt/boot /dev/fd0 umount /mnt |
Certains BIOS présentent un bug exposant la première partition d'une clef USB comme une disquette au lieu de la présenter comme un disque dur (on parle alors de démarrage «USB-FDD»). Dans ce cas, procédez comme suit :
losetup /dev/loop0 /dev/sdb1 mount /dev/loop0 /mnt/usb grub-install --boot-directory=/mnt/usb/bugbios --force --allow-floppy /dev/loop0 |
Cette installation n'entre pas en conflit avec l'installation standard, à condition qu'elles soient situées dans des répertoires distincts.
Sur les systèmes EFI, pour une installation sur disque fixe, vous devez monter la partition système EFI. Si vous la montez dans /boot/efi, aucun paramètre particulier n'est requis :
grub-install |
Sinon, vous devez spécifier où votre partition système EFI est montée :
grub-install --efi-directory=/mnt/efi |
Pour les installations amovibles, vous devez utiliser --removable et spécifier à la fois --boot-directory et --efi-directory :
grub-install --efi-directory=/mnt/usb --boot-directory=/mnt/usb/boot --removable |
Créer un CD-ROM amorçable GRUB
GRUB prend en charge le mode sans émulation de la spécification El Torito6. Cela signifie que vous pouvez utiliser l'intégralité du CD-ROM de GRUB sans avoir à créer une disquette ou une image de disque dur, ce qui peut entraîner des problèmes de compatibilité.
Pour démarrer à partir d'un CD-ROM, GRUB utilise une image spéciale appelée cdboot.img, concaténée avec core.img. Le fichier core.img utilisé doit être compilé avec au moins les modules «iso9660» et «biosdisk». Votre CD-ROM amorçable devra généralement également inclure un fichier de configuration grub.cfg et d'autres modules GRUB.
Pour créer un CD de secours GRUB générique et simple, vous pouvez utiliser le programme grub-mkrescue :
grub-mkrescue -o grub.iso |
Vous aurez souvent besoin d'inclure d'autres fichiers dans votre image. Pour cela, créez d'abord un répertoire principal pour l'image de démarrage, par exemple «iso» :
mkdir iso |
Créer un répertoire pour GRUB :
mkdir -p iso/boot/grub |
Si vous le souhaitez, créez le fichier de configuration grub.cfg sous iso/boot/grub, puis copiez les fichiers et répertoires du disque dans le répertoire iso/.
Enfin, créez l'image :
grub-mkrescue -o grub.iso iso |
Cela produit un fichier nommé grub.iso, pouvant ensuite être gravé sur un CD (ou un DVD) ou enregistré sur un périphérique d'entreposage USB.
Le périphérique racine sera configuré correctement lors de la saisie de votre fichier de configuration grub.cfg, ce qui vous permettra de vous référer aux noms de fichiers sur le CD sans avoir à utiliser un nom de périphérique explicite. Cela facilite la création d'images de secours compatibles avec les unités de disques optiques et les périphériques de l'entreposage USB.
Cartographie entre les lecteurs BIOS et les périphériques du système d'exploitation
Si le fichier de cartographies des périphériques existe, les utilitaires GRUB (grub-probe,...) le lisent pour cartographies des unités de disques BIOS aux périphériques du système d'exploitation. Ce fichier contient des lignes comme celles-ci :
(périphérique) fichier |
périphérique est un unité de disque spécifié dans la syntaxe GRUB, et fichier est un fichier du système d'exploitation, étant normalement un fichier de périphérique.
Historiquement, le fichier de cartographies des périphériques était utilisé car les noms des périphériques GRUB devaient être utilisés dans le fichier de configuration, et ils étaient dérivés des numéros de lecteur du BIOS. La correspondance entre les lecteurs du BIOS et les périphériques du système d'exploitation ne peut pas toujours être correctement devinée : par exemple, GRUB se trompera d'ordre si vous inversez la séquence de démarrage entre IDE et SCSI dans votre BIOS.
Malheureusement, même les noms de périphériques du système d'exploitation ne sont pas toujours stables. Les versions modernes du noyau Linux peuvent analyser les lecteurs dans un ordre différent d'un démarrage à l'autre, et le préfixe (/dev/hd* ou /dev/sd*) peut varier selon le sous-système de pilote utilisé. Par conséquent, le fichier de cartographies des périphériques nécessitait des modifications fréquentes sur certains systèmes.
GRUB évite aujourd'hui ce problème en utilisant des UUID ou des étiquettes de système de fichiers lors de la génération du fichier grub.cfg, et nous vous recommandons de faire de même pour toutes les entrées de menu personnalisées que vous créez. Si le fichier de cartographies des périphériques n'existe pas, les utilitaires GRUB utiliseront une correspondance temporaire à la volée. Cela suffit souvent, notamment dans le cas courant des systèmes monodisque.
Cependant, le fichier de cartographies des périphériques n'est pas encore totalement obsolète et il est utilisé pour remplacer les paramètres lorsque l'environnement actuel diffère de celui au démarrage. Le cas le plus courant est l'utilisation d'une partition ou d'un volume logique comme disque pour une machine virtuelle. Vous pouvez ajouter des commentaires au fichier si nécessaire, car les utilitaires GRUB considèrent qu'une ligne est simplement un commentaire si le premier caractère est «#».
Installation BIOS
MBR : Le format de table de partition traditionnellement utilisé sur les plateformes BIOS PC est appelé format MBR (Master Boot Record). Il autorise jusqu'à quatre partitions principales et des partitions logiques supplémentaires. Avec ce format de table de partition, il existe deux façons d'installer GRUB : l'intégrer dans la zone située entre le MBR et la première partition (appelée «piste de démarrage», «espace MBR» ou «zone d'intégration», généralement d'au moins 1 000 Kio), ou installer l'image principale dans un système de fichiers et entreposer la liste des blocs la composant dans le premier secteur de cette partition.
Les outils modernes laissent généralement un espace MBR d'au moins 1 023 Kio. Cette quantité est suffisante pour couvrir la plupart des configurations. C'est pourquoi l'équipe GRUB recommande cette valeur.
Historiquement, de nombreux outils ne laissaient que 31 Kio d'espace. Cela ne suffit pas pour analyser de manière fiable des structures complexes comme Btrfs, ZFS, RAID ou LVM, ni pour utiliser des méthodes d'accès au disque complexes comme AHCI. Par conséquent, GRUB émettra un avertissement en cas de tentative d'installation dans un petit espace MBR, sauf dans un petit nombre de configurations protégées. La configuration protégée doit :
- Utiliser le BIOS comme module d'accès disque pour /boot
- Ne pas utiliser de cartographies de partition supplémentaire pour accéder à /boot
- /boot doit être sur l'un des systèmes de fichiers suivants : AFFS, AFS, BFS, cpio, newc, odc, ext2/3/4, FAT, exFAT, F2FS, HFS, HFS+ non compressé, ISO9660, JFS, Minix, Minix2, Minix3, NILFS2, NTFS, ReiserFS, ROMFS, SFS, tar, UDF, UFS1, UFS2, XFS
L'espace MBR présente peu de problèmes techniques. Il est impossible de réserver de l'espace dans la zone d'intégration en toute sécurité, et certains logiciels propriétaires sont connus pour l'exploiter afin d'empêcher les utilisateurs de contourner les restrictions de licence. GRUB contourne ce problème en détectant les secteurs créés par d'autres logiciels, en les évitant et en protégeant ses propres secteurs grâce au codage Reed-Solomon.
L'équipe GRUB recommande un espace MBR d'au moins 1 000 Kio.
Si cela n'est pas possible, GRUB propose une solution de secours, fortement déconseillée. L'installation sur un système de fichiers rend GRUB vulnérable au déplacement de ses blocs par des fonctionnalités du système de fichiers telles que le tail packing, ou même par des implémentations fsck agressives. Cette approche est donc assez fragile ; elle ne peut être utilisée que si le système de fichiers /boot se trouve sur le même disque que celui à partir duquel le BIOS démarre, afin que GRUB n'ait pas à deviner les numéros de lecteur du BIOS.
L'équipe de développement de GRUB recommande généralement d'intégrer GRUB avant la première partition, sauf si vous avez des exigences particulières. Vous devez vous assurer que la première partition démarre à au moins 1 000 Kio (2 000 secteurs) du début du disque ; sur les disques modernes, il est souvent avantageux en termes de performances d'aligner les partitions sur des limites plus grandes de toute façon, donc la première partition peut démarrer à 1 Mio du début du disque.
GPT : Certains systèmes récents utilisent le format GPT (GUID Partition Table). Ce format a été spécifié dans le cadre de l'interface EFI (Extensible Firmware Interface), mais il peut également être utilisé sur les plateformes BIOS si le logiciel système le prend en charge ; par exemple, GRUB et GNU/Linux peuvent être utilisés dans cette configuration. Grâce à ce format, il est possible de réserver une partition entière à GRUB, appelée partition de démarrage du BIOS. GRUB peut ensuite être intégré à cette partition sans risque d'être écrasé par d'autres logiciels et sans être contenu dans un système de fichiers susceptible de déplacer ses blocs.
Lors de la création d'une partition de démarrage du BIOS sur un système GPT, assurez-vous qu'elle mesure au moins 31 Ko. (Les disques formatés GPT ne sont généralement pas particulièrement petits ; nous recommandons donc de la dimensionner au-delà du strict minimum, par exemple 1 Mio, pour laisser suffisamment de place à la croissance.) Vous devez également vous assurer que le type de partition est correct. Avec GNU Parted, vous pouvez le définir à l'aide d'une commande telle que :
parted /dev/disk set numero-partition bios_grub on |
Si vous utilisez gdisk, définissez le type de partition sur «0xEF02». Avec les programmes de partitionnement nécessitant la définition directe du GUID, il devrait être « 21686148-6449-6e6f-744e656564454649».
Attention : Soyez très prudent lors du choix de la partition ! Lorsque GRUB détecte une partition de démarrage du BIOS lors de l'installation, il en écrase automatiquement une partie. Assurez-vous que la partition ne contient aucune autre donnée.
Démarrage
GRUB peut charger les noyaux compatibles Multiboot de manière cohérente, mais certains systèmes d'exploitation libres nécessitent des astuces spécifiques :
- Méthodes de démarrage générales : Comment démarrer les systèmes d'exploitation avec GRUB en général
- Démarrage en boucle : Remarques sur le démarrage à partir de boucles
- Démarrage du cache LVM : Remarques sur le démarrage à partir du volume logique du cache LVM
- Remarques spécifiques au système d'exploitation : Remarques sur certains systèmes d'exploitation
Comment démarrer les systèmes d'exploitation
GRUB propose trois méthodes de démarrage distinctes : le chargement direct d'un système d'exploitation, l'utilisation de kexec depuis l'espace utilisateur et le chargement en chaîne d'un autre chargeur de démarrage. En général, les deux premières méthodes sont plus avantageuses, car elles ne nécessitent pas l'installation ni la maintenance d'autres chargeurs de démarrage, et GRUB est suffisamment flexible pour charger un système d'exploitation depuis un disque/une partition arbitraire. Cependant, le chargement en chaîne est parfois nécessaire, car GRUB ne prend pas en charge nativement tous les systèmes d'exploitation existants.
- Chargement direct d'un système d'exploitation
- Kexec
- Chargement en chaîne
Comment démarrer un système d'exploitation directement avec GRUB
Multiboot est le format natif pris en charge par GRUB. Pour plus de commodité, Linux, FreeBSD, NetBSD et OpenBSD sont également pris en charge. Pour démarrer d'autres systèmes d'exploitation, vous devrez les charger en chaîne.
Cependant, DOS et Windows présentent des défauts, vous devrez donc peut-être utiliser des instructions plus complexes.
Kexec avec grub2-emu
GRUB peut être exécuté en espace utilisateur en invoquant l'outil grub2-emu. Il lit tous les scripts de configuration comme s'il démarrait directement. Avec l'option --kexec et la prise en charge de kexec par le système d'exploitation, la commande Linux démarre directement l'image cible. Pour les systèmes ne prenant pas en charge systemctl pour kexec, passer deux fois l'option --kexec revient à invoquer directement kexec ; notez cependant que cette solution de secours peut être dangereuse en dehors des environnements en lecture seule, car elle n'invoque pas le mécanisme d'arrêt.
Chargement en chaîne d'un système d'exploitation
Les systèmes d'exploitation ne prenant pas en charge le multiboot et ne bénéficient pas d'une prise en charge spécifique dans GRUB (une prise en charge spécifique est disponible pour Linux, FreeBSD, NetBSD et OpenBSD) doivent être chargés en chaîne, ce qui implique de charger un autre chargeur de démarrage et d'y accéder en mode réel ou via le micrologiciel.
La commande chainloader (voir chainloader) permet de configurer cette opération. Il est généralement également nécessaire de charger certains modules GRUB et de définir le périphérique racine approprié. En combinant ces éléments, nous obtenons quelque chose comme ceci, pour un système Windows sur la première partition du premier disque dur :
menuentry "Windows" { insmod chain insmod ntfs set root=(hd0,1) chainloader +1 } |
Sur les systèmes dotés de plusieurs disques durs, une solution de contournement supplémentaire peut être nécessaire.
Le chargement en chaîne n'est pris en charge que sur les plateformes BIOS et EFI des PC.
Démarrage en boucle
GRUB est capable de lire une image (CD ou disque dur) entreposée sur n'importe quel entreposage accessible (voir la commande loopback). Cependant, le système d'exploitation lui-même doit pouvoir trouver sa racine. Cela implique généralement l'exécution d'un programme en espace utilisateur avant que la racine réelle ne soit découverte. GRUB charge alors une petite image spécialement créée et la transmet au noyau comme disque virtuel. Pour ce faire, utilisez les commandes kfreebsd_module, knetbsd_module_elf, kopenbsd_ramdisk, initrd (voir initrd), initrd16 (voir initrd16), multiboot_module, multiboot2_module ou xnu_ramdisk, selon le chargeur. Notez que pour knetbsd, l'image doit être placée dans miniroot.kmod et le miniroot.kmod complet doit être chargé. Dans kopenbsd, cette option est désactivée par défaut. De plus, le comportement du disque virtuel initial dépend des options de ligne de commande. Plusieurs distributeurs fournissent l'image à cet effet ou l'intègrent à leur disque virtuel standard et l'activent via une option spéciale. D'autres chargeurs comme Appleloader, Chainloader (BIOS, EFI, Coreboot), Freedos, NTLDR, Plan9 et TrueCrypt ne permettent pas de charger le disque virtuel initial. À la connaissance de l'auteur, ces charges utiles ne prennent en charge ni le disque virtuel initial ni la détection du démarrage en boucle, et ne peuvent donc pas être démarrées de cette manière. Veuillez envisager d'autres méthodes de démarrage, comme la copie de tous les fichiers de l'image sur la partition réelle. Consultez la documentation de votre système d'exploitation pour plus de détails.
Démarrage à partir d'un volume logique de cache LVM
Le volume logique de cache LVM est composé du volume logique d'origine et du volume logique du bassin de cache. Le volume d'origine se trouve généralement sur un périphérique d'entreposage plus grand et plus lent, tandis que le bassin de cache se trouve sur un périphérique plus petit et plus rapide. Les performances du volume d'origine peuvent être améliorées en entreposant les données fréquemment utilisées sur le bassin de cache afin de bénéficier des performances supérieures d'un périphérique plus rapide.
GRUB démarre à partir d'un volume logique de cache LVM en lisant simplement son volume logique d'origine, ignorant ainsi les données corrompues du bassin de cache. Ce problème ne se pose pas avec le mode de cache «writethrough», car il garantit que toutes les données écrites seront entreposées à la fois dans le cache et dans le volume logique de cache d'origine. Avec l'autre mode de cache «writeback», retardant l'écriture du bassin de cache vers le volume logique d'origine pour optimiser les performances, GRUB peut ne pas démarrer en cas de panne de courant accidentelle, car il ne parvient pas à assembler le périphérique de cache pour lire les données corrompues restantes. La situation sera améliorée avec la prise en charge complète du volume logique de cache LVM à l'avenir.
Quelques mises en garde concernant les problèmes spécifiques aux systèmes d'exploitation
Nous décrivons ici quelques mises en garde concernant plusieurs systèmes d'exploitation :
- GNU/Hurd
- GNU/Linux
- NetBSD
- DOS/Windows
GNU/Hurd : GNU/Hurd étant compatible Multiboot, son démarrage est simple ; rien de particulier n'est requis. N'oubliez pas cependant de spécifier une partition racine pour le noyau.
Définissez le périphérique racine de GRUB sur le même disque que celui de GNU/Hurd. La commande search --set=root --file /boot/gnumach.gz ou similaire peut vous aider.
Chargez le noyau et les modules comme suit :
grub> multiboot /boot/gnumach.gz root=device:hd0s1 grub> module /hurd/ext2fs.static ext2fs --readonly \ --multiboot-command-line='${kernel-command-line}' \ --host-priv-port='${host-port}' \ --device-master-port='${device-port}' \ --exec-server-task='${exec-task}' -T typed '${root}' \ '$(task-create)' '$(task-resume)' grub> module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)' |
Enfin, exécutez la commande boot (voir boot).
GNU/Linux : Démarrer GNU/Linux depuis GRUB est relativement simple, car cela ressemble un peu au démarrage d'un système d'exploitation compatible Multiboot.
- Définissez le périphérique racine de GRUB sur le même lecteur que celui de GNU/Linux. La commande search --set=root --file /vmlinuz ou similaire peut vous aider (voir recherche).
- Chargez le noyau avec la commande linux (voir linux) :
- Si vous utilisez un initrd, exécutez la commande initrd (voir initrd) après linux :
- Enfin, exécutez la commande boot (voir boot).
grub> linux /vmlinuz root=/dev/sda1 |
Si vous devez spécifier des paramètres du noyau, ajoutez-les simplement à la commande. Par exemple, pour désactiver l'interface ACPI, procédez comme suit :
grub> linux /vmlinuz root=/dev/sda1 acpi=off |
Sous Linux, GRUB utilise le protocole 32 bits. Certains services du BIOS comme APM ou EDD ne sont pas disponibles avec ce protocole. Dans ce cas, vous devez utiliser linux16 :
grub> linux16 /vmlinuz root=/dev/sda1 acpi=off |
grub> initrd /initrd |
Si vous avez utilisé Linux16, vous devez utiliser initrd16 :
grub> initrd16 /initrd |
NetBSD : Démarrer un noyau NetBSD depuis GRUB est également relativement simple : définissez d'abord le périphérique racine de GRUB, puis chargez le noyau et les modules, et enfin, exécutez boot :
- Définissez le périphérique racine de GRUB sur la partition contenant le système de fichiers racine de NetBSD. Pour un disque portant une étiquette NetBSD, il s'agit généralement de la première partition (a:). Dans ce cas, et en supposant que la partition se trouve sur le premier disque dur, définissez le périphérique racine de GRUB comme suit :
- Chargez le noyau en utilisant la commande knetbsd :
grub> insmod part_bsd grub> set root=(hd0,netbsd1) |
Pour un disque avec une table de partition GUID (GPT), et en supposant que la partition racine NetBSD est la troisième partition GPT, procédez comme suit :
grub> insmod part_gpt grub> set root=(hd0,gpt3) |
grub> knetbsd /netbsd |
Plusieurs options peuvent être proposées à knetbsd. Ces options sont, pour la plupart, les mêmes que celles du chargeur de démarrage NetBSD. Par exemple, pour démarrer le système en mode mono-utilisateur et avec des messages détaillés, procédez comme suit :
grub> knetbsd /netbsd -s -v |
Si nécessaire, chargez les modules du noyau avec la commande knetbsd_module_elf. Un exemple typique est le module du système de fichiers racine :
grub> knetbsd_module_elf /stand/amd64/6.0/modules/ffs/ffs.kmod |
Enfin, exécutez la commande boot (voir boot).
DOS/Windows : GRUB ne peut pas démarrer DOS ou Windows directement ; vous devez donc les charger en chaîne (voir Chargement en chaîne). Cependant, leurs chargeurs de démarrage présentent des défauts critiques, et leur chargement en chaîne peut donc s'avérer inefficace. Pour résoudre ces problèmes, GRUB propose deux fonctions d'assistance.
Si vous avez installé DOS (ou Windows) sur un disque dur autre que le premier, vous devez utiliser la technique de permutation de disque, car ce système d'exploitation ne peut démarrer que sur le premier disque. La solution de contournement utilisée dans GRUB est la commande drivemap (voir drivemap), comme suit :
drivemap -s (hd0) (hd1) |
Cela effectue un échange virtuel entre votre premier et votre deuxième disque dur.
Attention : Cette opération n'est efficace que si DOS (ou Windows) utilise le BIOS pour accéder aux disques échangés. Si ce système d'exploitation utilise un pilote spécifique pour les disques, cela ne fonctionnera probablement pas.
Un autre problème survient si vous avez installé plusieurs systèmes DOS/Windows sur un même disque, car ils pourraient être confondus s'il existe plusieurs partitions principales pour DOS/Windows. Il est préférable d'éviter cette méthode, mais il existe une solution si vous souhaitez y parvenir : utilisez la technique de masquage/affichage de partition.
Si GRUB masque une partition DOS (ou Windows) (voir parttool), DOS (ou Windows) l'ignorera. Si GRUB affiche une partition DOS (ou Windows), DOS (ou Windows) la détectera. Ainsi, si vous avez installé DOS (ou Windows) sur les première et deuxième partitions du premier disque dur et que vous souhaitez démarrer la copie sur la première partition, procédez comme suit :
parttool (hd0,1) hidden- parttool (hd0,2) hidden+ set root=(hd0,1) chainloader +1 parttool ${root} boot+ boot |
Créer votre propre fichier de configuration
GRUB se configure à l'aide du fichier grub.cfg, généralement situé dans /boot/grub. Ce fichier est assez flexible, mais la plupart des utilisateurs n'auront pas besoin de l'écrire entièrement à la main.
- Configuration simple : Recommandé pour la plupart des utilisateurs
- Heuristique d'identification de la racine : Résumé de l'identification du système de fichiers racine.
- Scripting de type shell : Pour les utilisateurs expérimentés et les développeurs
- Configuration manuelle multi-boot : Pour les scénarios multi-OS non standard
- Configuration intégrée : Intégration d'un fichier de configuration dans GRUB
Gestion simple de la configuration
Le programme grub-mkconfig (voir Invocation de grub-mkconfig) génère des fichiers grub.cfg adaptés à la plupart des cas. Il est adapté à la mise à niveau d'une distribution et détecte les noyaux disponibles et tente de générer des entrées de menu pour eux.
grub-mkconfig présente certaines limitations. L'ajout d'entrées de menu personnalisées à la fin de la liste peut être effectué en modifiant /etc/grub.d/40_custom ou en créant /boot/grub/custom.cfg. Cependant, la modification de l'ordre des entrées de menu ou de leurs titres peut nécessiter des modifications complexes des scripts shell entreposés dans /etc/grub.d/. Ceci pourrait être amélioré ultérieurement. En attendant, ceux qui estiment qu'il serait plus simple d'écrire directement grub.cfg sont encouragés à le faire (voir Démarrage et Scripts de type shell) et à désactiver l'exécution automatique de grub-mkconfig sur tout système fourni par leur distribution.
Le fichier /etc/default/grub contrôle le fonctionnement de grub-mkconfig. Elle provient d'un script shell et doit donc être une entrée shell POSIX valide ; normalement, il s'agit simplement d'une séquence de lignes «KEY=value», mais si la valeur contient des espaces ou d'autres caractères spéciaux, elle doit être entre guillemets. Par exemple :
GRUB_TERMINAL_INPUT="terminal série" |
Les clefs (KEY) valides dans /etc/default/grub sont les suivantes :
Clef | Description | ||
---|---|---|---|
'GRUB_DEFAULT' | L'entrée de menu par défaut. Il peut s'agir d'un nombre, auquel cas il identifie la énième entrée du menu généré (comptée à partir de zéro), du titre d'une
entrée de menu ou de la chaîne spéciale «saved». L'utilisation de l'identifiant peut être utile si vous souhaitez définir une entrée de menu comme entrée par
défaut, même si elle est précédée d'un nombre variable d'entrées. Par exemple, si vous avez :
alors vous pouvez en faire la valeur par défaut en utilisant :
L'utilisation du titre d'entrée était déjà documentée. Bien que cela fonctionne toujours, ce n'est pas recommandé, car les titres contiennent souvent des noms de périphériques instables et peuvent être traduits. Si vous définissez ce paramètre sur «saved», l'entrée de menu par défaut sera celle enregistrée par « GRUB_SAVEDEFAULT » ou grub-set-default. Cela dépend du bloc d'environnement, qui peut ne pas être disponible dans toutes les situations (voir Bloc d'environnement). La valeur par défaut est « 0 ». |
||
'GRUB_SAVEDEFAULT' | Si cette option est définie sur «true», lorsqu'une entrée est sélectionnée, elle est enregistrée comme nouvelle entrée par défaut pour les futures exécutions de GRUB. Cette option n'est utile que si « GRUB_DEFAULT=saved » ; il s'agit d'une option distincte, car « GRUB_DEFAULT=saved » est utile sans cette option, en conjonction avec grub-set-default. Non définie par défaut. Cette option repose sur le bloc d'environnement, qui peut ne pas être disponible dans toutes les situations. | ||
'GRUB_TIMEOUT' | Démarre l'entrée par défaut après l'affichage du menu, sauf si une touche est enfoncée. La valeur par défaut est « 5 ». Définissez « 0 » pour démarrer immédiatement
sans afficher le menu, ou « -1 » pour attendre indéfiniment. Si «GRUB_TIMEOUT_STYLE» est défini sur «countdown» ou «hidden», le délai d'attente est compté avant l'affichage du menu. |
||
'GRUB_TIMEOUT_STYLE' | Si cette option est désactivée ou définie sur « menu », GRUB affiche le menu et attend l'expiration du délai défini par «GRUB_TIMEOUT» avant de démarrer l'entrée
par défaut. Appuyer sur une touche interrompt ce délai. Si cette option est définie sur « compte à rebours » ou « masqué », GRUB attend l'expiration du délai défini par « GRUB_TIMEOUT » avant d'afficher le menu. Si vous appuyez sur Esc ou F4, ou si vous maintenez la touche Shift enfoncée pendant ce temps, le menu s'affiche et attend une saisie. Si vous appuyez sur une touche de raccourci associée à une entrée de menu, l'entrée correspondante est immédiatement démarrée. Si le délai expire avant l'expiration de l'une de ces deux touches, l'entrée par défaut est démarrée. Dans le cas du « compte à rebours », une ligne indique le temps restant. |
||
'GRUB_DEFAULT_BUTTON' 'GRUB_TIMEOUT_BUTTON' 'GRUB_TIMEOUT_STYLE_BUTTON' 'GRUB_BUTTON_CMOS_ADDRESS' |
Variantes des variables correspondantes sans le suffixe « _BUTTON », utilisées pour prendre en charge les boutons d'alimentation spécifiques au fournisseur. Voir les touches d'alimentation du fournisseur. | ||
'GRUB_DISTRIBUTOR' | Défini par les distributeurs de GRUB sur leur nom d'identification. Ceci permet de générer des titres d'entrées de menu plus informatifs. | ||
'GRUB_TERMINAL_INPUT' | Sélectionne le périphérique d'entrée du terminal. Vous pouvez sélectionner plusieurs périphériques ici, séparés par des espaces. Les noms d'entrée de terminal valides dépendent de la plateforme, mais peuvent inclure « console » (console native de la plateforme), «serial» (terminal série), « serial_<port> » (terminal série avec sélection de port explicite), « at_keyboard » (clavier AT PC) ou « usb_keyboard » (clavier USB utilisant le protocole de démarrage HID, lorsque le micrologiciel ne le gère pas). Par défaut, l'entrée de terminal native de la plateforme est utilisée. | ||
'GRUB_TERMINAL_OUTPUT' | Sélectionnez le périphérique de sortie du terminal. Vous pouvez sélectionner plusieurs périphériques ici, en les séparant par des espaces. Les noms de sortie de
terminal valides dépendent de la plateforme, mais peuvent inclure « console » (console native de la plateforme), «serial» (terminal série), « serial_<port>»
(terminal série avec sélection de port explicite), «gfxterm» (sortie en mode graphique), «vga_text» (sortie texte VGA), «mda_text» (sortie texte MDA),
«morse» (codage Morse utilisant le bip système) ou «spkmodem» (protocole de données simple utilisant le haut-parleur système). «spkmodem» est utile lorsqu'aucun port
série n'est disponible. Connectez la sortie du système émetteur (où GRUB est exécuté) à l'entrée ligne du système récepteur (généralement la machine du développeur).
Sur le système récepteur, compilez «spkmodem-recv» depuis «util/spkmodem-recv.c» et exécutez :
La valeur par défaut est d'utiliser la sortie du terminal natif de la plateforme. |
||
'GRUB_TERMINAL' | Si cette option est définie, elle remplace « GRUB_TERMINAL_INPUT » et « GRUB_TERMINAL_OUTPUT » par la même valeur. | ||
'GRUB_SERIAL_COMMAND' | Commande permettant de configurer le port série lors de l'utilisation de la console série. Voir «série». La valeur par défaut est «série». | ||
'GRUB_CMDLINE_LINUX' | Paramètres de ligne de commande à ajouter aux entrées de menu pour le noyau Linux. | ||
'GRUB_CMDLINE_LINUX_DEFAULT' | Sauf si «GRUB_DISABLE_RECOVERY» est défini sur «true», deux entrées de menu sont générées pour chaque noyau Linux : une entrée par défaut et une entrée pour le mode de récupération. Cette option répertorie les paramètres de ligne de commande à ajouter uniquement à l'entrée de menu par défaut, après ceux listés dans «GRUB_CMDLINE_LINUX». | ||
'GRUB_CMDLINE_LINUX_RECOVERY' | Sauf si « GRUB_DISABLE_RECOVERY » est défini sur « true », deux entrées de menu sont générées pour chaque noyau Linux : une entrée par défaut et une entrée pour le mode de récupération. Cette option liste les arguments de ligne de commande à ajouter uniquement à l'entrée du menu de récupération, avant ceux listés dans « GRUB_CMDLINE_LINUX ». La valeur par défaut est «single». | ||
'GRUB_CMDLINE_NETBSD' 'GRUB_CMDLINE_NETBSD_DEFAULT' |
Comme «GRUB_CMDLINE_LINUX» et «GRUB_CMDLINE_LINUX_DEFAULT», mais pour NetBSD. | ||
'GRUB_CMDLINE_GNUMACH' | Comme «GRUB_CMDLINE_LINUX», mais pour GNU Mach. | ||
'GRUB_CMDLINE_XEN' 'GRUB_CMDLINE_XEN_DEFAULT' |
Les valeurs de ces options sont transmises aux entrées de menu Xen de l'hyperviseur Xen, pour toutes les entrées respectivement normales. | ||
'GRUB_CMDLINE_LINUX_XEN_REPLACE' 'GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT' |
Les valeurs de ces options remplacent les valeurs de « GRUB_CMDLINE_LINUX » et « GRUB_CMDLINE_LINUX_DEFAULT » pour les entrées de menu Linux et Xen. | ||
'GRUB_TOP_LEVEL' 'GRUB_TOP_LEVEL_XEN' |
Cette option doit être un chemin absolu vers une image du noyau. Si elle est fournie, l'image spécifiée sera l'entrée de niveau supérieur si elle est détectée lors de l'analyse. | ||
'GRUB_TOP_LEVEL_OS_PROBER' | Cette option doit être une ligne de sortie d'os-prober. Si «GRUB_TOP_LEVEL» est fournie, l'image spécifiée sera l'entrée de niveau supérieur si elle est détectée lors de l'analyse. | ||
'GRUB_EARLY_INITRD_LINUX_CUSTOM' 'GRUB_EARLY_INITRD_LINUX_STOCK' |
Liste des premières images initrd, séparées par des espaces, à charger depuis «/boot». Ceci permet de charger des éléments tels que le microcode du
processeur, le firmware, les tables ACPI, les clés de chiffrement, etc. Ces premières images seront chargées dans l'ordre déclaré, et toutes seront chargées avant
l'image initrd fonctionnelle. « GRUB_EARLY_INITRD_LINUX_STOCK » permet à votre distribution de déclarer les images fournies par la distribution. Il ne faut pas le modifier sans en connaître les conséquences. Elles seront chargées en premier. « GRUB_EARLY_INITRD_LINUX_CUSTOM » est destiné à vos images personnalisées. Les images d'entreposage par défaut sont les suivantes, mais elles peuvent être remplacées par votre distribution :
|
||
'GRUB_DISABLE_LINUX_UUID' | Normalement, grub-mkconfig génère des entrées de menu utilisant des identifiants uniques universels (UUID) pour identifier le système de fichiers racine du noyau Linux, à l'aide du paramètre noyau « root=UUID=... ». Cette méthode est généralement plus fiable, mais peut parfois s'avérer inappropriée. Pour désactiver l'utilisation des UUID, définissez cette option sur « true ». | ||
'GRUB_DISABLE_LINUX_PARTUUID' | Si grub-mkconfig ne parvient pas à identifier le système de fichiers racine via son identifiant unique universel (UUID), il peut utiliser l'UUID de la partition contenant le système de fichiers pour identifier le système de fichiers racine auprès du noyau Linux via le paramètre noyau « root=PARTUUID=... ». Cette méthode n'est pas aussi fiable que l'utilisation de l'UUID du système de fichiers, mais elle est plus fiable que l'utilisation des noms de périphériques Linux. Lorsque « GRUB_DISABLE_LINUX_PARTUUID » est défini sur « false », la version du noyau Linux doit être 2.6.37 (3.10 pour les systèmes utilisant le schéma de partitionnement MSDOS) ou une version ultérieure. Cette option est définie par défaut sur « true ». Pour activer l'utilisation des UUID de partition, définissez cette option sur « false ». | ||
'GRUB_DISABLE_RECOVERY' | Si cette option est définie sur «true», désactivez la génération des entrées de menu du mode de récupération. | ||
'GRUB_DISABLE_UUID' | Normalement, grub-mkconfig génère des entrées de menu utilisant des identifiants uniques universels (UUID) pour identifier les différents systèmes de fichiers et rechercher des fichiers. Cette méthode est généralement plus fiable, mais peut parfois être inappropriée. Pour désactiver l'utilisation des UUID, définissez cette option sur « true ». Cette configuration active également les options « GRUB_DISABLE_LINUX_UUID » et « GRUB_DISABLE_LINUX_PARTUUID », sauf si elles ont été explicitement définies sur « false ». | ||
'GRUB_VIDEO_BACKEND' | Si la prise en charge de la vidéo graphique est requise, soit parce que le terminal graphique «gfxterm» est utilisé, soit parce que «GRUB_GFXPAYLOAD_LINUX» est défini, grub-mkconfig chargera normalement tous les pilotes vidéo GRUB disponibles et utilisera celui qui convient le mieux à votre matériel. Si vous devez contourner cette option, vous pouvez la définir. Après l'exécution de grub-install, les pilotes vidéo disponibles sont répertoriés dans /boot/grub/video.lst. | ||
'GRUB_GFXMODE' | Définissez la résolution utilisée sur le terminal graphique « gfxterm ». Notez que vous ne pouvez utiliser que les modes pris en charge par votre carte graphique via les extensions BIOS VESA (VBE). Par exemple, les résolutions natives des écrans LCD peuvent ne pas être disponibles. La valeur par défaut est « auto », qui tente de sélectionner une résolution préférée. Voir gfxmode. | ||
'GRUB_BACKGROUND' | Définissez une image d'arrière-plan à utiliser avec le terminal graphique « gfxterm ». La valeur de cette option doit être un fichier lisible par GRUB au démarrage, et doit se terminer par .png, .tga, .jpg ou .jpeg. L'image sera redimensionnée si nécessaire pour s'adapter à l'écran. La hauteur et la largeur de l'image seront limitées artificiellement à 16 384. | ||
'GRUB_THEME' | Définissez un thème à utiliser avec le terminal graphique « gfxterm ». | ||
'GRUB_GFXPAYLOAD_LINUX' | Choisissez «text» pour forcer le noyau Linux à démarrer en mode texte normal, «keep» pour conserver le mode graphique défini via « GRUB_GFXMODE », « widthxheight » [« xdepth »] pour définir un mode graphique particulier, ou une séquence de ces options séparées par des virgules ou des points-virgules pour tester plusieurs modes à la suite. Voir gfxpayload. En fonction de votre noyau, de votre distribution, de votre carte graphique et de la phase lunaire, notez que l'utilisation de cette option peut entraîner divers problèmes d'affichage sous GNU/Linux, notamment au début de la séquence de démarrage. En cas de problème, choisissez «text» et GRUB indiquera à Linux de démarrer en mode texte normal. | ||
'GRUB_DISABLE_OS_PROBER' | La commande grub-mkconfig permet d'utiliser le programme externe os-prober pour détecter les autres systèmes d'exploitation installés sur la même machine et générer les entrées de menu appropriées. Cette option est désactivée par défaut, car l'exécution automatique et silencieuse d'os-prober et la création d'entrées de démarrage basées sur ces données constituent un vecteur d'attaque potentiel. Définissez cette option sur « false » pour activer cette fonctionnalité dans la commande grub-mkconfig. | ||
'GRUB_OS_PROBER_SKIP_LIST' | Liste des UUID FS séparés par des espaces des systèmes de fichiers à ignorer dans la sortie d'os-prober. Pour les chargeurs de chaîne eFI, la valeur est <UUID>@<FICHIER EFI>. | ||
'GRUB_DISABLE_SUBMENU' | Normalement, grub-mkconfig génère l'entrée de menu principal pour le noyau dont le numéro de version est le plus élevé et place tous les autres noyaux trouvés ou les entrées de menu alternatives pour le mode de récupération dans un sous-menu. Pour les entrées renvoyées par os-prober, la première entrée est placée au niveau principal et toutes les autres dans un sous-menu. Si cette option est définie sur « true », un menu simple avec toutes les entrées au niveau principal est généré. Modifier cette option nécessite de modifier les valeurs des variables d'environnement « GRUB_DEFAULT », « fallback » (voir fallback) et « default » (voir default), ainsi que l'entrée par défaut enregistrée avec grub-set-default et la valeur utilisée avec grub-reboot. | ||
'GRUB_ENABLE_CRYPTODISK' | Si la valeur est « y », grub-mkconfig et grub-install rechercheront les disques chiffrés et généreront les commandes supplémentaires nécessaires pour y accéder au démarrage. Notez que dans ce cas, le démarrage automatique est impossible, car GRUB attendra la phrase secrète pour déverrouiller le conteneur chiffré. | ||
'GRUB_INIT_TUNE' | Jouer un morceau sur le haut-parleur au démarrage de GRUB. Ceci est particulièrement utile pour les utilisateurs ne voyant pas l'écran. La valeur de cette option est transmise directement à l'option «play». | ||
'GRUB_BADRAM' | Si cette option est définie, GRUB émettra une commande badram pour filtrer les régions spécifiées de la RAM. | ||
'GRUB_PRELOAD_MODULES' | Cette option peut être définie sur une liste de noms de modules GRUB séparés par des espaces. Chaque module sera chargé le plus tôt possible, au début du fichier grub.cfg. |
Les options suivantes sont toujours acceptées pour des raisons de compatibilité avec les configurations existantes, mais disposent de meilleurs remplacements :
Clef | Description |
---|---|
'GRUB_HIDDEN_TIMEOUT' | Attendez ce nombre de secondes avant d'afficher le menu. Si vous appuyez sur Esc ou F4, ou si vous maintenez la touche Maj enfoncée pendant ce temps, affichez le menu et attendez une saisie selon le délai « GRUB_TIMEOUT ». Si vous appuyez sur une touche de raccourci associée à une entrée de menu, démarrez immédiatement l'entrée correspondante. Si le délai expire avant l'un de ces événements, affichez le menu pendant le nombre de secondes spécifié dans « GRUB_TIMEOUT » avant de démarrer l'entrée par défaut. Si vous définissez « GRUB_HIDDEN_TIMEOUT », vous devez également définir « GRUB_TIMEOUT=0 » afin que le menu ne s'affiche que si vous appuyez sur Esc ou F4, ou si vous maintenez la touche Shift enfoncée. Cette option est désactivée par défaut et est déconseillée au profit des options moins complexes « GRUB_TIMEOUT_STYLE=countdown » ou « GRUB_TIMEOUT_STYLE=hidden ». |
'GRUB_HIDDEN_TIMEOUT_QUIET' | En conjonction avec « GRUB_HIDDEN_TIMEOUT », définissez cette option sur « true » pour supprimer le compte à rebours détaillé en attendant qu'une touche soit enfoncée avant l'affichage du menu. Cette option est désactivée par défaut et est déconseillée au profit de « GRUB_TIMEOUT_STYLE=countdown », moins déroutante. |
'GRUB_HIDDEN_TIMEOUT_BUTTON' | Variante de « GRUB_HIDDEN_TIMEOUT », utilisée pour prendre en charge les boutons d'alimentation spécifiques aux fournisseurs. Voir les touches d'alimentation des fournisseurs. Cette option est désactivée par défaut et est déconseillée au profit de « GRUB_TIMEOUT_STYLE=countdown » ou « GRUB_TIMEOUT_STYLE=hidden », moins déroutantes. |
Pour une personnalisation plus détaillée de la sortie de grub-mkconfig, vous pouvez modifier directement les scripts dans /etc/grub.d. /etc/grub.d/40_custom est particulièrement utile pour ajouter des entrées de menu personnalisées entières ; saisissez simplement les entrées de menu que vous souhaitez ajouter à la fin de ce fichier, en vous assurant de laisser au moins les deux premières lignes intactes.
Commandes générales
Commandes utilisables partout dans le menu et en ligne de commande :
- serial : Configuration d'un périphérique série
- terminal_input : Gestion des terminaux d'entrée
- terminal_output : Gestion des terminaux de sortie
- terminfo : Définition du type de terminal
serial
Commande :
serial [--unit=unit] [--port=port] [--speed=speed] [--word=word] [--parity=parity] [--stop=stop] |
Initialiser un périphérique série. «unit» est un nombre compris entre 0 et 3 spécifiant le port série à utiliser; la valeur par défaut est 0, ce qui correspond au port souvent appelé COM1.
«port» est le port d'entrée/sortie où se trouve l'UART ou, si le préfixe est «mmio», l'adresse MMIO de l'UART. Si elle est spécifiée, elle est prioritaire sur «unit».
De plus, une adresse MMIO peut être suffixée par :
- «.b» pour l'accès aux octets (par défaut)
- «.w» pour l'accès aux mots de 16 bits
- «.l» pour l'accès aux mots longs de 32 bits ou
- «.q» pour l'accès aux mots longs de 64 bits
Le port peut également être de la forme «pci,XX:XX.X» pour indiquer un périphérique série exposé sur le bus PCI.
speed correspond à la vitesse de transmission ; la valeur par défaut est 9600. word et stop correspondent au nombre de bits de données et de bits d'arrêt. Les bits de données doivent être compris entre 5 et 8 et les bits d'arrêt doivent être 1 ou 2. La valeur par défaut est 8 bits de données et un bit d'arrêt. La parité est comprise entre « no », « odd » et « even » et est par défaut « no ».
Si aucune unité ni aucun port ne sont transmis, ou si le port est défini sur « auto », GRUB tente d'utiliser l'ACPI pour détecter automatiquement le port série par défaut du système et sa configuration. Si ces informations ne sont pas disponibles, la valeur par défaut est 0.
Le port série n'est pas utilisé comme canal de communication, sauf si la commande terminal_input ou terminal_output est utilisée (voir terminal_input, voir terminal_output).
Remarque : les valeurs de port valides, à l'exclusion des adresses de ports d'entrées/sorties, peuvent être trouvées en listant les terminaux avec terminal_output, en sélectionnant tous les noms préfixés par «serial_» et en supprimant ce préfixe.
Exemples :
serial --port=0x3f8 --speed=9600 serial --port=mmio,fefb0000.l --speed=115200 serial --port=pci,00:16.3 --speed=115200 |
terminal_input
Commande :
terminal_input [--append|--remove] [terminal1] [terminal2] ... |
Affiche la liste ou sélectionne un terminal d'entrée.
Sans paramètre, listez les terminaux d'entrée actifs et disponibles.
Avec --append, ajoutez les terminaux nommés à la liste des terminaux d'entrée actifs ; chacun d'entre eux peut être utilisé pour fournir une entrée à GRUB.
Avec --remove, supprimez les terminaux nommés de la liste active.
Sans option, mais avec une liste de noms de terminaux, activez uniquement les terminaux listés.
terminal_output
Commande :
terminal_output [--append|--remove] [terminal1] [terminal2] ... |
Listez ou sélectionnez un terminal de sortie.
Sans argument, listez les terminaux de sortie actifs et disponibles.
Avec --append, ajoutez les terminaux nommés à la liste des terminaux de sortie actifs ; tous recevront la sortie de GRUB.
Avec --remove, supprimez les terminaux nommés de la liste active.
Sans option, mais avec une liste de noms de terminaux, activez uniquement les terminaux listés.
terminfo
Commande :
terminfo [-a|-u|-v] [-g WxH] [term] [type] |
Définissez les capacités de votre terminal en indiquant le nom d'une entrée dans la base de données terminfo, devant correspondre approximativement à une variable d'environnement « TERM » sous Unix.
Les types de terminaux actuellement disponibles sont « vt100 », « vt100-color », « ieee1275 » et « dumb ». Si vous avez besoin d'autres types de terminaux, veuillez nous contacter pour discuter de la meilleure façon d'en inclure la prise en charge dans GRUB.
Les options -a (--ascii), -u (--utf8) et -v (--visual-utf8) contrôlent l'affichage du texte non-ASCII. -a spécifie un terminal exclusivement ASCII ; -u spécifie un UTF-8 ordonné logiquement ; et -v spécifie un « UTF-8 ordonné visuellement » (autrement dit, agencé de telle sorte qu'un émulateur de terminal sans prise en charge du texte bidirectionnel affiche le texte de droite à gauche dans le bon ordre ; il ne s'agit pas d'UTF-8 proprement dit, mais d'une solution de contournement).
L'option -g (--geometry) permet de spécifier la géométrie du terminal.
Si aucune option ni aucun type de terminal n'est spécifié, le type de terminal actuel est affiché.
Commandes en ligne de commande
Ces commandes sont utilisables en ligne de commande et dans les entrées de menu. Si vous oubliez une commande, vous pouvez exécuter l'aide (voir help) :
Commande | Description |
---|---|
[ | Vérifier les types de fichiers et comparer les valeurs |
acpi | Charger les tables ACPI. |
authenticate | Vérifiez si l'utilisateur est dans la liste des utilisateurs |
background_color | Définir la couleur d'arrière-plan du terminal actif |
background_image | Charger l'image d'arrière-plan du terminal actif |
badram | Filtrer les mauvaises régions de la RAM |
blocklist | Afficher une liste de blocage |
boot | Démarrez votre système d'exploitation |
cat | Afficher le contenu d'un fichier |
clear | Effacer l'écran |
cmosclean | Effacer le bit dans le CMOS |
cmosdump | Vider le contenu du CMOS |
cmostest | Bit de test dans le CMOS |
cmp | Comparer deux fichiers |
configfile | Charger un fichier de configuration |
cpuid | Vérifiez les fonctionnalités du processeur |
crc | Calculer ou vérifier les sommes de contrôle CRC32 |
cryptomount | Monter un périphérique cryptographique |
cutmem | Supprimer les régions de mémoire |
date | Afficher ou régler la date et l'heure actuelles |
devicetree | Charger un blob d'arborescence de périphériques |
distrust | Supprimer une clef publique des clefs de confiance |
drivemap | Cartographier un unité de disque sur un autre |
echo | Afficher une ligne de texte |
efitextmode | Définir/Obtenir la résolution du mode de sortie de texte |
eval | Évaluer les arguments comme des commandes GRUB |
export | Exporter une variable d'environnement |
false | Ne rien faire, sans succès |
fwsetup | Redémarrez dans le menu de configuration du micrologiciel |
gdbinfo | Fournir des informations pour le débogage avec GDB |
gettext | Traduire une chaîne de caractères |
gptsync | Remplir un MBR en fonction des entrées GPT |
halt | Éteindre votre ordinateur |
hashsum | Calculer ou vérifier la somme de contrôle du hachage |
help | Afficher les messages d'aide |
hexdump | Afficher le contenu brut d'un fichier ou d'une mémoire |
insmod | Insérer un module |
keystatus | Vérifier l'état du modificateur de touche |
list_env | Lister les variables dans le bloc d'environnement |
list_trusted | Lister les clés publiques de confiance |
load_env | Charger les variables à partir du bloc d'environnement |
loadfont | Charger les fichiers de polices de caractères |
loopback | Créer un périphérique à partir d'une image de système de fichiers |
ls | Lister les périphériques ou les fichiers |
lsfonts | Liste des polices de caractères chargées |
lsmod | Afficher les modules chargés |
md5sum | Calculer ou vérifier le hachage MD5 |
module | Charger le module pour le noyau multiboot |
multiboot | Charger un noyau compatible multiboot |
nativedisk | Passer aux pilotes de disque natifs |
normal | Entrer en mode normal |
normal_exit | Quitter le mode normal |
parttool | Modifier les entrées de la table de partition |
password | Définir un mot de passe en texte clair |
password_pbkdf2 | Définir un mot de passe haché |
plainmount | Ouvrir l'appareil chiffré en mode simple |
play | Jouer un air |
probe | Récupérer les informations de l'appareil |
rdmsr | Lire les valeurs des registres spécifiques au modèle |
read | Lire les entrées de l'utilisateur |
reboot | Redémarre votre ordinateur |
regexp | Tester si l'expression régulière correspond à la chaîne de caractères |
rmmod | Supprimer un module |
save_env | Enregistrer les variables dans le bloc d'environnement |
search | Rechercher des appareils par fichier, étiquette ou UUID |
sendkey | Émuler les frappes au clavier |
set | Définir une variable d'environnement |
sha1sum | Calculer ou vérifier le hachage SHA1 |
sha256sum | Calculer ou vérifier le hachage SHA256 |
sha512sum | Calculer ou vérifier le hachage SHA512 |
sleep | Attendre un nombre de secondes spécifié |
smbios | Récupérer les informations SMBIOS |
source | Lire un fichier de configuration dans le même contexte |
test | Vérifier les types de fichiers et comparer les valeurs |
true | Ne rien faire, avec succès |
trust | Ajouter la clef publique à la liste des clés de confiance |
unset | Annuler une variable d'environnement |
verify_detached | Vérifier la signature numérique détachée |
videoinfo | Liste des modes vidéo disponibles |
wrmsr | Écrire des valeurs dans des registres spécifiques au modèle |
[
Commande :
[ expression ] |
Alias pour l'expression de test (voir test).
acpi
Commande :
acpi [-1|-2] [--exclude=table1,...|--load-only=table1,.] [--oemid=id] [--oemtable=table] [--oemtablerev=rev] [--oemtablecreator=creator] [--oemtablecreatorrev=rev] [--no-ebda] filename ... |
Les systèmes BIOS modernes implémentent généralement l'interface ACPI (Advanced Configuration and Power Interface) et définissent différentes tables décrivant l'interface entre un système d'exploitation compatible ACPI et le micrologiciel. Dans certains cas, les tables fournies par défaut ne fonctionnent correctement qu'avec certains systèmes d'exploitation, et il peut être nécessaire d'en remplacer certaines.
Normalement, cette commande remplace le pointeur de description du système racine (RSDP) dans la zone de données étendue du BIOS pour pointer vers les nouvelles tables. Si l'option --no-ebda est utilisée, les nouvelles tables ne seront connues que de GRUB, mais pourront être utilisées par l'émulation EFI de GRUB.
Remarque : Cette commande n'est pas autorisée lorsque le verrouillage est appliqué (voir Verrouillage). Sinon, un attaquant peut demander à GRUB de charger une table SSDT pour écraser la configuration de verrouillage du noyau, puis charger et exécuter du code non signé.
authenticate
Commande :
authenticate [userlist] |
Vérifiez si l'utilisateur est dans la liste d'utilisateurs ou répertorié dans la valeur de la variable «superusers». Si la variable «superusers» est vide, cette commande renvoie «true».
background_color
Commande :
background_color color |
Définit la couleur d'arrière-plan du terminal actif. Pour les spécifications de couleurs valides. La couleur d'arrière-plan ne peut être modifiée qu'avec «gfxterm» pour la sortie du terminal.
Cette commande définit la couleur des zones vides sans texte. La couleur d'arrière-plan du texte est contrôlée par les variables d'environnement color_normal, color_highlight, menu_color_normal et menu_color_highlight.
background_image
Commande :
background_image [[--mode 'stretch'|'normal'] file] |
Charger l'image d'arrière-plan du terminal actif depuis un fichier. L'image est étirée pour occuper tout l'écran, sauf si l'option --mode «normal» est spécifiée. Sans argument, supprimer l'image d'arrière-plan actuellement chargée. L'image d'arrière-plan ne peut être modifiée qu'avec «gfxterm» pour la sortie du terminal.
badram
Commande :
badram addr,mask[,addr,mask...] |
Filtrer la RAM défectueuse.
Cette commande informe le gestionnaire de mémoire que certaines zones de RAM doivent être filtrées (généralement parce qu'elles sont endommagées). Cette commande reste active après le chargement d'un noyau de charge utile par GRUB, tant que le noyau chargé obtient sa carte mémoire de GRUB. Les noyaux prenant en charge cette commande incluent Linux, GNU Mach, le noyau de FreeBSD et les noyaux multiboot en général.
La syntaxe est identique à celle fournie par l'utilitaire Memtest86+ : une liste de paires adresse/masque. Étant donné une adresse alignée sur la page et une paire adresse/masque de base, si tous les bits de l'adresse alignée sur la page activés par le masque correspondent à l'adresse de base, cela signifie que cette page doit être filtrée. Cette syntaxe facilite la représentation des schémas qui résultent souvent de dommages à la mémoire, dus à la répartition physique des cellules mémoire.
Cette commande est similaire à la commande cutmem.
Remarque : Cette commande n'est pas autorisée lorsque le verrouillage est appliqué (voir Verrouillage). Cela empêche la suppression des régions de mémoire EFI afin de potentiellement subvertir les mécanismes de sécurité fournis par le démarrage sécurisé UEFI.
blocklist
Commande :
blocklist file |
Afficher une liste de blocage pour le fichier.
boot
Commande :
boot |
Démarrez le système d'exploitation ou le chargeur en chaîne chargé. Nécessaire uniquement lors de l'exécution de la ligne de commande entièrement interactive (implicite à la fin d'une entrée de menu).
cat
Commande :
cat [--dos] file |
Affiche le contenu du fichier. Cette commande peut être utile pour vous rappeler la partition racine de votre système d'exploitation :
grub> cat /etc/fstab |
Si l'option --dos est utilisée, les paires retour chariot/nouvelle ligne seront affichées comme une simple nouvelle ligne. Sinon, le retour chariot sera affiché comme un caractère de contrôle (« <d> ») pour faciliter la détection des problèmes de démarrage causés par un fichier formaté avec des fins de ligne de type DOS.
Remarque : cat permet d'afficher le contenu des périphériques à l'aide de la syntaxe de liste de blocage (voir Syntaxe de liste de blocage). Cependant, il est déconseillé d'afficher des données binaires, car la commande tentera de décoder les chaînes UTF-8, ce qui peut entraîner l'absence ou l'ajout d'octets dans la sortie. Utilisez plutôt la commande hexdump.
clear
Commande :
clear |
Effacer l'écran.
cmosclean
Commande :
cmosclean byte:bit |
Effacer la valeur du bit dans le CMOS à l'emplacement octet:bit. Cette commande est disponible uniquement sur les plateformes prenant en charge le CMOS.
cmosdump
Commande :
cmosdump |
Sortie :
Dump : CMOS contents |
Vider le contenu CMOS complet sous forme de valeurs hexadécimales. Cette commande est disponible uniquement sur les plateformes prenant en charge le CMOS.
cmostest
Commande :
cmostest byte:bit |
Tester la valeur du bit dans le CMOS à l'emplacement octet:bit. L'état de sortie est zéro si le bit est défini, et différent de zéro dans le cas contraire. Cette commande est disponible uniquement sur les plateformes compatibles CMOS.
cmp
Commande :
cmp [-v] file1 file2 |
Comparez les fichiers file1 et file2. S'ils sont identiques, $? sera défini sur 0. Sinon, s'ils ne sont pas identiques, $? sera défini sur une valeur différente de zéro.
Par défaut, rien n'est affiché. Si l'option -v est utilisée, le mode détaillé est activé. Dans ce mode, lorsque les fichiers diffèrent en taille, affichez les tailles comme suit :
Differ in size: 0x1234 [foo], 0x4321 [bar] |
Si les tailles sont égales mais que les octets à un décalage diffèrent, affichez les octets comme ceci :
Differ at the offset 777: 0xbe [foo], 0xef [bar] |
configfile
Commande :
configfile file |
Charger le fichier comme fichier de configuration. Si le fichier définit des entrées de menu, afficher immédiatement un menu les contenant. Les modifications des variables d'environnement effectuées par les commandes du fichier ne seront pas conservées après le retour du fichier de configuration.
cpuid
Commande :
cpuid [-l] [-p] |
Vérifiez les fonctionnalités du processeur. Cette commande est disponible uniquement sur les systèmes x86.
Avec l'option -l, renvoie true si le processeur prend en charge le mode long (64 bits).
Avec l'option -p, renvoie true si le processeur prend en charge l'extension d'adresse physique (PAE).
Si elle est invoquée sans option, cette commande se comporte actuellement comme si elle avait été invoquée avec -l. Ceci pourrait changer à l'avenir.
crc
Commande :
crc arg ... |
Alias ??pour hashsum --hash crc32 arg .. Voir la commande hashsum (voir hashsum) pour une description complète.
cryptomount
Commande :
cryptomount [ [-p password] | [-k keyfile [-O keyoffset] [-S keysize] ] ] [-H file] device|-u uuid|-a|-b |
Configure l'accès au périphérique chiffré. Une phrase secrète sera demandée de manière interactive si aucune des options -p et -k n'est spécifiée. L'option -p permet de fournir une phrase secrète (utile pour les scripts). L'option -k permet également de fournir un fichier de clés, les options -O et -S fournissant éventuellement le décalage et la taille des données de clef dans le fichier de clefs donné. L'option -H permet de fournir aux backends Cryptomount un fichier d'entête alternatif (appelé en-tête détaché). Tous les backends ne disposent pas d'en-têtes et ne prennent pas en charge les fichiers d'en-tête alternatifs (actuellement, seuls LUKS1 et LUKS2 les prennent en charge). Le paramètre device configure un périphérique GRUB spécifique (voir Convention de nommage) ; l'option -u uuid configure le périphérique avec l'UUID spécifié ; l'option -a configure tous les périphériques chiffrés détectés ; l'option -b configure tous les conteneurs Geli dont l'option de démarrage est activée.
Les périphériques ne peuvent pas être spécifiés comme fichiers de clés ni comme fichiers d'entête détachés. Cependant, cette limitation peut être contournée en utilisant la syntaxe de liste de blocage. Par exemple, (hd1,gpt2) ne peut pas être utilisé, mais (hd1,gpt2)0+ permet d'obtenir le résultat souhaité.
GRUB prend en charge les périphériques chiffrés avec LUKS, LUKS2 et geli. Notez que les modules nécessaires (luks, luks2 et geli) doivent être chargés manuellement avant que cette commande puisse être utilisée. Pour LUKS2, seule la fonction de dérivation de clé PBKDF2 est prise en charge, car Argon2 n'est pas encore pris en charge.
Les disques déchiffrés avec succès sont nommés (cryptoX) et un suffixe de numérotation croissant est ajouté à chaque nouveau disque déchiffré. Si le disque chiffré héberge un niveau d'abstraction plus élevé (comme LVM2 ou MDRAID), il sera créé sous un espace de noms de périphérique distinct, en plus de l'espace de noms du disque cryptographique.
La prise en charge du mode de chiffrement simple (plain dm-crypt) est assurée par une commande séparée, voir plainmount.
cutmem
Commande :
cutmem from[K|M|G] to[K|M|G] |
Supprime toutes les régions mémoire dans l'intervalle spécifiée.
Cette commande informe le gestionnaire de mémoire que certaines régions de RAM doivent être filtrées. Cette commande reste active après le chargement d'un noyau de charge utile par GRUB, tant que le noyau chargé obtient sa carte mémoire de GRUB. Les noyaux prenant en charge cette commande incluent Linux, GNU Mach, le noyau de FreeBSD et les noyaux multiboot en général.
Cette commande est similaire à la commande badram.
Remarque : Cette commande n'est pas autorisée lorsque le verrouillage est appliqué. Cela empêche la suppression de régions mémoire EFI, ce qui pourrait compromettre les mécanismes de sécurité fournis par le démarrage sécurisé UEFI.
date
Commande :
date [[year-]month-day] [hour:minute[:second]] |
Sans paramètre, affiche la date et l'heure actuelles.
Sinon, prenez la date et l'heure actuelles, modifiez les éléments spécifiés en argument et définissez le résultat comme nouvelle date et heure. Par exemple, «date 01-01» définira le mois et le jour actuels au 1er janvier, mais conservera l'année, l'heure, les minutes et les secondes.
devicetree
Commande :
devicetree file |
Charge un blob d'arborescence de périphériques (.dtb) depuis un système de fichiers, pour une utilisation ultérieure par un noyau Linux. Cette commande ne fusionne pas avec l'arborescence de périphériques fournie par le micrologiciel, mais la remplace complètement.
Remarque : Cette commande n'est pas autorisée lorsque le verrouillage est appliqué. Ceci est fait pour éviter de contourner divers mécanismes de sécurité.
distrust
Commande :
distrust pubkey_id |
Supprimez la clef publique pubkey_id du trousseau de clés de confiance de GRUB. pubkey_id correspond aux quatre derniers octets (huit chiffres hexadécimaux) de l'identifiant de clef GPG v4, qui est également le résultat de list_trusted (voir list_trusted). Hors GRUB, l'identifiant de clef peut être obtenu avec gpg --fingerprint. Ces clés sont utilisées pour valider les signatures lorsque la variable d'environnement check_signatures est définie sur enforce (voir check_signatures), et par certaines invocations de verify_detached (voir verify_detached). Pour plus d'informations, consultez la section Utilisation des signatures numériques.
drivemap
Commande :
drivemap -l|-r|[-s] from_drive to_drive |
Sans options, cartographiez le lecteur from_drive vers le lecteur to_drive. Ceci est nécessaire lors du chargement en chaîne de certains systèmes d'exploitation, comme DOS, si ce système d'exploitation réside sur un lecteur autre que le premier. Pour plus de commodité, tout suffixe de partition sur le lecteur est ignoré ; vous pouvez donc utiliser ${root} comme spécification de lecteur en toute sécurité.
Avec l'option -s, effectue également la cartographie inverse, en permutant les deux unités de disques.
Avec l'option -l, liste les cartographies actuels.
Avec l'option -r, réinitialisez tous les cartographies à leurs valeurs par défaut.
Par exemple :
drivemap -s (hd0) (hd1) |
Remarque : disponible uniquement sur i386-pc.
echo
Commande :
echo [-n] [-e] string ... |
Affiche le texte demandé et, sauf si l'option -n est utilisée, un retour à la ligne final. S'il y a plusieurs chaînes, elles sont séparées par des espaces dans la sortie. Comme d'habitude dans les commandes GRUB, les variables peuvent être remplacées par « ${var} ».
L'option -e permet d'interpréter les échappements par barre oblique inverse. Les séquences suivantes sont reconnues :
Caractère | Description |
---|---|
\\ | barre oblique inverse |
\a | alerte (BEL) |
\c | supprimer le saut de ligne final |
\f | saut de page |
\n | saut de ligne |
\r | retour chariot |
\t | tabulation horizontale |
\v | tabulation verticale |
Lors de l'interprétation des échappements de barre oblique inverse, la barre oblique inverse suivie de tout autre caractère affichera ce caractère.
efitextmode
Commande :
efitextmode [min | max | mode_num | cols rows] |
Utilisé sans paramètre, affiche tous les modes d'affichage texte disponibles. Le mode défini détermine les colonnes et les lignes du texte affiché en mode texte. Un astérisque «*» apparaîtra à la fin de la ligne du mode actuellement défini.
Si un seul paramètre est donné, il doit être «min», «max» ou un numéro de mode fourni par la liste lorsqu'il est exécuté sans paramètre. Ces paramètres définissent respectivement le mode minimum, maximum et un mode particulier.
Sinon, la commande doit recevoir deux paramètres numériques spécifiant les colonnes et les lignes du mode souhaité. Spécifier une combinaison de colonnes et de lignes ne correspondant pas à un mode pris en charge renverra une erreur, mais n'aura aucun effet par ailleurs.
Par défaut, GRUB démarre dans le mode par défaut du micrologiciel EFI. Certains micrologiciels sont connus pour configurer le mode par défaut de telle sorte que la sortie se comporte de manière étrange. Par exemple, le curseur dans l'interpréteur de commande GRUB n'atteint jamais le bas de l'écran ou, lors de la saisie de caractères à l'invite, les caractères de la sortie de la commande précédente sont écrasés. La définition du mode peut résoudre ce problème.
La spécification EFI stipule que le mode 0 doit être disponible et comporter respectivement 80 et 25 colonnes et lignes. Le mode 1 peut être défini et, le cas échéant, comporter respectivement 80 et 50 colonnes et lignes. Tout autre mode peut comporter des colonnes et des lignes définies arbitrairement par le micrologiciel. Cela signifie qu'un mode comportant 100 et 31 colonnes et lignes sur un micrologiciel peut avoir un numéro de mode différent sur un autre micrologiciel, voire ne pas exister du tout. De même, le mode 2 d'un micrologiciel peut avoir un nombre de colonnes et de lignes différent de celui du mode 2 d'un autre micrologiciel. Il ne faut donc pas se fier à un numéro de mode particulier ou à un mode comportant un certain nombre de colonnes et de lignes existant sur tous les micrologiciels, à l'exception du mode 0.
Remarque : Cette commande est disponible uniquement sur les plateformes EFI et est similaire à la commande « mode » de l'interpréteur de commande EFI.
eval
Commande :
eval string ... |
Concaténez les paramètres ensemble en utilisant un seul espace comme séparateur et évaluez le résultat sous forme de séquence de commandes GRUB.
export
Commande :
export envvar |
Exportez la variable d'environnement envvar. Les variables exportées sont visibles dans les fichiers de configuration auxiliaires chargés via configfile.
false
Commande :
false |
Ne rien faire, sans succès. Ceci est particulièrement utile dans les constructions de contrôle telles que if et while.
fwsetup
Commande :
fwsetup [--is-supported] |
Redémarrez dans le menu de configuration du micrologiciel. Si l'option --is-supported est spécifiée, vérifiez si le micrologiciel prend en charge un menu de configuration et quittez le système si c'est le cas.
gdbinfo
Commande :
gdbinfo |
Texte de sortie à utiliser comme commande GDB pour une session GDB utilisant le script gdb_grub et attaché à une instance GRUB en cours d'exécution. La commande GDB générée indique à GDB comment charger les symboles de débogage à leur adresse d'exécution appropriée. Cette option n'est actuellement disponible que pour les plateformes EFI.
gettext
Commande :
gettext string |
Traduire la chaîne de caractères dans la langue courante.
Le code de la langue courante est entreposé dans la variable «lang» de l'environnement GRUB. Les fichiers de traduction au format MO sont lus depuis « locale_dir » (voir locale_dir), généralement /boot/grub/locale.
gptsync
Commande :
gptsync device [partition[+/-[type]]] ... |
Les disques utilisant la table de partition GUID (GPT) disposent également d'une table de partitions MBR (Master Boot Record) héritée pour assurer la compatibilité avec le BIOS et les anciens systèmes d'exploitation. L'ancien MBR ne peut représenter qu'un sous-ensemble limité d'entrées de partition GPT.
Cette commande renseigne l'ancien MBR avec les entrées de partition spécifiées sur le périphérique. Jusqu'à trois partitions peuvent être utilisées.
type est un code de type de partition MBR ; préfixez-le par « 0x » pour une saisie hexadécimale. Le séparateur entre la partition et le type peut être « + » pour activer la partition, ou « - » pour la désactiver ; une seule partition peut être active. Si le séparateur et le type sont omis, la partition sera inactive.
halt
Commande :
halt [--no-apm] |
La commande arrête l'ordinateur. Sur la cible i386-pc, l'option --no-apm, ou l'option abrégée -n, est spécifiée ; aucun appel APM au BIOS n'est effectué. Sinon, l'ordinateur est arrêté via APM sur cette cible.
hashsum
Commande :
hashsum --hash hash --keep-going --uncompress --check file [--prefix dir]|file ... |
Calculer ou vérifier les hachages de fichiers. Le type de hachage est sélectionné avec l'option --hash. Les hachages pris en charge sont : « adler32 », « crc64 », « crc32 », « crc32rfc1510 », « crc24rfc2440 », « md4 », « md5 », « ripemd160 », « sha1 », « sha224 », « sha256 », « sha512 », « sha384 », « tiger192 », « tiger », « tiger2 », « whirlpool ». L'option --uncompress décompresse les fichiers avant le calcul du hachage.
Lorsqu'une liste de fichiers est fournie, le hachage de chaque fichier est calculé et affiché, suivi du nom du fichier, chaque fichier sur une nouvelle ligne.
L'option --check est utilisée pour pointer vers un fichier contenant la liste des paires de noms de hachage au même format que celui utilisé par la commande UNIX md5sum. L'option --prefix peut être utilisée pour indiquer le répertoire où se trouvent les fichiers. La vérification du hachage s'arrête dès la première incohérence détectée, sauf si l'option --keep-going a été utilisée. Le code de sortie $? est défini sur 0 si la vérification du hachage réussit. En cas d'échec, $? est défini sur une valeur différente de zéro.
help
Commande :
help [pattern ...] |
Affiche des informations utiles sur les commandes intégrées. Si vous ne spécifiez pas de modèle, cette commande affiche une courte description de toutes les commandes disponibles.
Si vous spécifiez des modèles, des informations plus détaillées sur chacune des commandes dont le nom commence par ces modèles s'affichent.
hexdump
Commande :
hexdump [--skip offset] [--length len] FILE_OR_DEVICE |
Affiche le contenu brut d'un fichier ou de la mémoire. Lorsque l'option --skip est spécifiée, le déplacement (offset) d'octets est ignoré à partir du début du périphérique ou du fichier spécifié. L'option --length permet de spécifier un nombre maximal d'octets à afficher.
Si le périphérique spécial (mem) est spécifié, le déplacement (offset) donné à --skip est traité comme l'adresse d'un emplacement mémoire à partir duquel effectuer le vidage.
insmod
Commande :
insmod module |
Insérez le module GRUB dynamique appelé module.
keystatus
Commande :
keystatus [--shift] [--ctrl] [--alt] |
Renvoie la valeur «true» si les touches de modification Shift, Ctrl ou Alt sont maintenues enfoncées, comme demandé par les options. Cette fonction est utile dans les scripts pour permettre à l'utilisateur de contrôler le comportement sans avoir à attendre une pression sur une touche.
La vérification de l'état des touches de modification n'est prise en charge que sur certaines plateformes. Si elle est appelée sans option, la commande keystatus renvoie «true» si, et seulement si, la vérification de l'état des touches de modification est prise en charge.
list_env
Commande :
list_env [--file file] |
Listez toutes les variables du fichier de bloc d'environnement.
L'option --file remplace l'emplacement par défaut du bloc d'environnement.
list_trusted
Commande :
list_trusted |
Listez toutes les clefs publiques approuvées par GRUB pour la validation des signatures. Le résultat est au format d'empreinte de clef GPG v4 (c'est-à-dire la sortie de gpg --fingerprint). Les quatre octets de poids faible (huit derniers chiffres hexadécimaux) peuvent être utilisés comme argument pour la distrust (voir distrust).
load_env
Commande :
load_env [--file file] [--skip-sig] [whitelisted_variable_name] ... |
Charger toutes les variables du fichier de bloc d'environnement dans l'environnement.
L'option --file remplace l'emplacement par défaut du bloc d'environnement.
L'option --skip-sig ignore la vérification des signatures, même lorsque la valeur de la variable d'environnement check_signatures est définie sur enforce.
Si un ou plusieurs noms de variables sont fournis en arguments, ils sont interprétés comme une liste blanche de variables à charger depuis le fichier de bloc d'environnement. Les variables définies dans le fichier, mais absentes de la liste blanche, sont ignorées.
L'option --skip-sig doit être utilisée avec précaution et toujours associée à une liste blanche de variables acceptables dont les valeurs doivent être définies. L'absence d'une liste blanche soigneusement construite pourrait entraîner la lecture d'une valeur malveillante dans des variables d'environnement critiques du fichier, comme la définition de check_signatures=no, la modification du préfixe pour démarrer depuis un emplacement inattendu ou ne pas démarrer du tout,...
Utilisés avec précaution, l'option --skip-sig et la liste blanche permettent à un administrateur de configurer un système pour démarrer uniquement avec des configurations signées, tout en permettant à l'utilisateur de choisir parmi plusieurs configurations, et d'activer les tentatives de démarrage «one-shot» et le comportement «savedefault».
loadfont
Commande :
loadfont file ... |
Charger les fichiers de polices spécifiés. Sauf indication d'un chemin d'accès absolu, le fichier est supposé se trouver dans le répertoire «$prefix/fonts» avec le suffixe «.pf2».
loopback
Commande :
loopback [-d] [-D] device file |
Faites correspondre le périphérique nommé device au contenu de l'image du système de fichiers dans file. Par exemple :
loopback loop0 /path/to/image ls (loop0)/ |
L'option -D permet de décompresser le fichier de bouclage de manière transparente si un décompresseur approprié est chargé.
Avec l'option -d, supprimez un périphérique précédemment créé à l'aide de cette commande.
ls
Commande :
ls [arg ...] |
Liste des périphériques ou des fichiers.
Sans paramètre, affiche tous les périphériques connus de GRUB.
Si le paramètre est un nom de périphérique entre parenthèses (voir Syntaxe du périphérique), affiche le nom du système de fichiers de ce périphérique.
Si le paramètre est un répertoire donné comme nom de fichier absolu (voir Syntaxe du nom de fichier), affiche le contenu de ce répertoire.
lsfonts
Commande :
lsfonts |
Liste des polices de caractères chargées.
lsmod
Commande :
lsmod |
Afficher la liste des modules chargés.
md5sum
Commande :
md5sum arg ... |
Alias ??pour hashsum --hash md5 arg .. Voir la commande hashsum (voir hashsum) pour une description complète.
module
Commande :
module [--nounzip] file [arguments] |
Chargez un module pour l'image du noyau multiboot. Le reste de la ligne est transmis textuellement comme ligne de commande du module.
multiboot
Commande :
multiboot [--quirk-bad-kludge] [--quirk-modules-after-kernel] file ... |
Chargez une image de noyau multiboot depuis un fichier. Le reste de la ligne est transmis textuellement comme ligne de commande du noyau. Tout module doit être rechargé après l'utilisation de cette commande (voir module).
Certains noyaux présentent des problèmes connus. Vous devez spécifier -quirk-* pour ceux-ci. -quirk-bad-kludge est un problème rencontré dans plusieurs produits, qui incluent le chargement d'informations Kludge avec des données invalides dans un fichier ELF. GRUB antérieur à la version 0.97 et certaines versions personnalisées préféraient les informations ELF, tandis que la version 0.97 et GRUB 2 utilisent Kludge. Utilisez cette option pour ignorer Kludge. Systèmes concernés : anciens Solaris et SkyOS.
-quirk-modules-after-kernel est nécessaire pour les noyaux qui se chargent à une adresse relativement élevée, par exemple 16 Mio, et qui ne peuvent pas gérer les modules insérés entre 1 Mio et le début du noyau. Systèmes concernés : VMware.
nativedisk
Commande :
nativedisk |
Passer des pilotes de disque du firmware aux pilotes natifs. Utile uniquement sur les plateformes où le firmware et les disques natifs sont disponibles. Actuellement, les pilotes i386-pc, i386-efi, i386-ieee1275 et x86_64-efi sont disponibles.
normal
Commande :
normal [file] |
Passez en mode normal et affichez le menu GRUB.
En mode normal, les commandes, les modules du système de fichiers et les modules de cryptographie sont automatiquement chargés, et l'analyseur de scripts GRUB complet est disponible. D'autres modules peuvent être chargés explicitement avec insmod (voir insmod).
Si un fichier est spécifié, les commandes seront lues depuis ce fichier. Sinon, elles seront lues depuis $prefix/grub.cfg, s'il existe.
normal peut être appelé depuis le mode normal, créant ainsi un environnement imbriqué. Il est plus courant d'utiliser configfile (voir configfile) pour cela.
normal_exit
Commande :
normal_exit |
Quitter le mode normal (voir « normal »). Si cette instance du mode normal n'était pas imbriquée dans une autre, revenir au mode de secours.
parttool
Commande :
parttool partition commands |
Apportez diverses modifications aux entrées de la table de partition.
Chaque commande est soit une option booléenne, auquel cas elle doit être suivie de « + » ou de « - » (sans espace) pour activer ou désactiver cette option, soit une valeur au format «commande=valeur».
Actuellement, parttool n'est utile que sur les tables de partition DOS (également appelées Master Boot Record, ou MBR). Sur ces tables de partition, les commandes suivantes sont disponibles :
Commande | Description |
---|---|
'boot' (boolean) | Lorsqu'elle est activée, cette commande active la partition sélectionnée (démarrable) sur son disque, supprimant ainsi l'indicateur d'activité de toutes les autres partitions. Cette commande est limitée aux partitions principales. |
'type' (value) | Modifier le type d'une partition existante. La valeur doit être un nombre compris entre 0 et 0xFF (préfixe « 0x » pour la saisir au format hexadécimal). |
'hidden' (boolean) | Lorsque cette option est activée, elle masque la partition sélectionnée en définissant le bit caché dans son code de type de partition ; lorsqu'elle est désactivée, elle l'affiche en effaçant ce bit. Cette option est utile uniquement lors du démarrage de DOS ou Windows et lorsque plusieurs partitions FAT principales existent sur un même disque. Voir aussi DOS/Windows. |
password
Commande :
password user clear-password |
Définissez un utilisateur nommé user avec le mot de passe clear-password.
password_pbkdf2
Commande :
password_pbkdf2 user hashed-password |
Définissez un utilisateur nommé user avec le hachage de mot de passe hashed-password. Utilisez grub-mkpasswd-pbkdf2 (voir Appel de grub-mkpasswd-pbkdf2) pour générer des hachages de mot de passe.
plainmount
Commande :
plainmount device -c cipher -s key size [-h hash] [-S sector size] [-p password] [-u uuid] [[-d keyfile] [-O keyfile offset]] |
Configurez l'accès au périphérique chiffré en mode simple. Le décalage des données chiffrées sur le périphérique est spécifié par secteurs de 512 octets à l'aide de la syntaxe de liste de blocage et du périphérique de bouclage. L'exemple suivant montre comment spécifier un déplacement de 1 Mio :
loopback node (hd0,gpt1)2048+ plainmount node ... |
La commande plainmount permet d'ouvrir un volume chiffré LUKS si sa clef principale et ses paramètres (taille de la clef, chiffrement, déplacement,...) sont connus.
Il existe deux façons de spécifier un mot de passe : un fichier de clefs et une phrase secrète. Le paramètre de chemin d'accès au fichier de clefs a une priorité supérieure à celle de la phrase secrète et est spécifié avec l'option -d. Les données de mot de passe obtenues à partir des fichiers de clefs ne sont pas hachées et sont utilisées directement comme clé de chiffrement. Un décalage facultatif des données de mot de passe dans le fichier de clés peut être spécifié avec l'option -O ou directement avec l'option -d et la syntaxe de liste de blocage GRUB, si les données du fichier de clés sont accessibles depuis un périphérique et alignées sur 512 octets. L'exemple suivant illustre les deux méthodes permettant de spécifier les données de mot de passe dans le fichier de clés à un décalage de 1 Mio :
plainmount -d (hd0,gpt1)2048+ ... plainmount -d (hd0,gpt1)+ -O 1048576 ... |
Si aucun fichier de clefs n'est spécifié, le mot de passe est défini sur la chaîne spécifiée par l'option -p ou demandé interactivement depuis la console. Dans les deux cas, le mot de passe fourni est haché avec l'algorithme spécifié par l'option -h. Cette option est obligatoire si aucun fichier de clefs n'est spécifié, mais elle peut être définie sur « plain », ce qui signifie qu'aucun hachage n'est effectué et que le mot de passe est utilisé directement comme clef.
Les options Cipher -c et keysize -s spécifient respectivement l'algorithme de chiffrement et la taille de la clef et sont obligatoires. Le chiffrement doit être spécifié avec le mode séparé par un tiret (par exemple, « aes-xts-plain64 »). L'option de taille de clé -s indique la taille de la clef du chiffrement en bits, à ne pas confondre avec le déplacement des données de la clef dans un fichier de clés spécifié avec l'option -O. Elle ne doit pas dépasser 1 024 bits ; une clef de 32 octets serait donc spécifiée à 256 bits.
Le paramètre facultatif -S spécifie la taille du secteur chiffré du périphérique. Sa longueur doit être d'au moins 512 octets (valeur par défaut) et sa puissance doit être de 2,9. La taille des secteurs du disque est configurée lors de la création du volume chiffré. Tenter de déchiffrer des volumes avec une taille de secteur différente de celle utilisée à la création n'entraînera pas d'erreur, mais déchiffrera des octets aléatoires et empêchera ainsi l'accès au volume (dans certains cas, le pilote du système de fichiers peut détecter la présence d'un système de fichiers, mais refusera néanmoins de le monter).
Par défaut, les nouveaux périphériques à montage simple recevront un UUID commençant par «107fea74-a6b7-34a7-4bd1-1c507305a401», dont les derniers chiffres sont incrémentés de un pour chaque périphérique à montage simple au-delà des 2^10 premiers périphériques.
Tous les paramètres de chiffrement (chiffrement, hachage, taille de clé, décalage du disque et taille des secteurs du disque) doivent correspondre aux paramètres utilisés pour créer le volume. Si l'un d'entre eux ne correspond pas aux arguments réels utilisés lors du chiffrement initial, plainmount créera un périphérique virtuel avec les données indésirables et GRUB signalera un système de fichiers inconnu pour un tel périphérique.
play
Commande :
play file | tempo [pitch1 duration1] [pitch2 duration2] ... |
Joue une mélodie.
Si le paramètre est un nom de fichier (voir Syntaxe des noms de fichiers), joue la mélodie qui y est enregistrée. Le format du fichier est d'abord le tempo sous forme de nombre little-endian 32 bits non signé, puis des paires de nombres little-endian 16 bits non signés pour les paires hauteur/durée.
Si les paramètres sont une série de nombres, joue la mélodie en ligne.
Le tempo est la base de toutes les durées de notes. 60 correspond à une base d'une seconde, 120 à une base d'une demi-seconde,... Les hauteurs sont exprimées en Hz. Réglez la hauteur à 0 pour produire un silence.
probe
Commande :
probe [--set var] --driver|--partmap|--fs|--fs-uuid|--label|--part-uuid device |
Récupérer les informations du périphérique. Si l'option --set est spécifiée, affecter le résultat à la variable var ; sinon, afficher les informations à l'écran.
L'option --part-uuid n'est actuellement implémentée que pour les disques formatés MSDOS et GPT.
rdmsr
Commande :
rdmsr 0xADDR [-v VARNAME] |
Lire un registre spécifique au modèle à l'adresse 0xADDR. Si le paramètre -v est utilisé et qu'une variable d'environnement VARNAME est spécifiée, définissez cette variable d'environnement sur la valeur lue.
Notez que sur les systèmes SMP, la lecture depuis un MSR dont la portée est définie par processus léger matériel implique que la valeur renvoyée s'applique uniquement au processeur/coeur/processus léger exécutant la commande.
De plus, si vous spécifiez une adresse MSR réservée ou non implémentée, une exception de protection générale (non gérée actuellement) sera générée et le système redémarrera.
read
Commande :
read [-s] [var] |
Lire une ligne de saisie utilisateur. Si une variable d'environnement var est fournie, définir cette variable d'environnement sur la ligne de saisie lue, sans retour à la ligne. Si le paramètre -s est utilisé, activer le mode silencieux, où la saisie n'est pas affichée sur le terminal.
reboot
Commande :
reboot |
Redémarre l'ordinateur.
regexp
Commande :
regexp [--set [number:]var] regexp string |
Teste si l'expression régulière regexp correspond à une chaîne de caractères. Les expressions régulières prises en charge sont les expressions régulières étendues POSIX.2. Si l'option --set est spécifiée, enregistre la sous-expression correspondante dans la variable var. Les sous-expressions sont numérotées selon l'ordre de leurs parenthèses ouvrantes, à partir de « 1 ». La valeur par défaut est « 1 ».
rmmod
Commande :
rmmod module |
Supprimer un module chargé.
save_env
Commande :
save_env [--file file] var ... |
Enregistrez les variables nommées de l'environnement dans le fichier de bloc d'environnement.
L'option --file remplace l'emplacement par défaut du bloc d'environnement.
Cette commande fonctionne correctement même si la variable d'environnement check_signatures est définie sur enforce (voir check_signatures), car elle écrit sur le disque et ne modifie pas le comportement de GRUB en fonction du contenu lu. Il est possible de modifier un fichier de bloc d'environnement signé numériquement depuis GRUB à l'aide de cette commande, de sorte que sa signature ne soit plus valide lors des démarrages suivants. Dans ces configurations avancées, il est conseillé de veiller à ne pas rendre le système inamorçable.
search
Commande :
search [--file|--label|--fs-uuid] [--set [var]] [--no-floppy|--efidisk-only] name |
Recherche de périphériques par fichier (-f, --file), étiquette de système de fichiers (-l, --label) ou UUID de système de fichiers (-u, --fs-uuid).
Si l'option (-s, --set) est utilisée, le premier périphérique trouvé est défini comme valeur de la variable d'environnement var. La variable par défaut est «root».
L'option (-n, --no-floppy) empêche la recherche sur les lecteurs de disquettes, ce qui peut être lent.
L'option (--efidisk-only) empêche la recherche sur d'autres périphériques que les disques EFI. Cette option est généralement utilisée lors du chargement en chaîne vers une partition EFI locale.
Les commandes «search.file», «search.fs_label» et «search.fs_uuid» sont des alias de «search --file», «search --label» et «search --fs-uuid» respectivement.
Des indications sur le périphérique le plus susceptible de contenir l'élément recherché peuvent également être fournies via l'option (-h, --hint) avec le nom du périphérique comme argument. Si l'argument se termine par une virgule, la recherche porte également sur les partitions du périphérique. De plus, des indications spécifiques à la plateforme peuvent être fournies via les options --hint-ieee1275, --hint-bios, --hint-baremetal, --hint-efi et --hint-arc. Lorsqu'elles sont spécifiées, ces options prennent un argument et fonctionnent comme --hint, mais uniquement sur la plateforme spécifiée.
sendkey
Commande :
sendkey [--num|--caps|--scroll|--insert|--pause|--left-shift|--right-shift|--sysrq|--numkey|--capskey|--scrollkey|--insertkey|--left-alt|--right-alt|--left-ctrl|--right-ctrl 'on'|'off']. [no-led] keystroke |
Insérer des touches dans la mémoire tampon du clavier au démarrage. Il arrive qu'un système d'exploitation ou un chargeur de démarrage en chaîne nécessite l'utilisation de touches spécifiques : par exemple, il peut être nécessaire d'appuyer sur une touche spécifique pour accéder au « mode sans échec », ou lors du chargement en chaîne d'un autre chargeur de démarrage, il peut lui envoyer des touches pour naviguer dans son menu.
Remarque : Cette commande n'est actuellement disponible que sur la cible i386-pc.
Vous pouvez indiquer jusqu'à 16 touches (la longueur de la mémoire tampon du clavier du BIOS). Les noms des touches peuvent être des majuscules, des minuscules, des chiffres ou être extraits du tableau suivant :
Nom | Touche |
---|---|
escape | Escape |
exclam | ! |
at | @ |
numbersign | # |
dollar | $ |
percent | % |
caret | ^ |
ampersand | & |
asterisk | * |
parenleft | ( |
parenright | ) |
minus | - |
underscore | _ |
equal | = |
plus | + |
backspace | Backspace |
tab | Tab |
bracketleft | [ |
braceleft | { |
bracketright | ] |
braceright | } |
enter | Enter |
control | Appuyer et relâcher la touche Ctrl |
semicolon | ; |
colon | : |
quote | ' |
doublequote | " |
backquote | ' |
tilde | ~ |
shift | appuyez et relâchez la touche Shift gauche |
backslash | \ |
bar | | |
comma | , |
less | < |
eriod | . |
greater | > |
lash | / |
question | ? |
rshift | appuyez et relâchez la touche Shift droite |
alt | Appuyez et relâchez Alt |
space | Barre d'espacement |
capslock | Caps Lock |
F1 | F1 |
F2 | F2 |
F3 | F3 |
F4 | F4 |
F5 | F5 |
F6 | F6 |
F7 | F7 |
F8 | F8 |
F9 | F9 |
F10 | F10 |
F11 | F11 |
F12 | F12 |
num1 | 1 (pavé numérique) |
num2 | 2 (pavé numérique) |
num3 | 3 (pavé numérique) |
num4 | 4 (pavé numérique) |
num5 | 5 (pavé numérique) |
num6 | 6 (pavé numérique) |
num7 | 7 (pavé numérique) |
num8 | 8 (pavé numérique) |
num9 | 9 (pavé numérique) |
num0 | 0 (pavé numérique) |
numperiod | . (pavé numérique) |
numend | End (pavé numérique) |
numdown | ↓ (pavé numérique) |
numpgdown | Page Down (pavé numérique) |
numleft | ← (pavé numérique) |
numcenter | 5 avec Num Lock inactive (pavé numérique) |
numright | → (pavé numérique) |
numhome | Home (pavé numérique) |
numup | ↑ (pavé numérique) |
numpgup | Page Up (pavé numérique) |
numinsert | Insert (pavé numérique) |
numdelete | Delete (pavé numérique) |
numasterisk | * (pavé numérique) |
numminus | - (pavé numérique) |
numplus | + (pavé numérique) |
numslash | / (pavé numérique) |
numenter | Enter (pavé numérique) |
delete | Delete |
insert | Insert |
home | Home |
end | End |
pgdown | Page Down |
pgup | Page Up |
down | ↓ |
up | ↑ |
left | ← |
right | → |
Outre les frappes, la commande sendkey prend en charge diverses options affectant les indicateurs d'état du clavier du BIOS. Ces options acceptent un paramètre «on» ou «off», spécifiant si l'indicateur d'état correspondant doit être activé ou désactivé ; l'omission de l'option pour un indicateur d'état donné laissera cet indicateur à son état initial au démarrage. Les options --num, --caps, --scroll et --insert simulent le réglage du mode correspondant, tandis que les options --numkey, --capskey, --scrollkey et --insertkey simulent l'appui prolongé sur la touche correspondante. Les autres options d'indicateur d'état sont explicites.
Si l'option --no-led est spécifiée, les options d'indicateur d'état n'auront aucun effet sur les LED du clavier.
Si la commande sendkey est exécutée plusieurs fois, seule la dernière invocation a un effet.
Comme sendkey manipule la mémoire tampon du clavier du BIOS, elle peut provoquer des blocages, des redémarrages ou d'autres dysfonctionnements sur certains systèmes. Si le système d'exploitation ou le chargeur de démarrage exécuté après GRUB utilise son propre pilote de clavier plutôt que les fonctions clavier du BIOS, sendkey n'aura aucun effet.
Cette commande est uniquement disponible sur les systèmes BIOS PC.
set
Commande :
set [envvar=value] |
Définissez la variable d'environnement envvar sur valeur. Si elle est appelée sans paramètre, affiche toutes les variables d'environnement avec leurs valeurs. Pour la liste des variables d'environnement actuellement utilisées par GRUB.
sha1sum
Commande :
sha1sum arg ... |
Alias pour hashsum --hash sha1 arg .... Voir la commande hashsum (voir hashsum) pour une description complète.
sha256sum
Commande :
sha256sum arg ... |
Alias pour hashsum --hash sha256 arg .... Voir la commande hashsum (voir hashsum) pour une description complète.
sha512sum
Commande :
sha512sum arg ... |
Alias pour hashsum --hash sha512 arg .... Voir la commande hashsum (voir hashsum) pour une description complète.
sleep
Commande :
sleep [--verbose] [--interruptible] count |
Mettre en veille pendant quelques secondes. Si l'option --interruptible est activée, appuyer sur Esc, F4 ou maintenir la touche Shift enfoncée permet d'interrompre la mise en veille. L'option --verbose affiche le compte à rebours des secondes restantes. Le code de sortie est défini sur 0 si le délai a expiré et sur 1 si le délai a été interrompu par l'une des touches mentionnées.
smbios
Commande :
smbios [--type type] [--handle handle] [--match match] (--get-byte | --get-word | --get-dword | --get-qword | --get-string | --get-uuid) offset [--set variable] |
Récupérer les informations SMBIOS.
La commande smbios renvoie la valeur d'un champ d'une structure SMBIOS. Les options suivantes déterminent la structure à sélectionner.
- Spécifier --type sélectionne les structures dont le type correspond. Ce type peut être un entier compris entre 0 et 255.
- Spécifier --handle sélectionne les structures dont le descripteur correspond. Ce descripteur peut être un entier compris entre 0 et 65535.
- Spécifier --match sélectionne le numéro de structure correspondant dans la liste filtrée des structures ; par exemple, smbios --type 4 --match 2 sélectionne la deuxième structure d'informations de processus (type 4). La liste est toujours ordonnée selon la table SMBIOS du matériel. Le numéro de correspondance doit être un entier positif. S'il n'est pas spécifié, la première structure correspondante est sélectionnée.
Les options restantes déterminent le champ à renvoyer dans la structure SMBIOS sélectionnée. Une seule de ces options peut être spécifiée à la fois.
- Lorsque l'option --get-byte est utilisée, la valeur de l'octet au déplacement de la structure SMBIOS sélectionnée est renvoyée. Elle est formatée comme un entier décimal non signé.
- Lorsque l'option --get-word est utilisée, la valeur du mot (deux octets) à l'offset de la structure SMBIOS sélectionnée est renvoyée. Elle est formatée comme un entier décimal non signé.
- Lorsque l'option --get-dword est utilisée, la valeur du dword (quatre octets) à l'offset de la structure SMBIOS sélectionnée est renvoyée. Elle est formatée comme un entier décimal non signé.
- Lorsque l'option --get-qword est utilisée, la valeur du qword (huit octets) à l'offset de la structure SMBIOS sélectionnée est renvoyée. Elle est formatée comme un entier décimal non signé.
- Avec l'option --get-string, la chaîne est renvoyée avec son index, situé à octets de déplacement dans la structure SMBIOS sélectionnée. Avec l'option --get-uuid, la valeur de l'UUID (seize octets) est renvoyée à octets de déplacement dans la structure SMBIOS sélectionnée. Elle est formatée en chiffres hexadécimaux minuscules avec trait d'union, les trois premiers champs étant en little-endian et les autres étant imprimés octet par octet.
L'action par défaut consiste à afficher la valeur du champ demandé sur la console, mais un nom de variable peut être spécifié avec l'option --set pour entreposer la valeur au lieu de l'afficher.
Par exemple, cela entreposera puis affichera le nom du fabricant du système :
smbios --type 1 --get-string 4 --set system_manufacturer echo $system_manufacturer |
source
Commande :
source file |
Lire le fichier comme un fichier de configuration, comme si son contenu avait été directement intégré au fichier source. Contrairement à configfile (voir configfile), cette méthode exécute le contenu du fichier sans modifier le contexte : toute modification des variables d'environnement effectuée par les commandes du fichier sera conservée après le retour de la source, et le menu ne s'affichera pas immédiatement.
test
Commande :
test expression |
Évalue l'expression et renvoie un état de sortie nul si le résultat est vrai, et un état différent de zéro dans le cas contraire.
L'expression est l'une des suivantes :
Expression | Description | |
---|---|---|
string1 == string2 | les chaînes de caractères sont égales | |
string1 != string2 | les chaînes de caractères ne sont pas égales | |
string1 < string2 | string1 est lexicographiquement inférieur à string2 | |
string1 <= string2 | string1 est lexicographiquement inférieur ou égal à string2 | |
string1 > string2 | string1 est lexicographiquement supérieur à string2 | |
string1 >= string2 | string1 est lexicographiquement supérieur ou égal à string2 | |
integer1 -eq integer2 | integer1 est égal à integer2 | |
integer1 -ge integer2 | integer1 est supérieur ou égal à integer2 | |
integer1 -gt integer2 | integer1 est supérieur à integer2 | |
integer1 -le integer2 | integer1 est inférieur ou égal à integer2 | |
integer1 -lt integer2 | integer1 est inférieur à integer2 | |
integer1 -ne integer2 | integer1 n'est pas égal à integer2 | |
prefixinteger1 -pgt prefixinteger2 | integer1 est supérieur à integer2 après suppression du préfixe non numérique commun. | |
prefixinteger1 -plt prefixinteger2 | integer1 est inférieur à integer2 après suppression du préfixe non numérique commun. | |
file1 -nt file2 | Le file1 est plus récent que le file2 (date de modification). Un biais numérique peut être ajouté directement à -nt, auquel cas il est ajouté à la date de modification du premier fichier. | |
file1 -ot file2 | Le file1 est plus ancien que le file2 (date de modification). Un biais numérique peut être ajouté directement à -ot, auquel cas il est ajouté à la date de modification du premier fichier. | |
-d file | le fichier existe et est un répertoire | |
-e file | le fichier existe | |
-f file | le fichier existe et n'est pas un répertoire | |
-s file | le fichier existe et a une taille supérieure à zéro | |
-n string | la longueur de la chaîne est différente de zéro | |
string | la chaîne de caractères est équivalente à -n chaîne de caractères. | |
-z string | la longueur de la chaîne est nulle | |
( expression ) | l'expression est vraie | |
! expression | l'expression est fausse | |
expression1 -a expression2 | expression1 et expression2 sont toutes deux vraies | |
expression1 expression2 | Les expressions 1 et 2 sont toutes deux vraies. Cette syntaxe n'est pas conforme à POSIX et n'est pas recommandée. | |
expression1 -o expression2 | soit expression1 soit expression2 est vraie |
true
Commande :
true |
Ne rien faire, avec succès. Ceci est particulièrement utile dans les constructions de contrôle telles que if et while (voir Scripts de type Shell).
trust
Commande :
trust [--skip-sig] pubkey_file |
Lisez la clef publique de pubkey_file et ajoutez-la à la liste interne des clefs publiques de confiance de GRUB. Ces clefs servent à valider les signatures numériques lorsque la variable d'environnement check_signatures est définie sur enforce. Notez que si check_signatures est définie sur enforce lors de l'exécution de trust, alors pubkey_file doit être correctement signé. L'option --skip-sig permet de désactiver la vérification des signatures lors de la lecture de pubkey_file. L'option --skip-sig est généralement utile pour les tests et le démarrage manuel.
unset
Commande :
unset envvar |
Désactivez la variable d'environnement envvar.
verify_detached
Commande :
verify_detached [--skip-sig] file signature_file [pubkey_file] |
Vérifie une signature détachée de type GPG, où le fichier signé est file et la signature elle-même se trouve dans le fichier signature_file. Il est également possible de spécifier une clé publique spécifique à utiliser via pubkey_file. Lorsque la variable d'environnement check_signatures est définie sur enforce, pubkey_file doit être correctement signé par une clé déjà approuvée. Un fichier pubkey_file non signé peut être chargé en spécifiant --skip-sig. Si pubkey_file est omis, les clés publiques des clés approuvées de GRUB (voir list_trusted, trust et distrust) sont testées.
Le code de sortie $? est défini sur 0 si la signature est validée avec succès. En cas d'échec, il est défini sur une valeur différente de zéro.
videoinfo
Commande :
videoinfo [[WxH]xD] |
Liste des modes vidéo disponibles. Si la résolution est indiquée, afficher uniquement les modes correspondants.
wrmsr
Commande :
wrmsr 0xADDR 0xVALUE |
Écrire une valeur 0xVALUE dans un registre spécifique au modèle à l'adresse 0xADDR.
Veuillez noter que sur les systèmes SMP, écrire dans un MSR dont la portée est définie par processus léger matériel implique que la valeur écrite ne s'applique qu'au processeur/coeur/thread exécutant la commande.
De plus, si vous spécifiez une adresse MSR réservée ou non implémentée, une exception de protection générale (non gérée actuellement) sera générée et le système redémarrera.
Remarque : La commande n'est pas autorisée lorsque le verrouillage est appliqué (voir Verrouillage). Ceci est fait pour éviter de contourner divers mécanismes de sécurité.
Voir également
Système d'exploitation - Linux - Références de commandes et de programmes - grub