GRUB2: como lembrar a última escolha do grub

11

Atualmente, estou testando várias distribuições, portanto, quando inicializo meu laptop, tenho vários sistemas operacionais para escolher. Geralmente, todas essas distros são instaladas grub2e se localizam no topo da lista, de modo que elas são as padrão a serem inicializadas após a conclusão da instalação.

Mas Manjaro fez algo diferente. Ele instalou uma versão grub2que lembraria qual distro eu inicializei da última vez e continuei inicializando aquela (na reinicialização) até que eu selecionasse outra (e depois inicializaria aquela e assim por diante).

Eu imaginei isso? Manjaro realmente faz isso? Se sim, como posso instalar essa versão do grubmeu sistema? Felicidades.


Este é o meu /etc/grub.d/40_customarquivo:

#!/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 este é o meu /etc/default/grubarquivo:

# 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
fonte
Eu segui as instruções nessa pergunta (principalmente adicionei essas duas linhas à minha grub), mas não funcionou. A distribuição superior é inicializada após a reinicialização, embora eu tenha escolhido outra anteriormente.
Gabriel
Eu segui as instruções na resposta aceita. Eu editei /etc/default/grube mudei a linha GRUB_DEFAULT=0para GRUB_DEFAULT=savede adicionei a linha GRUB_SAVEDEFAULT=trueque não está lá. Então eu sudo update-grub. Reinicie e escolha uma distro para inicializar, diferente da primeira. Reiniciei novamente e a distro superior (não a que eu havia escolhido antes) foi escolhida por padrão e inicializada.
Gabriel
Atualizei minha pergunta com o que há dentro desses dois arquivos. Qual é a mudança que devo fazer?
7113 Gabriel

Respostas:

11

Conforme o manual do GRUB :

'GRUB_DEFAULT'

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

Se você definir como 'salvo', a entrada de menu padrão será a salva por 'GRUB_SAVEDEFAULT', grub-set-default ou grub-reboot.


'GRUB_SAVEDEFAULT'

Se esta opção estiver definida como 'true', quando uma entrada for selecionada, salve-a como uma nova entrada padrão para uso em futuras execuções do GRUB. Isso é útil apenas se 'GRUB_DEFAULT = salvo'; é uma opção separada porque 'GRUB_DEFAULT = salvo' é útil sem essa opção, em conjunto com grub-set-default ou grub-reboot. Desativado por padrão. Esta opção depende do bloco de ambiente, que pode não estar disponível em todas as situações (consulte Bloco de ambiente).

Você deve adicionar:

GRUB_DEFAULT=saved

e

GRUB_SAVEDEFAULT=true

para o seu /etc/default/grub. Além disso, se você estiver usando arquivos de menu personalizados, /etc/grub.d/40_customdeverá adicionar a opção

savedefault

para o menuentry / menuentries nesse arquivo. Após essa atualização, o GRUB:

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

ou

update-grub

Se você tiver várias distribuições instaladas, verifique se está configurando e atualizando o GRUB ativo .

don_crissti
fonte
1

Eu estava tendo problemas com isso usando o Arch como um convidado do VirtualBox. O problema acabou sendo meu uso do LVM.

Novamente, no Manual do GRUB :

13.2 O bloco de ambiente GRUB

Muitas vezes, é útil poder lembrar uma pequena quantidade de informações de uma inicialização para a seguinte. Por exemplo, você pode definir a entrada de menu padrão com base no que foi selecionado na última vez. O GRUB deliberadamente não implementa suporte à gravação de arquivos para minimizar a possibilidade de o carregador de inicialização ser responsável pela corrupção do sistema de arquivos; portanto, um arquivo de configuração do GRUB não pode simplesmente criar um arquivo da maneira comum. No entanto, o GRUB fornece um "bloco de ambiente" que pode ser usado para salvar uma pequena quantidade de estado.

O bloco de ambiente é um arquivo pré-alocado de 1024 bytes, que normalmente vive em / boot / grub / grubenv (embora você não deva assumir isso). No momento da inicialização, o comando load_env (consulte load_env) carrega variáveis ​​de ambiente e o comando save_env (consulte save_env) salva variáveis ​​de ambiente nele. Em um sistema em execução, o utilitário grub-editenv pode ser usado para editar o bloco de ambiente.

Por motivos de segurança, esse armazenamento está disponível apenas quando instalado em um disco simples (sem LVM ou RAID) , usando um sistema de arquivos sem soma de verificação (sem ZFS) e usando funções BIOS ou EFI (sem ATA, USB ou IEEE1275).

O grub-mkconfig usa esse recurso para implementar 'GRUB_SAVEDEFAULT' (consulte Configuração simples).

Matteus Blanc
fonte