Grub2 - Configuration - Affichage et saisie

Mise à jour : Debian 10.8

Le terme "entrée de menu " ou "entrée" désigne le système d'exploitation à lancer.

Attention : Avant toute modification des fichiers de configuration de Grub, il est recommandé de savoir redémarrer un système sur lequel Grub n'est plus fonctionnel

Sommaire

1 - Principe

  • 00_header : sélection du mode d'affichage et de la fonte

  • 05_theme : couleur du texte

  • 10_linux : génération des entrées correspondant au linux utilisé sur la partition courante

  • 30_os-prober : recherche des systèmes d'exploitation sur le système et génération des entrées correspondantes

  • 40_custom : modèle de fichier utilisé pour inclure des lignes dans le fichier de configuration final "grub.cfg"

2 - Mode d'affichage

2.1 - Affichage en mode texte

$ sudo nano /etc/default/grub
.....
GRUB_TERMINAL=console

2.2 - Affichage en mode graphique

set pager=1
vbeinfo
.....
* 0x142 640 x 480 x 32 (2560) Couleur directe, masque : 8/8/8/8
.....

une étoile indique la ligne correspondant à la résolution courante. Dans le cas présent (virtualbox), la résolution en cours est de 640 x 480 x 32, sélectionner une nouvelle valeur parmi les autres résolutions affichées, par exemple :1280x1024x24.
GRUB_GFXMODE=1280x1024x24
$ sudo update-grub
$ cat /boot/grub/grub.cfg |grep "set gfxmode"
set gfxmode=1280x1024x24

3 - Image de fond

/usr/share/images/desktop-base/desktop-grub.png
$ sudo mv mon_image.png /boot/grub/splash.png 
$ sudo update-grub
$ cat /boot/grub/grub.cfg |grep background_image
if background_image /boot/grub/splash.png; then

4 - Fonte

$ sudo grub-mkfont --output=/boot/grub/ma_fonte.pf2 --size=12 /usr/share/fonts/truetype/droid/DroidSerif-BoldItalic.ttf 
fonctionnalité gsub 0x63636d70 inconnue (ccmp)
fonctionnalité gsub 0x63636d70 inconnue (ccmp)
fonctionnalité gsub 0x63636d70 inconnue (ccmp)
$ sudo nano /etc/default/grub

et y ajouter la ligne suivante

GRUB_FONT=/boot/grub/fonts/ma_fonte.pf2

où /boot/grub/fonts/ma_fonte.pf2 est l'emplacement de la fonte créée précédemment.

$ sudo aptitude update
$ cat /boot/grub/grub.cfg |grep loadfont
if loadfont /boot/grub/fonts/ma_fonte.pf2 ; then

et redémarrer la machine pour visualiser le résultat.

5 - Couleurs du texte

5.1 - Principe

Les couleurs sont redéfinissables, avec les commandes :

set color_normal=couleur/couleur_fond 
set menu_color_normal=couleur/couleur_fond
set menu_color_highlight=couleur/couleur_fond

dans lesquelles couleur désigne la couleur du texte et couleur_fond désigne la couleur du fond. Par convention, la couleur de fond "black" indique l'absence de couleur (transparence).

La liste des couleurs supportées par grub est :

black
blue
brown
cyan
dark-gray
green
light-cyan
light-blue
light-green
light-gray
light-magenta
light-red
magenta
red
white
yellow

5.2 Test

Pour tester les différentes combinaisons, rebooter, lors de l'affichage du menu, ouvrir une console grub en tapant c et utiliser les commandes précédentes. Par exemple :

grub >set menu_color_normal=blue/black
grub >set menu_color_highlight=black/white

5.3 Intégration dans le fichier grub.cfg

Les commandes de définition de couleur doivent être intégrées dans le fichier de configuration grub.cfg. Deux possibilités :

Créer un fichier 05_debian_theme_custom à partir du fichier exemple 40_custom et y intégrer les lignes de commandes, l'objectif étant d'obtenir un fichier du type :

$ cat /etc/grub.d/05_debian_theme_custom
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.

# Couleur du texte de la console
set color_normal=black/black

# Couleurs du texte des entrées
set menu_color_normal=blue/black
set menu_color_highlight=black/white

Vérifier l'intégration dans grub.cfg

$ cat /boot/grub/grub.cfg |grep menu_color
  set menu_color_normal=cyan/blue
  set menu_color_highlight=white/blue
set color_normal=black/black
set menu_color_normal=blue/black set menu_color_highlight=black/white

Les deux premières lignes correspondent à la définition du thème par défaut. Les lignes suivantes correspondent aux couleurs souhaitées et prendront le pas sur les précédentes.

6 - Disposition du clavier

Par défaut, la disposition du clavier, dans la console grub, est qwerty. La méthode décrite ci-dessous permet de modifier la disposition du clavier pendant la phase 2 de grub.

$ sudo mkdir /boot/grub/layouts
$ sudo grub-kbdcomp -o /boot/grub/layouts/FR.gkb fr
$ sudo echo "GRUB_TERMINAL_INPUT=at_keyboard" >>/etc/default/grub
$ cat <<EOF>>/etc/grub.d/40_custom
insmod keylayouts
keymap FR
EOF
$ sudo update-grub

Le clavier de la console grub sera directement en français.

Limitations : La modification de la disposition du clavier n'interviendra que si le répertoire grub est accessible, ce qui n'est pas le cas pendant la phase 1 de grub, par exemple, lors de la demande du mot de passe lorsque la partition de boot est chiffrée. Dans ce cas, il faudra embarquer les modifications ci-dessus dans l'image grub : voir Grub2 - Personnalisation Phase 1

Annexe - Liste de paramètres reconnus dans /etc/default/grub

$ grep "export GRUB"  -B2 -A40 /usr/sbin/grub-mkconfig
# These are defined in this script, export them here so that user can
# override them.
export GRUB_DEVICE \
GRUB_DEVICE_UUID \
GRUB_DEVICE_BOOT \
GRUB_DEVICE_BOOT_UUID \
GRUB_FS \
GRUB_FONT \
GRUB_PRELOAD_MODULES \
GRUB_ACTUAL_DEFAULT

# These are optional, user-defined variables.
export GRUB_DEFAULT \
GRUB_HIDDEN_TIMEOUT \
GRUB_HIDDEN_TIMEOUT_QUIET \
GRUB_TIMEOUT \
GRUB_TIMEOUT_STYLE \
GRUB_DEFAULT_BUTTON \
GRUB_HIDDEN_TIMEOUT_BUTTON \
GRUB_TIMEOUT_BUTTON \
GRUB_TIMEOUT_STYLE_BUTTON \
GRUB_BUTTON_CMOS_ADDRESS \
GRUB_BUTTON_CMOS_CLEAN \
GRUB_DISTRIBUTOR \
GRUB_CMDLINE_LINUX \
GRUB_CMDLINE_LINUX_DEFAULT \
GRUB_CMDLINE_XEN \
GRUB_CMDLINE_XEN_DEFAULT \
GRUB_CMDLINE_LINUX_XEN_REPLACE \
GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT \
GRUB_CMDLINE_NETBSD \
GRUB_CMDLINE_NETBSD_DEFAULT \
GRUB_CMDLINE_GNUMACH \
GRUB_TERMINAL_INPUT \
GRUB_TERMINAL_OUTPUT \
GRUB_SERIAL_COMMAND \
GRUB_DISABLE_LINUX_UUID \
GRUB_DISABLE_RECOVERY \
GRUB_VIDEO_BACKEND \
GRUB_GFXMODE \
GRUB_BACKGROUND \
GRUB_THEME \
GRUB_GFXPAYLOAD_LINUX \
GRUB_DISABLE_OS_PROBER \
GRUB_INIT_TUNE \
GRUB_SAVEDEFAULT \
GRUB_ENABLE_CRYPTODISK \
GRUB_BADRAM \
GRUB_OS_PROBER_SKIP_LIST \
GRUB_DISABLE_SUBMENU \
GRUB_RECORDFAIL_TIMEOUT \
GRUB_RECOVERY_TITLE