Dernière mise à jour : Debian 10.10
L'objectif est de disposer, sur une clé USB, d'un système Grub autonome, utilisable pour dépanner un système debian sur lequel GRUB est endommagé ou absent.
La création de la clé s'effectue depuis un système debian opérationnel avec grub2 installé.
Sommaire
Installer le paquet xorriso nécessaire pour la création de l'iso
$ sudo aptitude install xorriso
$ sudo aptitude install mtools
La commande suivante crée une image de grub avec la configuration par défaut, le nom du fichier, ici grub.iso est libre
$ grub-mkrescue -o grub.iso
Pour mémoire, l'image sera amorçable sur un système possédant le même mode d'amorçage (mbr/bios ou efi) qui celui sur lequel il aura été créé
$ sudo mount grub.iso /mnt
$ ls /mnt/boot/grub/
fonts/ i386-pc/ locale/ roms/
$ sudo mount grub.iso /mnt
$ ls /mnt/boot/grub/
fonts/ x86_64-efi/ locale/ roms/
Cette image contient tous les modules grub. Toutes les commandes de grub seront donc disponibles avec la commande implicite
grub> insmod <nom_module_sans_extension>
La disposition du clavier est la disposition par défaut : qwerty
Recopier l'image sur une clé USB, dans ce qui suit on suppose qu'il s'agit de /dev/sdb
$ sudo dd if=grub.iso of=/dev/sdb; sync
Redémarrer sur la clé
La console grub s'affiche et peut-être utilisée avec les commandes usuelles
$ grub-mkrescue -o grub.iso SOURCE
qui accepte "la syntaxe de point de greffe", ce qui facilite l'addition des fichiers dans l' arborescence standard (memdisk)/boot/grub/
Créer le répertoire SOURCE avec une arborescence sur le modèle de celle créée par grub en configuration standard
$ mkdir -p SOURCE/boot/grub/{layouts,fonts}
$ cp /usr/share/images/desktop-base/desktop-grub.png SOURCE/boot/grub/splash.png
une fonte permettant d'afficher les caractères français, le nom du fichier est libre, l'extension doit-être pf21
$ sudo aptitude install ttf-unifont
$ grub-mkfont --verbose --size=16 --range=0x0-0x800,0x2000-0x207F -o SOURCE/boot/grub/fonts/fr.pf2 /usr/share/fonts/truetype/unifont/unifont.ttf
une disposition de clavier au format azerty, nom du fichier fr.kgb ( Note : cela n'ajoute la saisie des caractères français non azerty, par exemple é,ç,ù,...))
$ grub-kdbcomp -o SOURCE/boot/grub/layouts/fr.gkb fr
Ajouter enfin dans l'arborescence un fichier de configuration contenant les instructions pour la prise en compte de la langue, du clavier, de la fonte, etc...
Le nom du fichier est grub.cfg. Noter la suppression des lignes de commentaire (lignes commençant par #) dans la version finale du fichier
$ cat <<EOF> |sed '/#/d' |tee SOURCE/boot/grub/grub.cfg
# Fichier configuration grub personnalisé
# Les lignes commentaires et vides doivent être supprimées
# Mode graphique nécessaire pour afficher les caractères français
insmod all_video
set gfxmode=auto
insmod gfxterm
insmod terminal
terminal_output gfxterm
# Image de fond d'écran
insmod png
insmod gfxterm_background
background_image $prefix/splash.png
# Couleur texte
set color_normal=white/black
set color_highlight=black/white
# Fonte française
insmod font
loadfont fr
# Texte en français
insmod gettext
set locale_dir=$prefix/locale
set lang=fr
# Clavier disposition française
# On suppose que le mode at_keyboard est disponible sur le système
# Si ce n'est pas le cas, supprimer les 4 lignes suivantes
insmod keylayouts
insmod at_keyboard
terminal_input at_keyboard
keymap fr
# Diverses commandes utiles
set pager=1
insmod linux
insmod boot
insmod halt
insmod reboot
insmod luks
EOF
Générer le fichier image, grub.iso
$ grub-mkrescue -o grub.iso SOURCE
Copier l'image sur la clé supposée attachée en /dev/sdb
$ sudo dd if=grub.iso of=/dev/sdb; sync
Redémarrer sur la clé
Le fichier config.cfg est exécuté et la console s'affiche
Les messages sont en français, les caractères "français" sont affichés correctement.
Le clavier est en disposition française (azerty)