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

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

Para esclarecer, estou querendo inicializar duas vezes o Windows e uma distribuição Linux. Já sei como configurar meu laptop para fazer isso. No entanto, não quero que o menu 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, a distribuição Linux será inicializada.

Isso é possível?

Responder1

Este tópico no AskUbuntuaborda um problema quase idêntico. Aparentemente, você pode ocultar a caixa de diálogo do grub e acessá-la pressionando shifte, caso contrário, deixar o sistema operacional padrão inicializar após o tempo definido por meio da GRUB_TIMEOUTentrada 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

Responder2

Conforme você escreve em seu comentário, isto é para uma nova instalação, então presumo que virá comgrub2.

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 kernel para seleção (por exemplo, após uma atualização do kernel do Linux), mudaria a posição da entrada do Windows. Isso causou um ponto codificado GRUB_DEFAULTpara 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 eliminava todos os três kernels, exceto os três mais recentes, mantendo assim a posição do Windows fixa.

Portanto, certifique-se de usar o grub2, pois ele torna as coisas mais fáceis devido a dois recursos:

  • grub2 permitesubmenus, para que o valor de GRUB_DEFAULTnão se torne inválido após uma atualização do kernel (que coloca os kernels antigos no submenu)
  • grub2 gera as entradas do menu atravésroteiros( /etc/grub.dno Ubuntu)

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

Execute update-grubpara criar o menu em /boot/grub, para que ele sempre inicialize o Windows.

Quanto a não ter o menu para não ser mostrado você deseja usarGRUB_HIDDEN_TIMEOUTe alguns outros em /etc/grub/default:

# 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 espera 5 segundos sem saída (contagem regressiva) ou menu e então inicializa a primeira entrada. (Novamente: execute update-grubdepois de mudar isso).

Responder3

No Grub2:

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

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

Para obter detalhes, consulte info grubkeystatus. Existem algumas ressalvas: pode não funcionar em todas as plataformas. Alternativamente a --ctrl, ele também suporta --alt e --shift, então você pode tentar se --ctrl não funcionar.

Alternativamente, você pode colocar o Grub em um pendrive. Assim, 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 na carteira :)

informação relacionada