Console Grub - Principe

Mise à jour : Debian 10.6 Buster

Ce document décrit l'interface opérateur en ligne de commande de grub

Références :

Sommaire

1 - Interface opérateur

1.1 - Modes d'affichage

Grub dispose de trois modes d'affichage

grub_menu

grub_menu

grub_rescue_prompt

1.2 - Mode d'affichage au démarrage

Le mode d'affichage obtenu au démarrage est conditionné par la disponibilité

Lorsque grub est lancé (amorçage du système)

1.3 - Accès au Mode Normal

grub rescue> insmod normal
grub rescue> normal

2 - Variables d'environnement

grub> set
grub> echo $root
hd0,msdos1
grub> set pager=1      
grub> pager=1         

3 - Unités de stockage et partitions

3.1 - Syntaxe

Grub utilise sa propre méthode pour nommer et numéroter les unités de stockage (disque dur ou clé usb). Cette numérotation dépend de l'ordre de découverte des unités de stockage pendant la mise sous tension et peut donc être modifiée par l'addition ou le retrait d'une unité de stockage (clé usb).

Dans les exemples ci-dessous, il faudra donc remplacer (hdx,msdosy) par (hdx,gpty) dans le cas d'un partitionnement gpt

3.2 - Liste

Utiliser la commande ls et la touche Entrée pour lister les unités de stockage et leurs partitions :

grub> ls (Utiliser la touche Entrée pour faire afficher la lige suivante)
(hd0) (hd0,msdos05) (hd0,msdos01)

Dans cet exemple, un disque hd0 avec deux partitions ont été trouvées.

3.3 - Informations détaillées

Pour connaître les numéros de partition, étiquettes, système de fichiers, date de modifications, identifiant UUID, ...

grub> ls (hd (utiliser la touche TABULATION pour faire afficher la liste des unités de stockage et partitions)
.......
grub> ls (hd0)
Périphérique hd0 : Aucun système de fichiers connu détecté - Taille de secteur 512 o - Taille totale 8388608 Kio.
grub> ls (hd0,msdos1) Partition hd0,msdos1 : Type de système de fichiers ext* - Dernière date de modification jeudi 29/10/2015 19:16:43, UUID 13b613fd-89f8-4b22-a530-2f352fdbd54b - La partition commence à 1024 Kio - Taille totale XXXXXXXX Kio

4 - Répertoires & Fichiers

4.1 - Syntaxe

Les répertoires et fichiers sont désignés par leur chemin par rapport à l'unité de stockage et la partition.

(hdx,msdosy)/chemin/vers/le/fichier
grub> set root=hdx,msdosy
grub> ls /<chemin/vers/le/fichier
grub> ls ($root)/<chemin/vers/le/fichier
grub> ls (hdx,msdosy)/<chemin/vers/le/fichier

4.2 - Navigation dans l'arborescence

grub> ls
grub> ls / (utiliser Tab pour obtenir la ligne suivante)
lost+found/ etc/ media/ vmlinuz var/ usr/ lib/ boot/ (......) initrd.img

Dans cet exemple vmlinuz et initrd.img ont été trouvés à la racine de la partition (hd0, msdos1). Ce sont des liens vers les fichiers vmlinuz et initrd.gz, ce qui est le cas par défaut dans les installations Debian

grub> cd boot
grub> cat /etc/issue
Debian GNU/Linux 8 \n \l

5 - Recherche de partitions

5.1 - A partir d'une étiquette ou d'une uuid

grub> search --label jessie
(hd0,msdos1)
grub> search --label --set=root jessie
grub> echo $root
hd0,msdos1
grub> search --fs-uuid --set=root xxxxx-xxxx-xxxx-xxxx-xxxxxx
grub> echo $root
hd0,msdos1

5.2 - Contenant un fichier de nom donné

grub> search --file /vmlinuz
(hd0,msdos1)
grub> search --file --set=root /vmlinuz
grub> echo $root
hd0,msdos1

6 - Commandes

6.1 - Aide à la saisie et à l'affichage

grub> set pager=1

6.2 - Liste des commandes et aide

grub> help
grub> (Touche tabulation)
grub> help (Nom de la commande)

6.3 - Disponibilité des commandes

$ cat /boot/grub/x86_64-efi/command.lst |grep lsmod
lsmod: minicmd

6.4 - Commandes diverses

grub> normal ($root)/grub.cfg
grub> normal_exit
grub> insmod halt
grub> halt
grub> insmod reboot
grub> reboot
grub> fwsetup

7 - Modules

grub> lsmod
grub> insmod $prefix/i386-pc/hello.mod
grub> insmod $prefix/x86_64/hello.mod
grub> insmod hello
grub> rmmod date

Note : si un module est chargé plusieurs fois (ce qui est indiqué dans la colonne Nombre ci-dessus), il faudra le décharger plusieurs fois pour qu'il ne soit plus disponible

8 - Précautions

8.1 - Erreurs sur les noms de variables et leur valeur

Attention : Aucun contrôle n'est effectué sur les noms de variable et leur valeur. Dans l'exemple ci-dessous, on veut donner à la valeur root, la valeur hd0,msdos1, mais ....

grub> set ro0t=hd0,msdos1   # ici, on crée une nouveau paramètre : ro0t
grub> set root=hdO,msdos1 # là, on donne une mauvaise valeur : hdO,msdos1
grub> set root=hd0,msdos1 # Ouf! La variabe root est créée avec la bonne valeur : hd0,msdos1

8.2 - Confusion entre les variables, les commandes et les modules

Rien ne distingue dans leurs noms, les variables, les commandes et des modules : keymap est une commande, lang est une variable, videoinfo est le nom du module qui fournir la commande homonyme. Il est donc assez facile de faire une erreur en prenant l'un pour l'autre.

grub> keymap /boot/grub/layouts/fr.gkb

on tape :

grub> set keymap=/boot/grub/layouts/fr.gkb

le système ne détectera pas d'erreur et créera la variable keymap, ce qui n'était pas l'effet souhaité.

grub> set lang=FR

on tape :

grub> lang FR
erreur : impossible de trouver la commmande " lang ".

le système affiche un message d'erreur.

8.3 - Préfixes

Noter que la variable root est défini sans parenthèses, alors que le paramètre prefix est défini avec des parenthèses

grub> echo $root
hd0,msdos1
grub> echo $prefix
(hd0,msdos1)/boot/grub/

Ainsi

ls $root génère une erreur et doit-être écrit ls ($root)
ls $prefix est correct