01 Jan 0001, 00:00

Share

https://www.gnu.org/software/grub/manual/grub/ https://askubuntu.com/questions/751259/how-to-change-grub-command-line-grub-shell-keyboard-layout

Périphériques

Représente un support physique de stockage ainsi qu’une séparation logique (typiquement disque et partition). Doivent être notés entre parenthèses.
Sont de type (hd0,gpt1) la plupart du temps.
https://www.gnu.org/software/grub/manual/grub/html_node/Device-syntax.html#Device-syntax

Chemins

Comprend nécessairement un périphérique puis un chemin absolu.
Par exemple (hd0,1)/boot/grub/grub.cfg
Si on ne spécifie pas le périphérique, alors c’est ($root).

https://www.gnu.org/software/grub/manual/grub/html_node/File-name-syntax.html#File-name-syntax

Variables

set : voir toutes les variables affectées

$root : le périphérique par défaut pour les chemins ; doit être mis entre parenthèses pour être utilisé explicitement. On peut le définir à la volée en demandant une recherche d’UUID.
https://www.gnu.org/software/grub/manual/grub/html_node/root.html#root

$prefix : l’emplacement de “/boot/grub” ; devrait être ($root)/boot/grub https://www.gnu.org/software/grub/manual/grub/html_node/prefix.html#prefix

$cmdpath : l’emplacement contenant l’executable EFI de grub (peut ne contenir que le disque dans certains cas) https://www.gnu.org/software/grub/manual/grub/html_node/cmdpath.html#cmdpath

On peut créer des variables perso avec la syntaxe var=valeur.

Pour qu’une variable soit conservée lors d’un appel de “configfile” ou quand on rentre dans un sous-menu, il faut l’exporter : export var.a

Commandes

Clavier

https://askubuntu.com/questions/751259/how-to-change-grub-command-line-grub-shell-keyboard-layout insmod keylayouts keymap /boot/grub/bepo.gkb

ls : explore les chemins absolus (doivent commencer par le périphérique, ou alors sur root)
ls -l : + de détails dont UUID pour les périphériques

source : insère le contenu d’un fichier de configuration

configfile : lance un fichier de configuration

Réinstaller GRUB depuis une Debian live

Je pars du principe que tout le système, les partitions, les flags et les UUID (dans le fstab) sont bien en place ; notamment la partition ESP en cas de boot EFI.

Il faut monter la partition / sur un point de montage dans le live ; par exemple /mnt/ .
ATTENTION, si la partition est en btrfs, il est indispensable de monter le subvolume contenant la partition slash (typiquement @ ou @rootfs ) ; monter le toplevel volume et faire les manips sur mnt/@rootfs ne fonctionnera pas ! (erreurs de /dev introuvable notamment)
S’il y a du LUKS impliqué, s’assurer que les conteneurs sont déverrouillés et mappés dans le live, sous le même nom qu’il ne le sont dans le système baremetal.

Ensuite, il faut faire :

cd /mnt/
sudo mount --rbind --make-rslave /dev/ ./dev
sudo mount --rbind --make-rslave /proc/ ./proc
sudo mount --rbind --make-rslave /sys/ ./sys
sudo mount --rbind --make-rslave /run/ ./run
chroot ./

Ensuite, on s’assure que toutes les partitions soient bien montées dans le live :
mount -a

Puis on réinstalle GRUB et on recompile l’initramfs :

grub-install
update-grub
update-initramfs -k all -u
exit

Pour démonter tous les dossiers bindés précédemment :
sudo umount -R ./dev ./proc ./sys ./run