Não é possível obter o menu do grub até o tempo limite (ou ir embora)


18

Estou executando o Ubuntu 12.04.

Por toda a minha vida, não consigo que o menu grub (com opções) desapareça.

Gostaria de inicializar automaticamente na primeira opção. Eu editei o / etc / default / grub para que fique com o seguinte:

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

Depois disso, executei o sudo update-grub . Então percebi que tinha o grub 2, então executei o sudo update-grub2 (ambos parecem criar o arquivo grub.cfg com êxito.

Eu reinicio meu computador e ele volta ao menu grub e fica lá até eu fazer uma escolha. Isso não é desejável se a energia acabar ... :-)

Eu também tentei reinstalar o grub usando o sudo grub-install / dev / sda - também sem êxito


Você, por acaso, tem outra partição na qual instalou o Ubuntu depois de configurar a partição atual na qual agora deseja inicializar automaticamente?
fabricator4

Não sei bem o que você quer dizer, sou meio novo no linux. Eu instalei sobre uma instalação anterior do Ubuntu, mas não atualizei. Instalação limpa. Talvez eu tenha estragado alguma coisa em termos de partição ... isso é possível, alguma idéia sobre como corrigi-lo?
Eric

sudo update-grube sudo update-grub2executa o mesmo comando. Então, não se preocupe com essa parte.
saji89

Por favor, publique a saída de cat /boot/grub/grub.cfg via pastebin e compartilhe o link aqui. Isto é para ver o real grub.cfggerado.
saji89

Aqui está o pastebin: pastebin.com/xxe2rLhg do grub.cfg. Obrigado por toda sua ajuda!
Eric

Respostas:


22

Como outras respostas apontam, você pode ser vítima da situação de falha no registro . A edição /boot/grub/grub.cfgmanual deve estar fora de questão, pois é gerada automaticamente. Outra sugestão vista ao redor é editar o, /etc/grub.d/00_headermas isso pode solicitar a intervenção do usuário nas atualizações.

A solução mais fácil é definir a variável não documentada GRUB_RECORDFAIL_TIMEOUT em /etc/default/grub. Por exemplo:

GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT

Editar

Veja esta resposta para mais detalhes.


Muito obrigado, é exatamente isso que eu estava procurando!
Avio 17/10

Depois de fazer a alteração, execute também update-grubpara gerar o /boot/grub/grub.cfgarquivo atualizado
Colt

Não mate a funcionalidade de recordfail! Você deseja um tempo limite mais longo se houver uma falha na inicialização. Para manualmente clara, tudo que você precisa é a resposta de @ sniffski: grub-editenv create. No entanto, pode haver algum outro motivo para recordfailse preparar ...
Cameron Tacklind 29/11

6

Usar:

grub-editenv create

Isso limpará o arquivo do ambiente grub e deverá ser inicializado claramente na próxima vez.


Muito obrigado por compartilhar. Isso funcionou via SSH, o que fez o meu dia ficar preso no servidor sem cabeça do grub.
Geppettvs D'Constanzo

grub-editenv - unset recordfailfunciona bem e não afeta outros envs que possam ser configurados
Cameron Tacklind 29/11

2

mude GRUB_TIMEOUT=10para zero

Este é o meu arquivo de configuração:

GRUB_DEFAULT="Ubuntu, with Linux 3.2.0-30-generic-pae"
#GRUB_HIDDEN_TIMEOUT=10
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

Primeiro, escreva o nome do sistema operacional no qual deseja inicializar diretamente. O meu é o Ubuntu. Então você escreverá como noGRUB_DEFAULT="Ubuntu, with Linux x.x.x-xx-generic-pae"

então usei 1 segundo no GRUB_TIMEOUT=para me dar 1 segundo antes de selecionar o sistema operacional padrão (se eu precisar inicializar em outro sistema operacional, por exemplo, o Xubuntu)

como GRUB_CMDLINE_LINUX_DEFAULT=""se você removê- quite splashlo, ele mostrará textos em vez do logotipo do Ubuntu durante o processo de inicialização (eu gosto desta maneira: P)


Existe outra solução:

Existe um programa chamado boot-repair que ajuda na configuração com uma GUI.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

como você pode ver na imagem. há uma caixa chamada Unhide boot menu. Basta desmarcar a caixa e pressionar appy. Você pode acessar isso clicando na seta de opções avançadas.

instalar o reparo de inicialização

sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get update

sudo apt-get install -y boot-repair

e, em seguida, execute boot-reapira partir do terminal ou do painel.


3ª solução:

Você pode usar um aplicativo GUI fácil de usar chamado grub-customizer para facilitar sua vida. Como o nome sugere, você pode fazer muito mais do que apenas reordenar as entradas do menu Grub com ele.

Você pode instalá-lo:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

insira a descrição da imagem aqui

como você pode ver no menu, existe a show menuopção. Desmarque e veja se funciona


Nenhuma mudança. : - / Eu pensei que GRUB_DEFAULT deveria ser um # numérico de acordo com a lista no menu? Alterar GRUB_TIMEOUT para 0 não ajudou.
Eric

@ Eric, você pode usar duas maneiras: se você souber o local do seu sistema operacional na lista do grub, poderá usar um número. Mas, para mim, tenho 4 distribuições Linux e 1 Windows, além do memTest e da recuperação. Portanto, é difícil para mim memorizar os lugares deles :) apenas para ter certeza (eu sei que você pode ter feito isso, mas apenas para ter certeza: P). Você executou o grub-updateapós alterar os valores?
Suhaib 18/10/12

Eu executei o grub-update depois de alterar os valores. : - /
Eric

Eu instalei e usei o aplicativo de reparo de inicialização que você forneceu, ele funciona na primeira reinicialização. Depois disso, o menu GRUB está de volta e fica lá até eu pressionar uma tecla. Obrigado por toda a sua ajuda, eu realmente aprecio isso. Não sei para onde ir a partir daqui ...
Eric

Ok @Eric eu encontrei uma terceira solução verificá-lo
Suhaib

2

GRUB_HIDDEN_TIMEOUTe as GRUB_HIDDEN_TIMEOUT_QUIETopções estão obsoletas. Então comente esses.

Para pular o menu e mostrá-lo apenas quando pressionado ESC, adicione:

GRUB_TIMEOUT_STYLE='countdown'
GRUB_TIMEOUT=1

Amostra /etc/default/grub

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_TIMEOUT_STYLE=countdown
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

'GRUB_TIMEOUT_STYLE' : Se esta opção estiver configurada para 'contagem regressiva' ou 'oculta', antes de exibir o menu, o GRUB aguardará o tempo limite definido por 'GRUB_TIMEOUT' para expirar. Se ESC for pressionado durante esse período, ele exibirá o menu e aguardará a entrada.


ele deveria , mas tudo que faz é mostra o menu padrão para 1 segundo. Pelo menos em uma nova marca 16.04
frnhr 22/10/19

1

Eu poderia resolver esse problema adicionando a seguinte linha ao /etc/default/grub

GRUB_DISABLE_OS_PROBER=true

... e depois correndo sudo update-grub.

Explicação: O arquivo /boot/grub/grub.cfgé gerado executando update-grubusando os arquivos em /etc/grub.de /etc/default/grub. Portanto, você não deve editar grub.cfg, mas pode ser útil descobrir por que o tempo limite está definido. Pesquise as linhas que começam com set timeout=e, em seguida, procure a próxima linha que começa com ### END /etc/grub.d/ .... Isso pode lhe dar dicas de qual script define o tempo limite. No meu caso, o script os-prober foi responsável pelo tempo limite. Acontece que há um tempo limite de 10s codificado no /etc/grup.d/30_os-proberqual não é definido por GRUB_TIMEOUT. Você pode desativar o os-prober GRUB_DISABLE_OS_PROBER=trueou editar /etc/grup.d/30_os-proberou usar GRUB_OS_PROBER_SKIP_LISTpara pular algumas partições do disco rígido (30_os-prober é usado quando outro sistema operacional é encontrado em algum lugar). Veja estas perguntas e respostas para obter detalhes. Como outros apontaram, outro motivo pode ser o recorde , nesse caso definido GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT.


0

Eu tive o problema de o menu grub aparecer sempre depois de usar o AUFS (unionfs) para colocar o sistema de arquivos raiz somente para leitura. Eu tinha que pressionar fisicamente a tecla Enter no servidor após cada inicialização. Eu segui as instruções aqui: desativar o menu grub 2 . Desde então, não tive problemas.

Edite o /boot/grub/grub.cfg e altere:

if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi

Para

if [ ${recordfail} = 1 ]; then
  set timeout=1
else
  set timeout=10
fi

O antes e o depois na sua solução são exatamente os mesmos.
RawwrBag

set timeout=-1não é o mesmo que set timeout=1. O primeiro é "espere para sempre" e o segundo é "espere um segundo".
22615 Jeff McJunkin

0

Meu Ubuntu sempre teve um tempo limite de 30 segundos ou eu teria definido um valor ou não. Aqui está a seguir como eu descobri que o recorde de falha foi o valor que faltava .

1. Verifique o script grub real /boot/grub/grub.cfg

IMHO, a melhor maneira de verificar o que o Grub fará, é abrir /boot/grub/grub.cfg. É o script gerado automaticamente grub-mkconfigusando modelos /etc/grub.de configurações de /etc/default/grub.

Na linha 109, você verá algo como:

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=30 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

No meu caso, com a ajuda desse script gerado, eu pude descobrir que a recordfailvariável não estava definida.

2. Se a recordfailvariável estiver desabilitada, configure-a

Abra /etc/default/grubno seu editor de texto favorito (por exemplo, vim) e defina a variável GRUB_RECORDFAIL_TIMEOUTpara um determinado valor, por exemplo, 5 segundos.

Seu arquivo de configuração deve se parecer com:

GRUB_DEFAULT=0
GRUB_TIMEOUT=3
GRUB_TIMEOUT_STYLE=hidden
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_RECORDFAIL_TIMEOUT=5

3. Atualize a configuração para executar com update-grub

Última etapa, atualize a configuração para executar update-grub. Por enquanto, o GRUB2 usará o tempo limite definido. Este comando irá gerar novamente o /boot/grub.cfgarquivo.

4. Verifique o resultado do script gerado

Novamente, abra /boot/grub.cfge verifique o resultado na linha 109:

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=5 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

Observe que o valor na linha 109 agora é 5 em vez de 30 como antes.

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.