140 votes

Comment faire pour que grub2 se souvienne du dernier choix ?

Grub2 - Documentation communautaire Ubuntu dit ce qui suit :

La sauvegarde d'un OS peut être réalisée en exécutant sudo Grub-set-default si DEFAULT=saved est défini dans /etc/default/Grub. Il peut également être sauvegardé si GRUB_SAVEDEFAULT=true est également défini dans /etc/default/Grub. Dans ce cas, le système d'exploitation par défaut reste jusqu'à ce qu'un nouveau système d'exploitation soit sélectionné manuellement dans le fichier Grub 2 menu ou que la commande Grub-set-default soit exécutée.

J'ai mis les lignes DEFAULT=saved ET GRUB_SAVEDEFAULT=true en /etc/default/grub et a couru sudo grub-set-default . Voici le résultat :

$ 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 <bug-grub@gnu.org>.

Est-ce que je ne suis pas la documentation correctement ? Quelle est la bonne façon de procéder ?

205voto

Jordan Uggla Points 4055

Dans ce cas, la documentation est erronée. Toutes les variables dans /etc/default/grub commencer par GRUB_ donc c'est GRUB_DEFAULT=saved , pas DEFAULT=saved . J'ai corrigé le wiki Ubuntu pour refléter cela.

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

Mettez ce qui suit dans /etc/default/grub (ligne de commande : gedit admin:///etc/default/grub ):

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Alors cours :

sudo update-grub

11voto

ccpizza Points 1294

Dans mon cas, cela ne fonctionnait pas pour les entrées définies par le biais de l'option /etc/grub.d/40_custom qui manquaient le savedefault ligne.

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

3voto

Dblmok Points 31

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

Pour générer un en-tête approprié, vous devez 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écessitent pas d'arguments supplémentaires

Vous pouvez voir la source de savedefault dans Grub.cfg

2voto

Pokulo Points 21

Merci à ccpizza J'ai compris que mon Windows menuentry en /etc/grub.d/40_custom a manqué le savedefault Attribut :

menuentry 'Windows 10' {
    savedefault    # <<<<<<<<<<<< THIS Attribute was missing!
    insmod ntfs
    insmod ntldr
    insmod part_msdos
    insmod search_fs_uuid
    search --fs-uuid --no-floppy --set=root <WINDOWS_SSD_UUID>
    ntldr /bootmgr
}

Dans mon cas (Arch Linux, pas Ubuntu ;) ) J'ai trouvé pacman -S grub-customizer (de ce post sur StackOverflow de matt-u ) qui est un bel outil GUI pour personnaliser Grub-Menu !

PS : Je n'ai pu ni upvoter ni commenter sur ccpizza Je n'ai pas pu répondre à cette question à cause des crédits manquants dans ce forum, alors j'ai décidé de donner une autre réponse :(

1voto

Rinzwind Points 270388

Vous oubliez le numéro (c'est-à-dire le "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-grub après avoir modifié le /etc/default/grub pour appliquer les changements.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X