Definir o kernel “mais antigo” como entrada padrão do grub

94

Eu instalei um kernel da linha principal para fins de teste. Eu gostaria de configurar o grub para inicializar a partir do kernel mais antigo por padrão.

Eu sei que posso definir a GRUB_DEFAULT=0configuração para a primeira página do grub, mas como faço para inicializá-la por padrão a partir de um kernel na segunda página (página Avançada)?

Eu preferiria fazer isso sem instalar outro software (por exemplo, grub-customizer).

Perguntas relacionadas:
Como configurar o Windows para inicializar como padrão no carregador de inicialização?
Como altero a ordem de inicialização do grub?

Façam
fonte
3
@belacqua: Não é uma duplicata. Esta pergunta é sobre definir um kernel mais antigo que não está presente na primeira página de opções do grub como padrão.
Para Fazer
Parece que neste caso devem ser cobertos nas perguntas anteriores, mesmo que o método precisa ser atualização para 12.10, kernels mais antigos, etc ..
Belacqua
3
O caso de uso da pergunta é diferente e a resposta é muito específica de uma maneira que não se aplica às outras duplicatas reivindicadas. Eu vim aqui para resolver este problema em particular; para não alterar a ordem de inicialização; nem para inicializar o Windows. +1 para "não é duplicado".
Robie Basak

Respostas:

128

Primeiro, faça uma cópia de segurança de /etc/default/grub. Se algo der errado, você poderá reverter facilmente para a cópia em bom estado.

sudo cp /etc/default/grub /etc/default/grub.bak

Em seguida, edite o arquivo usando o editor de texto de sua escolha (por exemplo, gedit, etc.).

sudo -H gedit /etc/default/grub

Encontre a linha que contém GRUB_DEFAULT- é isso que você deseja editar para definir o padrão. Você deve saber o nome completo do kernel que deseja - por exemplo Ubuntu, with Linux 3.13.0-53-generic- junto com o nome completo do "menu avançado" - por exemplo Advanced options for Ubuntu.

Você então combina essas duas cadeias com >e define GRUB_DEFAULTcomo: GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"(incluindo aspas).

Salve-o e crie o menu grub atualizado.

sudo update-grub

Veja também: Manual do GNU GRUB 2.02 ou mais especificamente a seção 15.1.0 sobre configuração do padrão .


Nota: Existe um método que utiliza números para acessar kernels e menus, mas isso não é recomendado, pois não é confiável quando ocorrem atualizações do kernel.

DaimyoKirby
fonte
24
O uso de um valor numérico pode ser problemático quando ocorrem atualizações. É melhor usar um padrão de texto, ou seja: GRUB_DEFAULT = "As versões anteriores do Linux> Ubuntu, com o Linux 3.2.0-18-generic"
Bealer
27
Pode-se usar sudo grub-mkconfig | lesspara ver todas as opções possíveis
Nitz
9
Esta é uma boa solução, mas ainda melhor é abrir um /boot/grub/grub.cfge lá você verá todos manuentrye todos submenus. Se você editá-los, poderá definir facilmente os padrões e até alterar os títulos das opções na lista do grub ao reiniciar um computador.
21315 Aleks
7
É definitivamente útil examinar /boot/grub/grub.cfgpara determinar os nomes exatos a serem usados. Mas não altere esse arquivo, pois ele será regenerado automaticamente update-grub, inclusive na atualização de pacotes.
Robie Basak
18
A formatação do GRUB_DEFAULT está um pouco desatualizada (desde pelo menos o Ubuntu 14.04.2). Correndo update-grubeu encontrei um aviso: Por favor, não use título antigo Previous Linux versions>Ubuntu, with Linux 3.13.0-53-genericpara GRUB_DEFAULT, use Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic(para as versões antes 2,00) ou gnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c-453b-af59-419b56a2584f(para 2,00 ou posterior)
Wumms
22

A melhor solução para mim foi definir (in /etc/default/grub):

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

Com essas configurações, o último valor selecionado é mantido para a próxima inicialização. Se você possui um novo kernel, não precisa editar sua configuração.

Não se esqueça de voltar a executar sudo update-grub

A solução é da leitura: info grub-mkconfig

Martin T.
fonte
4
Isso é incrível
Mephisto
você tem certeza do ponto-e-vírgula ( ;) no final das linhas?!?
DJCrashdummy
Não consigo olhar no meu computador onde o usei neste momento, mas você está certo ";" parece estar errado ou desnecessário!
Martin T.
21

Agora que um Advancedmenu é padrão no Ubuntu, você precisará selecioná-lo antes do kernel que deseja usar o >personagem.

Definir por exemplo:

GRUB_DEFAULT="1>7"

em /etc/default/grube re-run sudo update-grub.

É importante notar que, para o menu GRUB, a numeração das entradas começa com 0. Portanto, o item 1acima aponta para o Advancedmenu. Como precaução, convém definir inicialmente GRUB_TIMEOUT=5. Alguns podem não conseguir acessar o GRUB pressionando uma tecla no momento da inicialização. Esta é uma rede de segurança, caso você aponte acidentalmente para algo parecido Memory test. Também é necessário incluir os números acima entre aspas. Não funcionará de outra maneira.

Eu testei em 16.04 LTS.

sarnold
fonte
Também funciona no Debian.
Lawrence D'Oliveiro
Acho esta resposta muito útil, pois após uma atualização do kernel, ela ainda aponta para o kernel mais novo. na minha configuração, por exemplo, é 1> 0, o que significa: listagem avançada avançada (é sempre o kernel mais recente). algum dia meu sistema parou para atualizar automaticamente a entrada 0 do grub com o kernel mais recente, então eu uso esse método.
quer
9

Para poder definir qual opção de inicialização usar como padrão, você precisa saber o que há ... então:

Para exibir as entradas do menu sem realmente inicializar , tente algo como:

$ lsb_release -s -rdc
Ubuntu 16.04.4 LTS
16.04
hospitaleiro

$ update-grub --version
grub-mkconfig (GRUB) 2.02 ~ beta2-36ubuntu3.17

$ grep -Ei 'submenu | menuentry' /boot/grub/grub.cfg | sed -re "s / (.?) '([^'] +) '. * / \ 1 \ 2 /"
menuentry Ubuntu
submenu Opções avançadas para Ubuntu
    menuentry Ubuntu, com Linux 4.4.0-34-generic
    menuentry Ubuntu, com Linux 4.4.0-34-generic (inicial)
    menuentry Ubuntu, com Linux 4.4.0-34-generic (modo de recuperação)
configuração do sistema

Hannu
fonte