Je n’ai pas écrit que c’était simple, seulement que ce n’est pas très compliqué.
On peut aussi utiliser la commande grub-probe fournie par GRUB, dont la sortie est au format attendu par GRUB :
# grub-probe -d -t fs_uuid /dev/sda3
Et au cas où le système de fichiers n’est pas dans une partition mais un volume logique LVM ou un ensemble RAID, on peut utiliser une variante de cette commande qui affiche le nom de périphérique GRUB :
# grub-probe -d -t drive /dev/mapper/VG_name-LV_name
(lvmid/mDfh0M-5reQ-KjbV-G4Xp-kqqm-oZTb-loInBz/ExmVBR-8D6d-x5Fo-ti1i-B8s3-dwjW-1bwbpo)
On peut alors remplacer la commande « search » dans l’entrée de menu par :
set root=lvmid/mDfh0M-5reQ-KjbV-G4Xp-kqqm-oZTb-loInBz/ExmVBR-8D6d-x5Fo-ti1i-B8s3-dwjW-1bwbpo
ou bien directement sans passer par grub-probe :
set root=lvm/VG_name-LV_name
(les parenthèses sont facultatives dans la variable $root)
La première forme basée sur les UUID LVM internes est plus robuste, la seconde basée sur les noms de VG et LV est plus lisible. C’est un peu comme les UUID et les LABEL.
Oui, et aussi que GRUB soit installé pour l’amorçage UEFI sinon ce n’est pas compatible.
Note : pas besoin de mettre (${root}) devant le chemin, c’est implicite.
Sourcé comment ?
Si tu crées un nouveau fichier contenant une entrée de menu, il faut qu’il commence par les 2 premières lignes du fichier 40_custom :
#!/bin/sh
exec tail -n +3 $0
Edit : et il doit être exécutable (chmod +x) puisque c’est un script shell. Ainsi il est exécuté automatiquement par grub-mkconfig (lui-même appelé par update-grub), pas besoin de le sourcer.
Je n’irais pas jusque là, mais c’est une bonne introduction. Pour ajouter un OS Linux j’ai utilisé la commande configfile pour charger son fichier grub.cfg, mais ça ne fonctionne que si ce fichier existe et est compatible avec le GRUB principal. Si la partition /boot est séparée, il faut spécifier cette partition et non la racine, et le chemin est /grub/ au lieu de /boot/grub/. Certaines distributions nomment le répertoire « grub2 » au lieu de « grub ».
En l’absence de fichier grub.cfg compatible, il y a d’autres méthodes possibles comme chaîner le chargeur d’amorçage (secteur d’amorce BIOS ou exécutable EFI) avec chainloader ou amorcer la core image BIOS de GRUB (/boot/grub/i386-pc/core.img) avec multiboot.
Pour motiver les troupes, voici quelques avantages par rapport à os-prober :
- ce n’est à faire qu’une fois par OS à inclure dans le menu
- ça fonctionne dans certains cas où os-prober ne fonctionne pas correctement
- on peut donner le nom souhaité à l’entrée de menu (utile avec Windows 11 qui n’est pas correctement identifié - ceci dit le patch est trivial, ou si on a plusieurs instances d’une même distribution)
- l’exécution de
update-grub est plus rapide
- pas besoin d’exécuter
update-grub sur l’OS principal après avoir ajouté ou supprimé un noyau ou modifié les paramètres du noyau dans un OS secondaire