Comment faire en sorte que grub2 se souvienne du dernier choix?

102

Grub2 - Community La documentation Ubuntu dit ce qui suit:

Vous pouvez enregistrer un système d'exploitation en exécutant sudo grub-set-default si DEFAULT = saved est défini dans / etc / default / grub. Il peut également être enregistré si GRUB_SAVEDEFAULT = true est également défini dans / etc / default / grub. Dans ce cas, le système d'exploitation par défaut reste actif jusqu'à ce qu'un nouveau système d'exploitation soit sélectionné manuellement dans le menu GRUB 2 ou que la commande grub-set-default soit exécutée.

J'ai mis les lignes DEFAULT=savedET GRUB_SAVEDEFAULT=truedans /etc/default/grub, et a couru sudo grub-set-default. Voici la sortie:

$ sudo grub-set-default
entry not specified.
Usage: grub-set-default [OPTION] entry
Set the default boot entry for GRUB.

  -h, --help              print this message and exit
  -v, --version           print the version information and exit
  --boot-directory=DIR    expect GRUB images under the directory DIR/grub
                          instead of the /boot/grub directory

ENTRY is a number or a menu item title.

Report bugs to <[email protected]>.

Est-ce que je ne suis pas la documentation correctement? Quelle est la bonne façon de faire cela?

Jay Sullivan
la source
2
Après avoir modifié le fichier grub, il est préférable de toujours exécuter " sudo update-grub".
Julien Chau
Il suffit de lancer: sudo grub-set-default saved C'est aussi simple que cela.
T. Coles

Réponses:

153

La documentation dans ce cas est fausse. Toutes les variables /etc/default/grubdépart avec GRUB_, il est donc GRUB_DEFAULT=saved, non DEFAULT=saved . J'ai corrigé le wiki Ubuntu pour refléter cela.

Le manuel officiel de grub décrit cela correctement: http://www.gnu.org/software/grub/manual/grub.html#Simple-configuration

Mettez ce qui suit dans /etc/default/grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Puis lancez:

sudo update-grub
Jordan Uggla
la source
4
+1 pour le lien, j'ai modifié votre réponse avec la solution qui me convenait (que j'ai tirée du lien que vous avez fourni)
Jay Sullivan
Le lien dans cette réponse est cassé. 'Page 404'.
Sdlin
dois-je supprimer la ligne existante GRUB_DEFAULT=0?
utilisateur25
@ user25 oui supprimer GRUB_DEFAULT=0, la ligne doit être lueGRUB_DEFAULT=saved
ctrl-alt-delor
4

Dans mon cas, cela ne fonctionnait pas pour les entrées définies via /etc/grub.d/40_customlesquelles la savedefaultligne était manquante .

menuentry "Chameleon" {
    savedefault ### <<<< this must be added
    set root="(hd1)"
    chainloader +1
}
ccpizza
la source
3

Vous oubliez le numéro (c.-à-d. Que "ENTRÉE est un numéro ou un titre d'élément de menu" dans votre texte).

sudo grub-set-default 1

pour que l'option 1 soit la valeur par défaut.

Toujours exécuter sudo update-grubaprès avoir modifié le /etc/default/grubfichier pour appliquer les modifications.

Rinzwind
la source
7
Cela n'a pas fonctionné pour moi, cela a simplement défini le menu GRUB pour qu'il pointe vers l'entrée n ° 1, pas le dernier choix
Jay Sullivan
Si votre option de menu est enterrée dans un sous-menu, comme dans "Options avancées pour Ubuntu", le format est "index de sous-menu> index de sous-menu". Vous devez donc spécifier 1> "index de votre choix". Vous êtes également censé pouvoir spécifier un nom de chaîne pour chaque sélection.
Epu
2

savedefault ne fonctionnera pas s'il n'y a pas d'en-tête approprié dans le fichier grub.cfg généré automatiquement

Pour générer l’en-tête approprié, vous devez le définir dans / etc / default / grub.

GRUB_DEFAULT=saved

et faites grub-mkconfig pour remplacer votre copie de grub.cfg

grub-mkconfig -o /boot/grub.cfg

savedefault de Grub 2.02 ne nécessite aucun argument supplémentaire

Vous pouvez voir la source de savedefault dans grub.cfg

Dblmok
la source
Regardez la réponse de @ccpizza, peut-être que cela vous aidera: askubuntu.com/a/674148/97838
Hibou57