Não é possível obter o menu GRUB2 oculto para aparecer?

1

Eu tenho um sistema dual boot (Ubuntu / Ubuntu) e configurei o GRUB2 para ocultar o menu de inicialização, a menos que eu pressione a tecla shift (ou outra tecla). Aqui está minha configuração em / etc / default / grub:

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=3
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=""

No entanto, não importa o que eu faça, ou qual tecla eu pressiono, ou quando pressiono, ele inicializa na opção padrão do SO e nunca vejo o menu GRUB. Eu sempre faço um sudo update-grub depois de alterar essas opções.

Eu tentei estender o tempo limite oculto para 15 segundos e meu sistema não mudou ... é como se esse valor não estivesse sendo respeitado - o sistema inicializa imediatamente.

Eu tenho uma configuração de software RAID 1, mas cada unidade é espelhada e ambos têm o Grub, então não pode ser isso.

Alguma idéia?

    
por HDave 19.07.2012 / 18:54

1 resposta

2

Altere GRUB_TIMEOUT para algum valor, por exemplo, 10, atualize o grub e seu problema será resolvido. Reinicie e pressione a tecla Shift.

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=3
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=""

Consulte Arquivos Grub2 e Opções

Se isso não funcionou para você, existe outra maneira de fazer isso, que envolve a alteração do arquivo /etc/grub.d/30_os-prober . Depois de fazer o backup do arquivo, fiz os seguintes passos e funcionou bem para mim.

Então, abra o terminal e escreva

sudo gedit /etc/grub.d/30_os-prober

Um arquivo será aberto. Altere o seguinte código:

make_timeout () {
  if [ "x${found_other_os}" = "x" ] ; then
    if [ "x" != "x" ] ; then
      if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
    verbose=
      else
    verbose=" --verbose"
      fi

      if [ "x" = "x0" ] ; then
    cat <<EOF
if [ "x${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep$verbose --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
EOF
      else
    cat << EOF
if [ "x${timeout}" != "x-1" ]; then
  if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
    set timeout=0
  fi
fi
EOF
      fi
    fi
  fi
}

adjust_timeout () {
  if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
    cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
EOF
    make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}"
    echo else
    make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
    echo fi
  else
    make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
  fi
}

Para isso:

adjust_timeout () {
        cat <<EOF
        if keystatus --shift; then
          set timeout=-1
        else
          set timeout=0
        fi
EOF
}

E salve o arquivo.

Depois de executar sudo update-grub , desligue o sistema.

Agora, quando você iniciar o sistema novamente, terá que pressionar e segurar a tecla Shift imediatamente após pressionar o botão liga / desliga. Isso vai levar você ao Grub. Se você não pressionar a tecla Shift, você será inicializado em seu sistema operacional padrão automaticamente. Boa sorte!

Nota : Se algo der errado ou algum comportamento inesperado ocorrer, altere o código de volta ao original usando o arquivo de backup e tudo voltará ao normal novamente.

    
por Laphanga 19.07.2012 / 22:50