# Grub - variable $GRUB\_ACTUAL\_DEFAULT

**URL:** <https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771>\
**Category:** Support Debian\
**Created:** [Octobre 15, 2017, 7:40 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771 "2017-10-15T19:40:38Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Briceco](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/97f17d/32.png) [@Briceco](https://www.debian-fr.org/u/Briceco)\
**Post date:** [Octobre 15, 2017, 7:40 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/1 "2017-10-15T19:40:38Z")

</div>

Bonjour à tous,

Je travaille sur ma configuration grub qui doit être adaptée à ma machine et à la présence de divers OS sur celle-ci.

Dans le fichier /etc/grub.d/10\_linux, une variable est utilisée : `$GRUB_ACTUAL_DEFAULT`

D’après ce que je comprends cette variable est définie ailleurs que dans ce fichier et elle sert à fournir le titre de l’entrée affichée par grub pour le linux. Un court extrait du fichier 10\_linux sera sans doute plus parlant : `if [x"$title" = x"$GRUB_ACTUAL_DEFAULT"]`

Je n’arrive pas à trouver la source de cette variable `$GRUB_ACTUAL_DEFAULT` que je souhaiterais modifier pour une meilleur lisibilité de mes entrées grub.

Savez-vous ou je pourrais trouver le fichier où cette variable est définie ?

Je vous remercie,

Bonne semaine à tous,

Briceco

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Octobre 15, 2017, 9:19 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/2 "2017-10-15T21:19:16Z")

</div>

Dans /usr/sbin/grub-mkconfig.  
Mais je ne pense pas que cette variable dérivée de GRUB\_DEFAULT définie dans /etc/default/grub sert à définir le titre de l’entrée de menu. Elle contient plutôt le numéro, le titre ou l’identifiant de l’entrée sélectionnée par défaut.

---

<div class="post-metadata">

**Author:** ![anonyme2](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f08c70/32.png) [@anonyme2](https://www.debian-fr.org/u/anonyme2)\
**Post date:** [Octobre 15, 2017, 9:43 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/3 "2017-10-15T21:43:42Z")

</div>

> [@Briceco](#):
>
> je souhaiterais modifier pour une meilleur lisibilité de mes entrées grub.

voilà bien une question curieuse; la commande root «&nbsp;update-grub&nbsp;» liste tous les os présents sur votre système et les écrit très clairement et lisiblement dans le menu grub.

---

<div class="post-metadata">

**Author:** ![Briceco](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/97f17d/32.png) [@Briceco](https://www.debian-fr.org/u/Briceco)\
**Post date:** [Octobre 15, 2017, 10:07 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/4 "2017-10-15T22:07:03Z")

</div>

Merci PascalHambourg. Je souhaite modifier le titre de l’entrée linux afin que «&nbsp;Jessie&nbsp;» y apparaisse, notamment pour bien différencier Jessie et Stretch. Remonter la piste risque de m’amener trop profond. Effectivemment, dans /usr/sbin/grub-mkconfig on trouve : `GRUB_ACTUAL_DEFAULT="$GRUB_DEFAULT"`

Du coup :

`/boot/grub/grub.cfg` -----\> `/etc/grub.d/10_linux` ------\> `/usr/sbin/grub-mkconfig` -------\> ?

De plus, je pars sur une conjecture comme tu me le rappelles :

> [@PascalHambourg](#):
>
> Mais je ne pense pas que cette variable dérivée de GRUB\_DEFAULT définie dans /etc/default/grub sert à définir le titre de l’entrée de menu.

J’aurai bien aimé faire ça proprement, en évitant d’éditer directement `grub.cfg`. Une idée ?

> [@anonyme2](#):
>
> voilà bien une question curieuse; la commande root «&nbsp;update-grub&nbsp;» liste tous les os présents sur votre système et les écrit très clairement et lisiblement dans le menu grub.

Et bien, je ne l’ai évoqué que très rapidemment avec cette phrase… [quote=«&nbsp;Briceco, post:1, topic:74771&nbsp;»]  
Je travaille sur ma configuration grub qui doit être adaptée à ma machine et à la présence de divers OS sur celle-ci.  
[/quote]  
… mais il se trouve que j’ai une configuration particulière. Je ne suis pas sur un pc mais sur un mac, ce qui change beaucoup de chose, et j’ai plusieurs os mac installés qui coexistent avec Jessie et Stretch. Alors non, et définitivement non, grub est incapable de me lister correctement, lisiblement et fonctionnellement certains OS, particulièrement les mac, et je suis constamment obligé de passer derrière pour avoir du propre et surtout du fonctionnel. A noter que je ne me plains absolument pas. C’est un simple constat.

Exemple concret : Dans ma situation os-prober est désactivé car il doit l’être.

En fait, 6 de mes 11 sujets postés sur ce forum sont directement liés à ma configuration…

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Octobre 16, 2017, 10:08 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/5 "2017-10-16T10:08:23Z")

</div>

Salut  
la première ligne affichée est le résultat de la configuration dans /etc/default/grub

GRUB\_DISTRIBUTOR=lsb\_release -i -s 2\> /dev/null || echo Debian

```auto
root@debian:/# GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
root@debian:/# echo $GRUB_DISTRIBUTOR
Debian
root@debian:/# lsb_release -i -s
Debian

```

Si tu selectionnes la deuxième ligne (options avancées) , l’affichage de l’identité du noyau est le résultat du script /etc/grub.d/10\_linux  
Mais faire une équivalence nom de distribution et version du noyau c’est pas juste. Exemple j’ai toujours le noyau 3.16 sous Buster

Autres configuration possible  
Masquer les lignes memtest

`sudo chmod -x /etc/grub.d/20_memtest86+`

Les autres OS sont le résultat de /etc/grub.d/30\_os-prober

Pour prendre en compte les modifications toujours faire  
sudo update-grub

Cf la doc:

[https://help.ubuntu.com/community/Grub2/Setup](https://help.ubuntu.com/community/Grub2/Setup)

Et aller fouiller dans grub-mkconfig

```auto
locate grub-mkconfig
/usr/lib/grub/grub-mkconfig_lib
/usr/sbin/grub-mkconfig
/usr/share/grub/grub-mkconfig_lib

```

qui doit etre appelé par update-grub

---

<div class="post-metadata">

**Author:** ![Briceco](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/97f17d/32.png) [@Briceco](https://www.debian-fr.org/u/Briceco)\
**Post date:** [Octobre 16, 2017, 5:38 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/6 "2017-10-16T17:38:35Z")

</div>

Ok merci @grandtoubab. Les infos concernant GRUB\_DISTRIBUTOR m’ont été très utile.

J’ai modifié 10\_linux en conséquence et tout est parfait.

Merci à tous.

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Octobre 17, 2017, 1:12 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/7 "2017-10-17T13:12:41Z")

</div>

Dans mon cas ou je conserve l’accès en même temps aux depôts Jessie, Stretch et Buster l’info la plus pertinente est le PRETTY\_NAME

```auto
 cat /usr/lib/os-release
PRETTY_NAME="Debian GNU/Linux buster/sid"
NAME="Debian GNU/Linux"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

```

Car lsb\_release choisit d’afficher uniquement Jessie

```auto
root@debian:/# lsb_release --all
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 8.9 (jessie)
Release:	8.9
Codename:	jessie
root@debian:/# 

```

Donc j’ai mis ça

GRUB\_DISTRIBUTOR=$(grep PRETTY\_NAME /usr/lib/os-release)

ce qui affiche ca PRETTY\_NAME=“Debian GNU/Linux buster/sid”, comme je ne suis pas balaise en awk et compagnie, je ne sais pas faire disparatire PRETTY\_NAME= 😀

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Octobre 17, 2017, 2:02 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/8 "2017-10-17T14:02:19Z")

</div>

Salut,

> ce qui affiche ca PRETTY\_NAME=«&nbsp;Debian GNU/Linux buster/sid&nbsp;», comme je ne suis pas balaise en awk et compagnie, je ne sais pas faire disparatire PRETTY\_NAME= 😀

tu peux utiliser ça:  
GRUB\_DISTRIBUTOR=$(sed -n ‹&nbsp;s/PRETTY\_NAME=//1p&nbsp;› /usr/lib/os-release)

EDIT: bon et bien on a tous répondu en même temps, les gens de ce forum aiment bien sed 🙂

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Octobre 17, 2017, 2:03 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/10 "2017-10-17T14:03:21Z")

</div>

Tu peux utiliser `sed` pour supprimer PRETTY\_NAME=, ou bien tu peux sourcer le fichier (puisqu’il définit des variables) au lieu de le grepper, et utiliser la valeur de la variable.

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Octobre 17, 2017, 2:52 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/11 "2017-10-17T14:52:36Z")

</div>

quand je mets

```auto
source /usr/lib/os-release
GRUB_DISTRIBUTOR=$PRETTY_NAME

```

ça passe pas

```auto
root@debian:/# update-grub
/usr/sbin/grub-mkconfig: 11: /etc/default/grub: source: not found
root@debian:/# 

```

je vais prendre le sed  
Merci Sputnik93 et PascalHambourg

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Octobre 17, 2017, 2:59 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/12 "2017-10-17T14:59:59Z")

</div>

> [@grandtoubab](#):
>
> quand je mets
> 
> source /usr/lib/os-release  
> GRUB\_DISTRIBUTOR=$PRETTY\_NAME
> 
> ça passe pas
> 
> root@debian:/# update-grub  
> /usr/sbin/grub-mkconfig: 11: /etc/default/grub: source: not found  
> root@debian:/#

Regarde le dernier post de MicP dans ce sujet: [Bash : Variables, comment les utiliser en dehors du fichier ? - #6 par anon29980398](https://www.debian-fr.org/t/bash-variables-comment-les-utiliser-en-dehors-du-fichier/74746/6)

Il faut `set -a` avant le source (et set +a juste après, pour plus de propreté).

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Octobre 17, 2017, 3:34 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/13 "2017-10-17T15:34:06Z")

</div>

je crois que c’est parce que

```auto
cat /usr/sbin/grub-mkconfig
#! /bin/sh
set -e

```

ce script grub-mkconfig n’est pas en bash

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Octobre 17, 2017, 5:21 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/14 "2017-10-17T17:21:07Z")

</div>

Bonsoir

Si le sheban est :

```
!# /bin/sh

```

l’interpréteur de commande sera **dash** :

```
michel@debg53sw:~$ file /bin/sh
/bin/sh: symbolic link to dash
michel@debg53sw:~$ 

```

et avec **dash**  
**set -a** permet aussi d’exporter des variables depuis un script ou en “sourçant” un fichier

Extrait de **man dash** :

```
   -a allexport Export all variables assigned to.
```

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Octobre 17, 2017, 6:50 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/15 "2017-10-17T18:50:57Z")

</div>

Finalement je ne comprends rien  
ou doit s’ecrire la directive source?  
dans le fichier qui détient la donnée , dans ce cas /usr/lib/os-release ou dans le fichier qui veut utiliser la donnée qui ne lui appartient pas dans ce cas /etc/default/grub

Meme avec set + a dans /etc/default/grub dans ça ne fonctionne pas , il y a toujours la meme erreur  
/usr/sbin/grub-mkconfig: /etc/default/grub: source: not found

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Octobre 17, 2017, 7:09 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/16 "2017-10-17T19:09:30Z")

</div>

> [@grandtoubab](#):
>
> …  
> Meme avec set + a dans /etc/default/grub dans ça ne fonctionne pas , il y a toujours la meme erreur  
> /usr/sbin/grub-mkconfig: /etc/default/grub: source: not found  
> …

Extrait de la page man de l’interpréteur de commandes **dash** :

```
…
   Builtins
…
     . file
            The commands in the specified file are read and executed by the shell.

⁫…

```

⁫

```
michel@debg53sw:~/tstSource$ cat testeVars.sh 
#! /bin/sh
set -a
. /usr/lib/os-release
set +a
echo $PRETTY_NAME
michel@debg53sw:~/tstSource$ 

```

Le point (.) est la commande qui me permet de «&nbsp;sourcer&nbsp;» le fichier  
⁫

```
michel@debg53sw:~/tstSource$ dash testeVars.sh 
Debian GNU/Linux 8 (jessie)
michel@debg53sw:~/tstSource$

```

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Octobre 17, 2017, 7:17 UTC](https://www.debian-fr.org/t/grub-variable-grub-actual-default/74771/17 "2017-10-17T19:17:31Z")

</div>

Bravo MicP , un point qui change tout 😀

```auto
set -a
. /usr/lib/os-release
set +a
GRUB_DISTRIBUTOR=$PRETTY_NAME

```

```auto
root@debian:/# update-grub
Création du fichier de configuration GRUB…
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Image Linux trouvée : /boot/vmlinuz-4.9.0-3-amd64
Image mémoire initiale trouvée : /boot/initrd.img-4.9.0-3-amd64
Image Linux trouvée : /boot/vmlinuz-3.16.0-4-amd64
Image mémoire initiale trouvée : /boot/initrd.img-3.16.0-4-amd64
fait
root@debian:/# 

```

génère bien

```auto
menuentry 'Debian GNU/Linux buster/sid GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_

```

et

```auto
menuentry 'Debian GNU/Linux buster/sid GNU/Linux, avec Linux 4.9.0-3-amd64'

```

dans /boot/grub/grub.cfg

Pour être vraiment satisfait et éviter le double affichage GNU/Linux, il faut modifier la ligne 45 de /etc/grub.d/10\_linux

```auto
# OS="${GRUB_DISTRIBUTOR} GNU/Linux"
      OS="${GRUB_DISTRIBUTOR}"

```
