Como fazer com que o grub2 se lembre da última escolha?

102

Grub2 - Community Ubuntu Documentation diz o seguinte:

É possível salvar um sistema operacional executando sudo grub-set-default se DEFAULT = save estiver definido em / etc / default / grub. Também pode ser salvo se GRUB_SAVEDEFAULT = true também estiver definido em / etc / default / grub. Nesse caso, o sistema operacional padrão permanece até que um novo sistema operacional seja selecionado manualmente no menu GRUB 2 ou o comando grub-set-default seja executado.

Eu coloquei as linhas DEFAULT=savedE GRUB_SAVEDEFAULT=truena /etc/default/grub, e correu sudo grub-set-default. Aqui está a saída:

$ 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]>.

Não estou seguindo a documentação corretamente? Qual é a maneira correta de fazer isso?

Jay Sullivan
fonte
2
Após alterar o arquivo grub, é melhor sempre executar " sudo update-grub".
Julien Chau
Basta executar: sudo grub-set-default saved É simples assim.
T. Coles

Respostas:

153

A documentação neste caso está errada. Todas as variáveis em /etc/default/grubcomeçar com GRUB_, por isso é GRUB_DEFAULT=saved, não DEFAULT=saved . Corrigi o wiki do Ubuntu para refletir isso.

O manual oficial do grub descreve isso corretamente: http://www.gnu.org/software/grub/manual/grub.html#Simple-configuration

Coloque o seguinte em /etc/default/grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Então corra:

sudo update-grub
Jordan Uggla
fonte
4
+1 para o link, eu editei sua resposta com a solução que funcionou para mim (que eu derivado do link fornecido)
Jay Sullivan
O link nesta resposta está quebrado. 'Página 404'.
Sdlins
devo remover a linha existente GRUB_DEFAULT=0?
usar o seguinte comando
@ user25 yes remove GRUB_DEFAULT=0, a linha deve lerGRUB_DEFAULT=saved
ctrl-alt-delor
4

No meu caso, não estava funcionando para entradas definidas através das /etc/grub.d/40_customquais estavam faltando a savedefaultlinha.

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

Você está esquecendo o número (ou seja, a "ENTRADA é um número ou um título de item de menu" no seu texto).

sudo grub-set-default 1

para a opção 1 ser o padrão.

Sempre execute sudo update-grubdepois de modificar o /etc/default/grubarquivo para aplicar as alterações.

Rinzwind
fonte
7
Isto não funcionou para mim, ele só define o menu GRUB para apontar para a entrada # 1, não será a última escolha
Jay Sullivan
Se sua opção de menu estiver enterrada em um submenu, como em 'Opções avançadas para o ubuntu', o formato é 'submenu-index> submenu-item-index' '. Portanto, você precisa especificar 1> 'índice de sua escolha'. Você também deve poder especificar pelo nome da string para cada seleção.
Epu
2

saveefault não funcionará, se não houver cabeçalho adequado no grub.cfg gerado automaticamente

Para gerar um cabeçalho adequado, você precisa definir em / etc / default / grub

GRUB_DEFAULT=saved

e faça o grub-mkconfig para substituir sua cópia do grub.cfg

grub-mkconfig -o /boot/grub.cfg

savedefault do Grub 2.02 não requer argumentos adicionais

Você pode ver a fonte de Savedefault no grub.cfg

Dblmok
fonte
Veja a resposta de @ccpizza, pode ser que isso ajude: askubuntu.com/a/674148/97838
Hibou57