Como posso configurar o grub (ou um bootloader diferente) para usar teclas modificadoras?

2

Para esclarecer, eu estou querendo Windows dual boot e uma distribuição Linux. Eu já sei como configurar meu laptop para fazer isso. No entanto, não quero que o menu do grub seja exibido na inicialização. Eu gostaria que ele inicializasse automaticamente o Windows por padrão, a menos que uma tecla modificadora fosse pressionada na inicialização (ctrl, por exemplo). Se a tecla modificadora for pressionada, ela inicializará a distribuição Linux.

Isso é possível?

    
por bw. 12.04.2013 / 14:49

3 respostas

2

Este tópico no AskUbuntu aborda um problema quase idêntico. Aparentemente, você pode ocultar o diálogo do grub e ativá-lo pressionando shift e deixando o sistema operacional padrão inicializar após o tempo definido através da entrada GRUB_TIMEOUT em seu grub.cfg.

GRUB_DEFAULT= 2 #depends on which entry Windows is
hiddenmenu #this hides the menu
GRUB_TIMEOUT=3 #example for 3 seconds
    
por 12.04.2013 / 15:12
2

Como você escreve no seu comentário, isto é para uma nova instalação, então eu assumo que virá com grub2 .

Na verdade, sempre inicializar o Windows com o grub1 foi difícil na minha experiência. A adição de um novo kernel, à lista de versões de kernels para selecionar (por exemplo, após uma atualização do kernel do Linux), mudaria a posição da entrada do Windows. Isso causou um GRUB_DEFAULT codificado para outra coisa (na maioria das vezes, o teste de memória inserido pelo grub installre entre a lista de kernels do Linux e a entrada do Windows na lista). Com o grub1, resolvi esse problema com um script que removeu qualquer um, exceto os últimos 3 kernels, mantendo assim a posição do Windows fixa.

Portanto, certifique-se de usar o grub2, pois isso facilita as coisas devido a dois recursos:

  • O grub2 permite os submenus , para que o valor de GRUB_DEFAULT não seja não se torna inválido após uma atualização do kernel (que envia kernels antigos no submenu)
  • O grub2 gera as entradas do menu através de scripts (em /etc/grub.d no Ubuntu)

Eu recomendo fazer a alteração nos scripts para forçar o Windows a ser a primeira opção no menu: em /etc/grub.d rename 30_os-prober (que gera a entrada do windows) para algo como% código%. Este script é então executado antes de 09_os-prober , pois os scripts são executados classificados por nome de arquivo e a entrada do Windows sempre estará no topo. E o topo é o padrão, se nada mais for especificado.

Execute 10_linux para criar o menu em update-grub , para que ele sempre inicie o Windows.

Por não ter o menu a não ser mostrado, você quer usar /boot/grub e alguns outros em GRUB_HIDDEN_TIMEOUT :

# wait 5 seconds for a key-press before showing the menu
GRUB_HIDDEN_TIMEOUT=5
# do not show the countdown counter
GRUB_HIDDEN_TIMEOUT_QUIET=true
# after hidden timeout is done wait 0 seconds -> boot without menu
GRUB_TIMEOUT=0

A combinação acima aguarda 5 segundos sem saída (contagem regressiva) ou um menu e, em seguida, inicializa a primeira entrada. (Novamente: execute /etc/grub/default depois de alterar isso).

    
por 13.04.2013 / 07:13
2

No Grub2:

set timeout=0
if keystatus --ctrl; then
    set timeout=15
fi

Se o ctrl for pressionado, ele exibirá o menu por 15 segundos antes de inicializar a entrada padrão; Se o ctrl não for pressionado, ele inicializará a entrada padrão imediatamente, sem nenhum menu.

Para obter detalhes, consulte info grub no keystatus. Existem algumas ressalvas, pode não funcionar em todas as plataformas. Alternativamente para --ctrl, ele também suporta --alt e --shift para que você possa tentar aqueles que devem --ctrl não funcionar.

Como alternativa, você pode colocar o Grub em um pen drive USB. Portanto, o Windows inicializaria diretamente quando não estivesse conectado. Você também pode colocar vários Live CDs e coisas como memtest ou freedos no pendrive. Coisa muito útil para ter em sua carteira:)

    
por 13.04.2013 / 13:58