Mais pourquoi ?

Tout simplement parce que Slitaz ne fait pas partie de la liste des distributions répertoriées, qui se trouve dans :

$ cat /usr/lib/os-probes/mounted/90linux-distro

qu'il fallait quand même trouver !

Réparer l'oubli

À partir de là il est simple de s'inspirer des distribs présentes et d'insérer quelque part :

~
~ 	elif [ -e "$dir/etc/slitaz-release" ]; then
~		short="Slitaz"
~		long="$(printf "Slitaz GNU/Linux (%s)\n" "$(cat "$dir/etc/slitaz-release")")"

après quoi

# grub2-mkconfig -o /boot/grub2/grub.cfg

remettra le nom de la distribution avec le n° de version en prime.

C'est bien beau, mais qu'adviendra-t'il après la prochaine mise à jour de Grub2 ?

Le détecteur d'OS de grub2 (os-prober) a l'avantage de fournir une syntaxe soignée. Le plus simple est d'envisager une entrée personnamlisée (/etc/grub.d/40_custom) et de signaler à os-prober de ne pas tenir compte de la partition où se trouve Slitaz.

Ajouter l'icône.

Il faut d'abord la créer, en s'inspirant par exemple du format de l'icône d'opensuse (/boot/grub2/themes/openSUSE/icons/opensuse.png).
Comme je m'y suis collé, la voici slitaz icon.
La placer dans le même répertoire : /boot/grub2/themes/openSUSE/icons. Ce n'est encore pas suffisant, il faut ajouter l'option --class slitaz à la commande menuentry dans /boot/grub2/grub.cfg, comme ceci :

~ menuentry 'Slitaz GNU/Linux (4.0)' --class gnu-linux --class gnu --class slitaz --.......

Provisoirement, jusqu'à la prochaine mise à jour de grub2. Mais ça marche.

Consolidation

J'aurais aimé stabiliser cette entrée slitaz à la main et laisser le programme os-prober s'occuper du reste, mais malheureusement, ce dernier ne peut qu'être activé/désactivé.
Cette discussion n'est pas très encourageante.


L'idée, dans l'attente d'une évolution de grub2 vers davantage de paramétrage, est donc de ne l'activer qu'à chaque changement (ajout/suppression d'un OS, évolution d'un noyau, etc...) et de recopier ses résultats (grub.cfg) dans le fichier /etc/grub.d/40_custom, comme expliqué sur ce billet.

Désactivation de os-prober

Ajouter cette ligne dans le fichier /etc/default/grub, en root :

GRUB_DISABLE_OS_PROBER="true"

Et recopier le contenu de la section 30_os-prober à la fin du fichier /etc/grub.d/40_custom

C'est pas folichon mais ça fonctionne.

Petit script pour rétablissement de l'icône :

J'ai copié l'icône slitaz.png dans le répertoire .local/share/grub2/themes/openSUSE/icons.

$ mkdir -p .local/share/grub2/themes/openSUSE/icons
$ cp slitaz.png .local/share/grub2/themes/openSUSE/icons

Script permettant la mise à jour grub2 + recopie de l'image au cas où elle ait disparue (ça m'est déjà arrivé entre le début et la fin de la rédaction de cet article !).

#!/bin/sh
cp /home/<moi>/.local/share/grub2/themes/openSUSE/icons/slitaz.png /boot/grub2/themes/openSUSE/icons && grub2-mkconfig -o /boot/grub2/grub.cfg

Enregistrer par exemple d'abord dans ./local/bin/grub2-update-with-slitaz puis copier en root vers /usr/local/bin. Par exemple :

$ mkdir .local/bin
$ echo "#/bin/sh" >  .local/bin/grub2-update-with-slitaz
$ echo "cp /home/<moi>/.local/share/grub2/themes/openSUSE/icons/slitaz.png /boot/grub2/themes/openSUSE/icons && grub2-mkconfig -o /boot/grub2/grub.cfg" >> .local/bin/grub2-update-with-slitaz
$ chmod +x .local/bin/grub2-update-with-slitaz
$ su
# cp .local/bin/grub2-update-with-slitaz /usr/local/bin

Il n'y a plus qu'à taper en console, en root, si besoin :

# grub2-update-with-slitaz

Et voilà.


Ce tuto intéressant : http://www.dedoimedo.com/computers/grub-2.html#mozTocId624480. Ils ne sont pas si nombreux.