Como posso ocultar meu menu do GRUB E fazer com que as teclas shift ou esc mostrem o menu oculto do GRUB no momento da inicialização

10

Estou executando o Ubuntu 16.10 e estou tentando ocultar o menu GRUB no momento da inicialização / inicialização e desejo que o menu apareça apenas quando eu pressionar as teclas Shiftou Esc.

Altero as opções apropriadas /etc/default/grube ele ainda não oculta o menu.

Ao pesquisar isso, encontrei este post do menu oculto do GRUB de 2013 não funcionando, o que indica que o problema existe há algum tempo e sugere uma alteração na /etc/grub.d/30_os-proberqual eu prefiro não fazer. Esse código sugere que, desde que encontrou vários SOs, ele definirá o GRUB_TIMEOUT=10mesmo.

Aqui está um trecho do que tenho agora /etc/default/grub... um menu com uma contagem regressiva de 10 segundos ...

GRUB_DEFAULT = salvo
GRUB_SAVEDEFAULT = true
GRUB_HIDDEN_TIMEOUT_QUIET = true
# GRUB_HIDDEN_TIMEOUT = 0
GRUB_TIMEOUT = 10
GRUB_DISTRIBUTOR = `lsb_release -i -s 2> / dev / null || eco do Debian`
GRUB_CMDLINE_LINUX_DEFAULT = "respingo silencioso"

Se eu tire #GRUB_HIDDEN_TIMEOUT=0, então sudo update-grubinsiste para que eu também definir GRUB_TIMEOUT=10a GRUB_TIMEOUT=0. Eu faço isso e ainda vejo o menu GRUB.

Em terminal, digitar info -f grub -n 'Simple configuration'descreve as várias opções e, no final das informações, mostra que alguns dos comandos atuais foram depreciados e sugere que as substituições mais recentes são melhores.

Alguém sabe como posso esconder meu menu do GRUB na 16.10 E reconhecê-lo Shiftou Escteclas no momento da inicialização?

heynnema
fonte
Estou feliz que você perguntou isso. Também não consegui que o meu funcionasse, e isso confirma que é por causa da caixa ser um carregador duplo.
Organic Marble
11
@OrganicMarble O problema tem a ver com vários sistemas operacionais. Para testar, modifiquei essa parte do código em /etc/grub.d/30_os-prober e, embora não tenha menu, não fui capaz de forçar um menu com shift ou esc no momento da inicialização. Ainda trabalhando nisso.
23417 heynnema
Adicionei mais algumas informações sobre erros relacionados ao seu na minha resposta. Eles podem ajudá-lo a entender a natureza do problema mais detalhadamente. Eu também estou olhando para código Grub2 - tentando ajudar :)
xtrchessreal
Tente usar o Grub Customizer, se você não tiver, na guia Configurações gerais nesta ordem - 1 Desmarque a caixa "procurar outros sistemas operacionais" e 2 Desmarque "mostrar menu" e salve. Teste isso e veja se "Shift" exibirá o menu e também o que acontece se nada for pressionado.
Xtrchessreal
Entendo que você prefere não modificar, /etc/grub.d/30_os-probermas realmente não vejo o mal. Você pode manter uma cópia em backup ou #Comentar suas alterações para poder revertê-las, se necessário. A solução alternativa encontrada parece a solução mais razoável no momento.
Elder Geek

Respostas:

7

OK pessoal, aqui está a resposta ... para obter um menu oculto do GRUB em configurações de inicialização dupla ... duas edições ... e um sudo update-grub...

Editar # 1

Para obter um menu oculto do GRUB em uma configuração de inicialização múltipla, primeiro precisamos editar /etc/default/grub. Abra este arquivo usando o comando abaixo:

sudo editor /etc/default/grub

Quando o arquivo estiver aberto, substitua essas linhas

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

com estas:

GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT_STYLE=countdown
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=3

Isso fará com que o GRUB exiba um cronômetro de contagem regressiva de 3 segundos na tela. Ao fazer isso, um usuário pode pressionar a Esctecla para exibir o menu padrão. Caso contrário, o sistema operacional padrão será inicializado.

Se você deseja que o sistema operacional padrão seja definido como o sistema operacional inicializado pela última vez, adicione as duas linhas abaixo sob o "GRUB_TIMEOUT = 3" mostrado acima:

GRUB_DEFAULT=saved    # change an existing line to this
GRUB_SAVEDEFAULT=true # add this line

Editar # 2

Em seguida, o prober do SO precisa ser atualizado para desativar o recurso quick_boot. Para fazer isso, abra /etc/grub.d/30_os-proberem seu editor favorito e altere a abaixo da linha (linha 23 em 17.04), substituindo o 1com um 0:

quick_boot="1"

Quando você terminar, a linha deve ser como:

quick_boot="0"

Salve os arquivos e execute o comando abaixo para reconfigurar o carregador de inicialização e aplicar suas alterações:

sudo update-grub
heynnema
fonte
Isso foi feito! +1.
Organic Marble
Parece uma boa solução :) Agora eu tenho uma pergunta simples sobre isso. Se você alterar o GRUB_TIMEOUT de "3" para "1", inicializará mais rapidamente. E você pode fornecer links, se houver, onde é possível ler como esse código funciona. Eu quero entender o que esse código está fazendo e sua sequência de chamadas de função etc. Muito apreciado. É bom quando você pode resolver suas próprias perguntas - bom trabalho nisso.
Xtrchessreal
@xtrchessreal sim, alterar o 3 para 1 torna-o 2 segundos mais curto. Imaginei que 3 segundos eram tempo suficiente para eu passar minha mão à tecla Esc, se quisesse. Você pode procurar info -f grub -n 'Simple configuration'mais informações.
heynnema
+1 para Q e +1 para A. Nas últimas duas noites, eu pesquisei isso com todos os tipos de modificações no cabelo para 30_os, criando 31_blah_blah e criando 40_custom, sem sucesso. Isto é na AU, ArchLinux, Fedora e em muitos outros lugares. Se você quiser mais votos, sugiro rastrear todas as respostas erradas aqui na AU (existem muitas) e votar para fechá-las como duplicatas desta, depois faça ping em mim ( @ me) na sala de bate-papo geral da UA com um link para a duplicata e eu também votarei. Obrigado por esta excelente pesquisa e solução de trabalho! :)
WinEunuuchs2Unix
@ WinEunuuchs2Unix obrigado pelo bom comentário e pelos votos! Eu mesmo fiz muita pesquisa antes de eu descobri que ninguém tinha uma solução elegante, ou qualquer solução em tudo ... mas eu estava determinado :-)
heynnema
3

Acredito que esse problema possa ser causado por vários sistemas operacionais, de acordo com este trecho do wiki do Grub2 :

Se nenhum outro sistema operacional for detectado, o GRUB 2 será inicializado diretamente no sistema operacional padrão e nenhum menu será exibido. Se outro sistema operacional for detectado, o menu GRUB 2 será exibido.

E

É possível salvar um sistema operacional executando sudo grub-set-default se GRUB_DEFAULT = save estiver definido em / etc / default / grub. Também pode ser salvo se GRUB_SAVEDEFAULT = true também estiver definido em / etc / default / grub. Nesse caso, o sistema operacional padrão permanece até que um novo sistema operacional seja selecionado manualmente no menu GRUB 2 ou o comando grub-set-default seja executado.

O Wiki do Grub2 também declara: Nota: Há um bug confirmado de longa data no recurso de menu oculto do GRUB 1.97 ao GRUB 1.99. O menu pode não ocultar conforme especificado na descrição nesta página. Embora a edição do script 30_os-prober possa corrigir esse problema, está além do escopo desta página.

Como solução, você pode definir o GRUB_TIMEOUT="1" e você verá o menu apenas por 1 segundo. Se eu precisar mudar para outro sistema operacional, basta pressionar a tecla de seta para baixo dentro desse segundo e o menu aparecerá até que eu faça uma escolha.

Pode haver um problema de sintaxe potencial associado ao erro. Eu não sou um especialista em Grub2, mas no meu arquivo grub todas as linhas de comando terminam com = "alguma configuração citada" . Lembro dos meus dias de codificação que "aspas" passavam uma string em que, como aspas não passavam valores numéricos simples para as variáveis. Eu não sou UP em novas técnicas de código. Por exemplo, aqui estão algumas das minhas saídas grub:

# 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="Ubuntu"
#GRUB_HIDDEN_TIMEOUT="0"
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=""

# 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"

Eu estou olhando para este Grubbug :) para obter mais informações, além deste bug. Ambos são relacionados ao Grub2 com 2 anos de idade. Parte disso pode estar relacionada ao código MBR antes da transferência para o Grub2

xtrchessreal
fonte
Obrigado pela sua resposta. Eu já estou usando o método SAVEDEFAULT. TIMEOUT = 1 certamente diminui o tempo de apresentação do menu. O problema tem a ver com vários sistemas operacionais. Para testar, modifiquei essa parte do código /etc/grub.d/30_os-probere, embora não tenha menu, não consegui forçar um menu com shift ou esc no momento da inicialização.
21817 heynnema
Esses erros que você vinculou não parecem relevantes ou estou perdendo alguma coisa?
Elder Geek
@ElderGeek em relação ao bug # 1401318, a pessoa à qual o bug foi atribuído a TJ explica o comportamento do MBR ao Grub, quando ele declara "sleep --interruptable $ timeout" etc. Se você ler todas as declarações dele nos comentários do bug, acho você verá qual é pelo menos parte do problema. Ele também está atribuído ao bug # 425979, que é semelhante em questões. Ambos os bugs lidam com a tecla Shift pressionada para fazer com que o menu Grub NÃO funcione quando definido como oculto. É isso que o OP também está tentando descobrir. Espero que isso esclareça por que os links estão na minha resposta postada.
Xtrchessreal
Perdoe minha confusão. Li a pergunta dizendo "como posso esconder meu menu do GRUB" Obrigado por esclarecer. Eu devo ter perdido esse comentário.
Elder Geek
@ElderGeek, na verdade, a pergunta é: "como posso ocultar meu menu do GRUB E fazer com que as teclas shift ou esc mostrem o menu oculto do GRUB no momento da inicialização". Eu consegui esconder. Não recebi as teclas shift ou esc para trabalhar. Aparentemente, esse problema remonta a 2013 ou antes e afeta apenas as configurações de inicialização múltipla.
heynnema
3
  1. Eu acho que você quer tentar 'tudo' disponível via /etc/default/grub. Você leu este link,

    help.ubuntu.com/community/Grub2/Setup#Configuring_GRUB_2

  2. Sugiro que você tente remover as seguintes linhas de /boot/grub/grub.cfg,

    ...
    set timeout_style=menu
    if [ "${timeout}" = 0 ]; then
      set timeout=10
    fi
    ### END /etc/grub.d/30_os-prober ###
    

    Sim, eu sei, você precisaria fazer isso toda vez update-grubque executar, mas poderá criar um script para isso.

sudodus
fonte
Obrigado pela sua resposta. Vou dar uma olhada nesse link. Eu também havia encontrado uma maneira de modificar o /etc/grub.d/30_os-prober para que eu não tivesse que editar o grub.cfg a cada vez.
heynnema
Isso faz sentido para mim, como em um sistema de inicialização múltipla parece que este código altera a volta de tempo limite para 10 de 0 Que parece HIDDEN_TIMEOUT derrota ....
Elder Geek
@heynnema você poderia postar suas alterações no os-prober? Quando olhei para o link na sua pergunta e o comparei com o código no meu os-prober, os números de linha não faziam sentido; portanto, presumo que o os-prober mudou desde então, e tive medo de mexer com ele.
Organic Marble
11
@OrganicMarble veja a atualização para minha pergunta. Talvez você possa experimentar alguns / todos os meus mods e ver o que você propõe.
heynnema
@sudodus, por favor veja a minha resposta
heynnema