Mise à jour : Debian 10 Buster/sid
Différents cas d'emploi de la console grub2 sont décrits ici :
Accès aux partitions chiffrées et aux volumes logiques
Affichage du menu Grub
Boot d'un noyau linux Debian
Modification de l'affichage et de la saisie
Références :
Grub et chiffrement : grub-and-luks
Sommaire
Dans ce qui suit on suppose
soit que les commandes indiquées sont disponibles (parce qu'elles ont été automatiquement chargées par grub pendant le démarrage)
soit qu'il est possible de les charger au moyen de la commande insmod, ce qui suppose que le paramètre prefix ait été correctement défini. Pour le vérifier, passer la commande
grub rescue> ls ($prefix)/i386-pc
Si la commande précédente n'affiche pas la liste des modules grub, rechercher dans le système, l'emplacement du répertoire i386-pc, en explorant avec ls les différents périphériques hd0,hd1,... et les différents partitions msdos1,msdo2,...
Puis redéfinir le paramètre prefix, par exemple
grub rescue> set prefix=(hd0,msdos1)/boot/grub
En cas de partitions chiffrées et de volumes logiques, il sera nécessaire au préalable de s'assurer de leur accessibilité : voir ci-dessous
S"il est absent, charger le module luks et tester la présence de la commande cryptomount
grub> insmod luks
grub> cryptomount
Lister les partitions
grub> ls (hd0) (hd0,msdos02) (hd0,msdos01)
- soit en les sélectionnant toutes (option -a)
grub> cryptomount -a
Tentative de déchiffrement de la clef principale...
Entrez le mot de passe pour hd0,msdos02 (74xxxxxxxxx....xxxxxxx) :
soit en désignant la partition chiffrée par son identifiant de périphérique, par exemple(hd0,msdos02)
grub> cryptomount hd0,msdos2
Tentative de déchiffrement de la clef principale...
Entrez le mot de passe pour hd0,msdos02 (74xxxxxxxxx....xxxxxxx) :
Emplacement de clef 0 ouvert
soit en désignant la partition chiffrée par son UUID (option -u)
La partition chiffrée apparaît sous le nom cryptox
grub> ls
(hd0) (hd0,msdos02) (hd0,msdos01) (crypto0) (proc) (fd0)
Définir en conséquences, les paramètres root et prefix pour accéder à cette partition avec la notation implicite:
grub> set root=(crypto0)
grub >set prefix=(crypto0)/grub # ou set prefix=(crypto0)/boot/grub selon le cas
Pour accéder aux volumes logiques, charger le module lvm, s'il est absent
grub> insmod lvm
Les volumes logiques (ici à l'intérieur du volume chiffré crypto0) apparaissent :
grub> ls
(crypto0) (proc) (hd0) (hd0,msdos2) (hd0,msdos1) (fd0) (lvm/vg-boot) (lvm/vg-home) (lvm/vg-swap) (lvm/vg-root)
Définir en conséquences les paramètres root et prefix pour accéder à ce volume avec la notation implicite :
grub> set root=(lvm/vg-boot)
grub> set prefix=(lvm/vg-boot)/grub
Si la console grub a été ouverte à partir du menu grub (par la commande c), pour revenir au menu grub, lancer la commande "normal" :
grub> normal
Si la console grub rescue ou grub s'est ouverte spontanément au démarrage du système au lieu du menu grub, il est probable que la commande "normal" n'est pas disponible ou / et que le fichier $prefix/config.cfg n'est pas accessible
Charger le module normal, s'il n'est pas déjà chargé, redéfinir éventuellement le chemin d'accès au module
grub rescue> insmod normal
Lancer la commande de chargement du menu grub, avec l'emplacement du fichier de configuration par défaut
grub rescue> normal
Si le menu grub ne s'affiche pas, rechercher un fichier de configuration de type grub.cfg, en explorant avec ls, les périphériques et les partitions.
Relancer la commande "normal" avec le chemin du fichier de configuration trouvé précédemment, par exemple
grub> normal (hdx,msdosy)/boot/grub/config.cfg.BU
grub> configfile (hdx,msdosy)/boot/grub/config.cfg
Si le fichier comprend des entrées de menu, un menu contenant ces entrées est affiché
Dans le cas de la partition 1 du disque 0, utiliser la commande :
grub> set root=(hd0,msdos1)
Dans le cas d'un dossier grub dans la partition 1 du disque 0, dans le dossier boot, utiliser la commande :
grub> set prefix=(hd0,1)/boot/grub
3 - Charger le noyau
grub> insmod linux
S'il existe un lien vmlinuz à la racine de la partition, l'utiliser, sinon remplacer dans la commande ci-dessous, /vmlinux, par le chemin complet du fichier, par exemple /boot/vmlinuz-3.16.0-4-amd64
grub> linux /vmlinuz root=.......
grub> linux /vmlinuz root=/dev/sda1
grub> linux /vmlinuz root=UUID=2f4f92d0-ca7b-40c1-82e3-237b2cb043ef
grub> linux /vmlinuz root=LABEL=jessie
Si la partition est chiffrée, indiquer le chemin non pas du container luks, mais de son contenant (partition ext4 généralement), par exemple
grub> linux /vmlinuz root=/dev/mapper/buster
grub> linux /vmlinuz root=UUID=986a0c0d-23f9-4073-9b0c-a98dd5aeb260
grub> grub> linux /vmlinuz root=LABEL=buster
grub> initrd /initrd.img
De même, remplacer initrd.img par le chemin complet si le lien n'existe pas
grub> insmod boot
grub> boot
Après la commande boot, la console grub se ferme et laisse la place au démarrage de linux.
grub> insmod terminal
grub> terminal_output
Active output terminals:
console
Available ouput terminals:
gfxterm
Dans le cas présent, le mode courant est affichage texte (console). Le mode graphique est disponible (gfxterm).
Pour forcer le mode texte :
grub> terminal_output console
Installer les modules video
grub> insmod all_video
Afficher les résolutions disponibles
grub> insmod videoinfo
gurb> videoinfo
Pour installer le mode graphique avec la sélection automatique de la résolution :
grub> set gfxmode=auto
grub> insmod gfxterm
grub> insmod terminal
grub> terminal_output gfxterm
Pour installer le mode graphique avec une résolution donnée, disponible dans la liste fournie par videoinfo , par exemple 640x480x24, remplacer dans la ligne set gfxmode, la valeur auto par la résolution souhaitée :
grub> set gfxmode=640x480x24
Le papier peint par défaut de grub, tel qu'il est défini par le paquet desktop-base est défini par un lien situé en
/usr/share/images/desktop-base/desktop-grub.png
Dans ce qui suit, on suppose que ce papier peint est recopié dans le répertoire $prefix sous le nom de splash.png
$ sudo cp /usr/share/images/desktop-base/desktop-grub.png /boot/grub/splash.png
Vérifier la présence et le nom du fichier :
grub> ls $prefix
./ ../ i386-pc/ locale/ fonts/ unicode.pf2 grubenv layouts/ grub.cfg splash.png
grub> insmod png
grub> insmod gfxterm_background
grub> background_image $prefix/splash.png
Note grub assurera la mise à l'échelle du papier peint par rapport à l'écran disponible
Pour ne plus afficher le papier peint :
grub> background_image
Pour définir les couples de couleurs pour le texte sélectionné (highlight) et pour le texte non sélectionné (normal), la première couleur définissant la couleur du texte, la seconde couleur définissant la couleur de fond
set color_normal=white/black
set color_highlight=black/white
Les couleurs disponibles sont :
black
blue
brown
cyan
dark-gray
green
light-cyan
light-blue
light-green
light-gray
light-magenta
light-red
magenta
red
white
yellow
La couleur de fond "black" est utilisée pour définir un fond transparent.
Par défaut, grub utilise une font unicode taille 12, pour utiliser une autre fonte
grub> insmod font
grub> loadfont ma_fonte
Cette dernière commande est équivalente à
grub> loadfont $prefix/fonts/ma_fonte.pf2
Pour mémoire : voir Personnalisation Console Grub - Amorçage Bios/MBR
$ sudo aptitude install unifont
$ sudo grub-mkfont --verbose --size=16 --output=/boot/grub/fonts/ma_fonte.pf2 /usr/share/fonts/truetype/unifont/unifont.ttf
Création d'une fonte de taille limitée suffisante pour l'affichage des messages et menus grub (le caractère 0x2026 est nécessaire (points de suspension), ajouter l'option
--range=0x0-0x800,0x2000-0x207F
Création d'une fonte unicode comportant les caractères français
$ sudo aptitude install ttf-unifont
$ sudo grub-mkfont --verbose --size=16 --range=0x0-0x800,0x2000-0x207F --output=/boot/grub/fonts/fr.pf2 /usr/share/fonts/truetype/unifont/unifont.ttf
grub> help videotest
Utilisation: videotest [LARGxHAUT]
Tester le sous-systme vido en mode LARGHAUT.
Les fichiers de traduction sont, par défaut, dans le répertoire $prefix/locale ou $prefix désigne le chemin complet du répertoire grub. Pour utiliser le français :
grub> insmod gettext
grub> set lang=fr
Cette dernière commande est équivalente à
grub> set lang=$prefix/locale/fr.mo
Vérification, par exemple en affichant la date
grub> date
2019-03-05 14:46:13 mardi
la position des lettres est identique, sauf :
a et q d'une part et z et w d'autre part sont inversées
le m est à l'emplacement de la virgule
la position des chiffres est inchangée mais il ne faut pas activer la bascule majuscule pour les obtenir
l'obtention des caractères spéciaux est indiquée dans le tableau suivant :
Pour obtenir le caractère Taper les touches ascci
$ shift et 4
( shift et 9 ) shift et 0
- ) _ shift et ) / ! , ; . :
< shift et ;
> shift et :
grub> insmod terminal
grub> terminal_input
Terminaux actifs en entrée:
console
Terminaux disponibles en entrée :
serial_* serial at_keyboard
Par défaut, le mode courant est le clavier console qwerty. Le clavier at_keyboard (clavier configurable type AT) est disponible
Note : sous debian, la commande de création du fichier fr.gkb est :
# grub-kbdcomp -o /boot/grub/layouts/fr.gkb fr
Noter que dans tous les cas, seuls les caractères ASCII sont pris en compte, les caractères accentués français, le ç par exemple ne seront pas pris en compte au clavier.
Pour obtenir la disposition de clavier azerty avec un clavier interface at (cas d'un clavier interne de laptop)
grub> insmod keylayouts
grub> insmod at_keyboard
grub> terminal_input at_keyboard
grub> keymap fr
Cette dernière commande est équivalente à
grub> keymap $prefix/layouts/fr.gkb