Como definir o tempo limite do GRUB para 0 no Ubuntu 18.04

11

Tentei atualizar meu arquivo de configuração do grub para atingir o tempo limite para 0, para que o sistema operacional inicie rapidamente. Modifiquei o /etc/default/grubarquivo de configuração no meu Ubuntu 18.04 e depois executei:

sudo update-grub

e não funcionou. Eu também corri:

sudo grub-mkconfig
sudo update-grub

mas eles não funcionaram.

Pesquisei bastante na web para resolver esse problema, mas todos os guias dizem para executar o comando update-grub para atualizar o grub pelo /etc/default/grubarquivo de configuração. Não sei se o Ubuntu 18.04 lida com arquivos grub de uma maneira diferente, mas não consigo atualizar meu grub com meus parâmetros.

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=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
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"
Bob91
fonte
3
Edite sua pergunta e inclua seu arquivo de configuração do grub modificado. Caso contrário, estamos apenas tentando adivinhar o que você fez.
Organic Marble
Você tem outras distribuições instaladas (inicialização dupla)?
mook765
não funcionou média que o meu tempo limite grub ainda está definido para 10 seg, como por padrão @Melebius
Bob91
Eu tenho janelas no mesmo ssd e outras distros instaladas em outro disco rígido, mas no mês passado eu tinha o fedora 27 (em vez do ubuntu 18) e funcionou quando alterei o arquivo de configuração do grub, então acho que as outras distros não são as causas de esse comportamento @ mook765
Bob91 #
1
Você poderia executar o Boot-Info e editar sua pergunta para incluir um link para o log de informações resultante? Obrigado.
David Foerster

Respostas:

12

No /boot/grub/grub.cfgarquivo, existe uma condição, quase no final do arquivo, que define o tempo limite como 10 se o tempo limite estiver definido como 0. Em outras palavras, se você definir o tempo limite como 0 no seu /etc/default/grube depois atualizar o grub, a condição acima redefina-o para 10 segundos.

if [ "${timeout}" = 0 ]; then
     set timeout=10
fi

No entanto, /boot/grub/grub.cfgé um arquivo somente leitura e não consigo remover essa condição. Fiz alguns testes com valores diferentes do tempo limite em /etc/default/grub. Tentei com 1ms (0,001), 0,1s e 1s e descobri que valores abaixo de 1 (como 0,1 e 0,001) funcionam da mesma maneira e quase como o tempo limite definido como 0.

Bob91
fonte
work in the same way and almost like timeoutisso porque a matemática no bash suporta apenas números inteiros. O menor tempo limite que faria diferença é 1.
Marcin Orlowski
5

No meu caso, o problema era que meu sistema não suportava "recordfail", o que fazia com que um bloco separado fosse adicionado ao grub.cfg, cujo tempo limite era de 30 segundos. O código relevante em /etc/grub.d/00_header:

if [ "$recordfail_broken" = 1 ]; then
  cat << EOF
if lsefi; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
  if [ x\$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi
EOF

A correção é simplesmente adicionar um valor para GRUB_RECORDFAIL_TIMEOUTin /etc/default/grube executar update-grubnovamente. Por exemplo:

GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

# Adjusted timeout for system which doesn't support recordfail
GRUB_RECORDFAIL_TIMEOUT=2

# 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"
Alex Malinovich
fonte
3

Como as outras respostas dizem, descomente GRUB_HIDDEN_TIMEOUTe corra update-grub. Então comente o

if [ "${timeout}" = 0 ]; then
  set timeout=10
fi

seção em /boot/grub/grub.cfg. No vim, você pode simplesmente substituir a propriedade somente leitura por um ponto de exclamação :x!. Ou você pode correr

sudo chmod +w /boot/grub/grub.cfg
sudo vim /boot/grub/grub.cfg
sudo chmod -w /boot/grub/grub.cfg

ter permissão de gravação temporariamente ao editar o arquivo.

asantas93
fonte
3
Você está certo, mas acho que toda vez que você atualizar o grub (manualmente ou quando houver qualquer atualização do sistema operacional) o /boot/grub/grub.cfgserá recriado com a condição acima.
Bob91
2
Isso é verdade, o arquivo é substituído na atualização, como experimentei recentemente.
asantas93
1

Você pode definir GRUB_TIMEOUTpara 0.

O valor do tempo limite de substituição da peça está escrito na ajust_timeoutfunção na parte superior de /etc/grub.d/30_os-prober.

ajust_timeout () {
...
if [ "\${timeout}" = 0]; then
  set timeout=10
fi
...
}

Portanto, você pode definir o valor editando o arquivo e comente o if-block.

hóspede
fonte
1

Você pode definir GRUB_TIMEOUTpara -1.

Ex:GRUB_TIMEOUT="-1"

Giceu Cassiano
fonte
'GRUB_TIMEOUT' Inicialize a entrada padrão tantos segundos depois que o menu for exibido, a menos que uma tecla seja pressionada. O padrão é '5'. Defina como '0' para inicializar imediatamente sem exibir o menu ou '-1' para aguardar indefinidamente. do comandoinfo -f grub -n 'Simple configuration
Vijay
1

Remova o comentário GRUB_HIDDEN_TIMEOUT=0e execute update-grubnovamente.

hiigaran
fonte
ele não funciona
Bob91
GRUB_HIDDEN_TIMEOUT = -1
kuhajeyan
1
GRUB_HIDDEN_TIMEOUT=-1trabalhou no Ubuntu 18.10.
Manish Raj
0

Podemos simplesmente adicionar a linha

set timeout=0

para /etc/grub.d/40_custom, tornar o arquivo executável com

chmod +x /etc/grub.d/40_custom

e corra

sudo update-grub

para gerar o novo /boot/grub/grub.cfgarquivo. O set timeoutcomando que adicionamos é o último set timeoutcomando /boot/grub/grub.cfgagora, é isso que conta.

mook765
fonte
-1

A solução é adicionar

GRUB_RECORDFAIL_TIMEOUT=0

para /etc/default/grub.

Todas as outras soluções serão redefinidas nas atualizações do grub.

Pilot6
fonte