Clé autonome Grub - Amorçage UEFI

Mise à jour : Debian 10.0

L'objectif est de disposer d'une clé USB, amorçable sur une plate-forme UEFI, avec Secure Boot désactivé

Pour une clé USB amorçable sur une plate-forme Bios/MBR, voir Clé autonome Grub - Amorçage Bios/MBR

Pour une clé USB amorçable sur une plate-forme UEFI avec Secure Boot activé ou non activé, voir Clé autonome Grub - Amorçage UEFI Secure Boot

Référence : Manuel Grub2 (en anglais)

Sommaire

1 - Principe

La création de la clé comprend deux étapes :

2 - Préparation de la clé

$ lsblk -f /dev/sdb
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sdb
└─sdb1 vfat ESP 311C-4029
$ sudo mount /dev/sdb1 /mnt
$ sudo mkdir -p /mnt/EFI/BOOT

3 - Génération et installation de grub - Image standard

$ sudo grub-mkstandalone --output=/mnt/EFI/BOOT/bootx64.efi --format=x86_64-efi --modules="part_gpt part_msdos luks"

où les options de la commande permettent de préciser

--output=bootx64.efi
--format=x86_64-efi
--modules="part_gpt part_msdos luks"

4 - Génération et installation de grub - Image personnalisée

Alternativement, créer une image personnalisée par l'ajout de fichiers embarqués dans l'image grub.

4.1 - Syntaxe ajout des fichiers

"La syntaxe de point de greffe est acceptée", ce qui facilite l'addition des fichiers dans l'image dans le respect de l'arborescence (memdisk)/boot/grub/ standard.

Dans l'exemple ci-dessous, on ajoute :

Les fichiers doivent être présents dans le répertoire courant à partir duquel est lancé la commande grub_mkstandalone

$ sudo mount /dev/sdb1 /mnt
$ sudo grub-mkstandalone --output=/mnt/EFI/BOOT/bootx64.efi --format=x86_64-efi --modules="part_gpt part_msdos luks" \
"boot/grub/grub.cfg=grub.cfg" \
"boot/grub/splash.png=splash.png" \
"boot/grub/layouts/fr.gkb=fr.gkb"

Dans l'exemple ci-dessous, la personnalisation consiste à passer la console grub en mode graphique, afficher un papier peint et les textes en français, passer le clavier en disposition azerty

4.2 - Fichier grub.cfg

Le fichier grub.cfg contient les commandes qui seront exécutées à la fin du lancement de grub. Pour une description détaillée des commandes grub, voir Console Grub - Utilisation

# Clavier en dispositition française
# Fonctionne sur qemu -
# Ne fonctionne pas sur PC NUC (clavier USB non reconnu?), ne pas utiliser!
insmod keylayouts
insmod at_keyboard
terminal_input at_keyboard
keymap fr

# Mode graphique
insmod all_video
set gfxmode=auto
insmod gfxterm
insmod terminal
terminal_output gfxterm
# Papier peint
insmod png
insmod gfxterm_background
background_image $prefix/splash.png

# Couleurs de texte
set color_normal=white/black
set color_highlight=black/white
# Textes en français (Note : La police unicode est chargée pour prendre en compte
# l'affichage des caractères français sépcifiques (é,è,ç, ...)
insmod font
loadfont unicode
insmod gettext
set locale_dir=/boot/grub/locale
set lang=fr_FR
# Divers options utiles
set pager=1
insmod linux
insmod boot
insmod halt
insmod reboot

4.3 - Fichier fr.gkb

$ grub-kbdcomp -o fr.gkb fr

Le nom du fichier est arbitraire, mais l'extension gkb est obligatoire

4.4 - Fichier splash.png

$ cp /usr/share/images/desktop-base/desktop-grub.png splash.png

5 - Utilisation

$ sudo tree /mnt
/mnt
└── EFI
└── BOOT
└── bootx64.efi

2 directories, 1 file
$ sudo umount /mnt
qemu shell grub

grub personnalisé