Clé autonome Grub - Amorçage UEFI compatible Secure Boot

Dernière mise à jour : Debian 10.3 / Buster

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 - Installation de grub

 $ sudo grub-install --efi-directory=/mnt --boot-directory=/mnt/EFI --removable --uefi-secure-boot \
--modules="keylayouts at_keyboard"

avec les options

$ sudo tree /mnt
/mnt
└── EFI
├── BOOT
│ ├── BOOTX64.CSV
│ ├── BOOTX64.EFI
│ ├── fbx64.efi
│ ├── grub.cfg
│ ├── grubx64.efi
│ └── mmx64.efi
└── grub
├── fonts
│ └── unicode.pf2
├── grubenv
.....
6 directories, 283 files
$ sudo grub-install --efi-directory=/mnt --boot-directory=/mnt/EFI --removable --uefi-secure-boot \
--verbose 2> >(grep BOOTX64.EFI)
grub-install : information : copying `/usr/lib/shim/shimx64.efi.signed' -> `/mnt/EFI/BOOT/BOOTX64.EFI'.
$ echo "bootx64.efi,grub,,Ceci est l'entrée d'amorçage automatique" |iconv -t UCS-2 | sudo tee /mnt/EFI/BOOT/BOOTX64.CSV

4 - Personnalisation

4.1 - Principe

$ cat /mnt/EFI/BOOT/grub.cfg 
search.fs_uuid 5AFE-E461 root hd1,gpt1
set prefix=($root)'/EFI/grub'
configfile $prefix/grub.cfg

4.2 - Fichier grub.cfg

Voir Clé autonome Grub - Amorçage UEFI pour plus de détails

$ cat <<EOF |sed '/^#/d' |sudo tee /mnt/EFI/grub/grub.cfg

# Clavier en dispositition française
# Fonctionne sur qemu en version non secure boot
# 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 /EFI/grub/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=/EFI/grub/locale
set lang=fr_FR
# Divers options utiles
set pager=1
insmod linux
insmod boot
insmod halt
insmod reboot

EOF

4.3 - Fichier fr.gkb

$ sudo mkdir -p /mnt/EFI/grub/layouts
$ sudo grub-kbdcomp -o /mnt/EFI/grub/layouts/fr.gkb fr

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

4.4 - Fichier splash.png

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

5 - Utilisation

$ sudo umount /mnt