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?


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.


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


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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.