GRUB2: come ricordare grub ultima scelta


11

Attualmente sto provando varie distro, quindi quando avvio il mio laptop ho diversi SO tra cui scegliere. Di solito, tutte le distro si installano grub2e si posizionano in cima all'elenco, quindi sono quelle predefinite da avviare al termine dell'installazione.

Ma Manjaro ha fatto qualcosa di diverso. Ha installato una versione di questo grub2che avrebbe ricordato quale distro ho avviato l'ultima volta e ha continuato a avviarlo (al riavvio) fino a quando non ne ho selezionato un altro (e quindi avrebbe avviato quello e così via).

L'ho immaginato? Manjaro lo fa davvero? In tal caso, come posso installare quella versione del grubmio sistema? Saluti.


Questo è il mio /etc/grub.d/40_customfile:

#!/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.

e questo è il mio /etc/default/grubfile:

# 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"

Ho seguito le indicazioni in quella domanda (principalmente ho aggiunto quelle due linee alla mia grub) ma non ha funzionato. La distro superiore si avvia al riavvio anche se ne avevo già scelta un'altra in precedenza.
Gabriel

Ho seguito le indicazioni nella risposta accettata. Ho modificato /etc/default/grube ho cambiato la linea GRUB_DEFAULT=0in e ho GRUB_DEFAULT=savedaggiunto la linea GRUB_SAVEDEFAULT=trueche non c'era. Allora io sudo update-grub. Riavviato e scelto una distro per l'avvio, diverso da quello in alto. Riavviato di nuovo e la distribuzione superiore (non quella che avevo scelto prima) è stata scelta per impostazione predefinita e avviata.
Gabriel

Ho aggiornato la mia domanda con cosa c'è dentro quei due file. Qual è il cambiamento che dovrei fare?
Gabriel

Risposte:


11

Come da manuale di GRUB :

'GRUB_DEFAULT'

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

Se lo imposti su "salvato", la voce di menu predefinita sarà quella salvata da "GRUB_SAVEDEFAULT", grub-set-default o grub-reboot.


'GRUB_SAVEDEFAULT'

Se questa opzione è impostata su 'true', quindi, quando viene selezionata una voce, salvarla come nuova voce predefinita per l'utilizzo da future esecuzioni di GRUB. Questo è utile solo se 'GRUB_DEFAULT = salvato'; è un'opzione separata perché 'GRUB_DEFAULT = salvato' è utile senza questa opzione, insieme a grub-set-default o grub-reboot. Disinserito per impostazione predefinita. Questa opzione si basa sul blocco ambiente, che potrebbe non essere disponibile in tutte le situazioni (vedere Blocco ambiente).

Devi aggiungere:

GRUB_DEFAULT=saved

e

GRUB_SAVEDEFAULT=true

al tuo /etc/default/grub. Inoltre, se si utilizzano file di menu personalizzati come /etc/grub.d/40_customè necessario aggiungere l'opzione

savedefault

al menuentry / menuentries in quel file. Dopo quell'aggiornamento GRUB:

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

o

update-grub

Se hai installato diverse distribuzioni, assicurati di configurare e aggiornare il GRUB attivo .


1

Ho avuto problemi con questo usando Arch come ospite di VirtualBox. Il problema si è rivelato essere il mio uso di LVM.

Ancora una volta, dal manuale di GRUB :

13.2 Il blocco dell'ambiente GRUB

È spesso utile essere in grado di ricordare una piccola quantità di informazioni da uno stivale all'altro. Ad esempio, potresti voler impostare la voce di menu predefinita in base a ciò che è stato selezionato l'ultima volta. GRUB non implementa deliberatamente il supporto per la scrittura di file al fine di ridurre al minimo la possibilità che il boot loader sia responsabile della corruzione del file system, quindi un file di configurazione di GRUB non può semplicemente creare un file nel modo ordinario. Tuttavia, GRUB fornisce un "blocco ambiente" che può essere utilizzato per salvare una piccola quantità di stato.

Il blocco di ambiente è un file di 1024 byte preallocato, che normalmente vive in / boot / grub / grubenv (anche se non si dovrebbe supporre questo). Al momento dell'avvio, il comando load_env (vedi load_env) carica le variabili d'ambiente da esso, e il comando save_env (vedi save_env) vi salva le variabili d'ambiente. Da un sistema in esecuzione, l'utilità grub-editenv può essere utilizzata per modificare il blocco di ambiente.

Per motivi di sicurezza, questo spazio di archiviazione è disponibile solo se installato su un disco normale (senza LVM o RAID) , utilizzando un filesystem senza checksum (senza ZFS) e utilizzando le funzioni BIOS o EFI (no ATA, USB o IEEE1275).

grub-mkconfig utilizza questa funzione per implementare "GRUB_SAVEDEFAULT" (vedi Configurazione semplice).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.