GRUB2: comment se souvenir du dernier choix de grub

11

J'essaie actuellement diverses distributions, donc lorsque je démarre mon ordinateur portable, j'ai plusieurs systèmes d'exploitation à choisir. Habituellement, toutes ces distributions s'installent grub2et se placent en haut de la liste, elles sont donc celles par défaut à démarrer une fois l'installation terminée.

Mais Manjaro a fait quelque chose de différent. Il a installé une version grub2qui se souviendrait de la distribution que j'ai démarrée la dernière fois et a continué à démarrer celle-ci (au redémarrage) jusqu'à ce que j'en sélectionne une autre (puis elle démarrerait celle-ci et ainsi de suite).

L'ai-je imaginé? Est-ce que Manjaro fait ça? Si oui, comment puis-je installer cette version de grubsur mon système? À votre santé.


Voici mon /etc/grub.d/40_customdossier:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

et voici mon /etc/default/grubdossier:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
Gabriel
la source
J'ai suivi les instructions de cette question (principalement ajouté ces deux lignes à ma grub), mais cela n'a pas fonctionné. La distribution supérieure démarre au redémarrage même si j'en avais choisi une autre auparavant.
Gabriel
J'ai suivi les instructions de la réponse acceptée. J'ai édité /etc/default/grubet j'ai changé la ligne GRUB_DEFAULT=0en et j'ai GRUB_DEFAULT=savedajouté la ligne GRUB_SAVEDEFAULT=truequi n'était pas là. Alors moi sudo update-grub. Redémarré et choisi une distribution pour démarrer, différente de celle du haut. Redémarré à nouveau et la distribution supérieure (pas celle que j'avais choisie auparavant) a été choisie par défaut et démarrée.
Gabriel
J'ai mis à jour ma question avec le contenu de ces deux fichiers. Quel changement dois-je faire?
Gabriel

Réponses:

11

Selon le manuel GRUB :

'GRUB_DEFAULT'

.................

Si vous définissez ce paramètre sur «enregistré», l'entrée de menu par défaut sera celle enregistrée par «GRUB_SAVEDEFAULT», grub-set-default ou grub-reboot.


'GRUB_SAVEDEFAULT'

Si cette option est définie sur «true», puis, lorsqu'une entrée est sélectionnée, enregistrez-la en tant que nouvelle entrée par défaut pour une utilisation par les futures exécutions de GRUB. Ceci n'est utile que si «GRUB_DEFAULT = enregistré»; c'est une option distincte car 'GRUB_DEFAULT = saved' est utile sans cette option, en conjonction avec grub-set-default ou grub-reboot. Désactivé par défaut. Cette option repose sur le bloc d'environnement, qui peut ne pas être disponible dans toutes les situations (voir Bloc d'environnement).

Vous devez ajouter:

GRUB_DEFAULT=saved

et

GRUB_SAVEDEFAULT=true

à votre /etc/default/grub. De plus, si vous utilisez des fichiers de menu personnalisés comme /etc/grub.d/40_customvous devez ajouter l'option

savedefault

à l'entrée de menu / entrées de menu dans ce fichier. Après cette mise à jour GRUB:

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

ou

update-grub

Si plusieurs distributions sont installées, assurez-vous de configurer et de mettre à jour le GRUB actif .

don_crissti
la source
1

J'avais des problèmes avec cela en utilisant Arch en tant qu'invité VirtualBox. Le problème s'est avéré être mon utilisation de LVM.

Encore une fois, à partir du manuel GRUB :

13.2 Le bloc d'environnement GRUB

Il est souvent utile de pouvoir se souvenir d'une petite quantité d'informations d'un démarrage à l'autre. Par exemple, vous souhaiterez peut-être définir l'entrée de menu par défaut en fonction de ce qui a été sélectionné la dernière fois. GRUB n'implémente délibérément pas la prise en charge de l'écriture de fichiers afin de minimiser la possibilité que le chargeur de démarrage soit responsable de la corruption du système de fichiers, donc un fichier de configuration GRUB ne peut pas simplement créer un fichier de la manière ordinaire. Cependant, GRUB fournit un «bloc d'environnement» qui peut être utilisé pour enregistrer une petite quantité d'état.

Le bloc d'environnement est un fichier de 1024 octets préalloué, qui vit normalement dans / boot / grub / grubenv (bien que vous ne devriez pas le supposer). Au démarrage, la commande load_env (voir load_env) en charge des variables d'environnement et la commande save_env (voir save_env) y enregistre des variables d'environnement. À partir d'un système en cours d'exécution, l'utilitaire grub-editenv peut être utilisé pour modifier le bloc d'environnement.

Pour des raisons de sécurité, ce stockage n'est disponible que lorsqu'il est installé sur un disque brut (pas de LVM ou RAID) , en utilisant un système de fichiers sans somme de contrôle (pas de ZFS) et en utilisant des fonctions BIOS ou EFI (pas d'ATA, USB ou IEEE1275).

grub-mkconfig utilise cette fonction pour implémenter 'GRUB_SAVEDEFAULT' (voir Configuration simple).

Matteus Blanc
la source