Como controlar remotamente qual SO Grub inicializa?

10

Considere a seguinte configuração de inicialização dupla:

  • O Grub está instalado no /dev/sda
  • /dev/sda1 está montado como /boot
  • /dev/sda6 está montado como /
  • O Windows 10 está instalado para /dev/sdb2

Como está agora, o Grub seleciona o Ubuntu por padrão quando inicializa e eu consigo fazer login remotamente via SSH. Também é possível selecionar o Windows quando o Grub for iniciado e eu posso efetuar login remotamente via RDP.

O problema é que não tenho como selecionar qual SO inicializar quando não estou fisicamente presente.

Esta pergunta descreve um método para o Grub inicializar automaticamente o último sistema operacional selecionado. No entanto, isso não vai funcionar . Se eu selecionar o Windows, não tenho como reiniciar remotamente o PC e inicializar o Ubuntu.

Existe uma maneira de controlar remotamente qual SO inicializa?

Nathan Osman
fonte
@Tkkat do lado do Windows? (Posso ser executando o Windows e ter algum tipo de programa ou script instruir Grub para iniciar Ubuntu?)
Nathan Osman
@ Takkat oh, entendo o que você está dizendo ... isso pode funcionar.
Nathan Osman
Você já pensou em inicializar via PXE? Em seguida, você pode deixar sua configuração de inicialização em outro servidor que possa acessar a qualquer momento e ajustar de acordo e, em seguida, reiniciar a outra máquina para iniciar o sistema operacional especificado?
Ziazis

Respostas:

11

Podemos reiniciar para uma determinada entrada de inicialização do menu Grub usando o grub-reboot . Isso também pode ser feito a partir de uma sessão remota, por exemplo, via SSH.

Para inicializar em outro sistema operacional, escolha a posição que está representada no menu Grub a partir de 0:

sudo grub-reboot <num>

insira a descrição da imagem aqui

Nesse caso, meu Windows está na posição 4. Então, ao emitir

sudo grub-reboot 4 && sudo reboot

A máquina será reiniciada no Windows após o tempo limite definido nas configurações do Grub.

Após a reinicialização do Windows, a máquina inicializa no sistema operacional padrão. Isso pode ser definido com

sudo grub-set-default <num>

Para fazer isso funcionar, talvez tenhamos que definir GRUB_DEFAULT=savedem nosso, /etc/default/grubmas no meu sistema também funcionou com as configurações padrão.

Infelizmente, a reinicialização do Windows a partir do Windows não pode ser feita com isso.

Takkat
fonte
3

Outra idéia, graças à resposta de takkat :

  1. A inicialização padrão é o Ubuntu
  2. grub-reboot Nonde Nestá a entrada de inicialização do Windows
  3. Reiniciar o Windows trará você de volta à inicialização padrão: Ubuntu.

Desvantagem : para reiniciar o Windows, você deve reiniciar duas vezes: Reinicie o Windows, deixe o Ubuntu inicializar e grub-reboot Nnovamente! :-(

Fabby
fonte
Mais idéias, por favor. :)
AB
1

Você pode definir o sistema operacional padrão com o grub, dependendo da hora. Consulte GRUB pode ser agendado? Isso significa: alterar a "entrada" padrão (login automático) em períodos definidos automaticamente? . Portanto, por exemplo, você pode configurar o grub para inicializar no Windows quando $ MINUTE for ímpar e inicializar no Linux quando $ MINUTE for par.

insmod datehook
if [ $MINUTE -eq 0 -o $MINUTE -eq 2  -o $MINUTE -eq 4 -o $MINUTE -eq 6 -o $MINUTE -eq 8]; then
    set default="Ubuntu"
else
    set default="Windows"
fi

Se você deseja um sistema operacional específico; apenas espere até a hora chegar.

O uso desse método deve levar em consideração o tempo necessário para chegar ao Grub. Usar um período de 5 minutos é provavelmente mais confiável.


Eu acho que também é possível alternar entre as entradas de inicialização. Algo como :

if [ $default = "Ubuntu" ]; then
  set default="Windows"
else
  set default="Ubuntu"
fi

quando o grub está configurado para lembrar o último SO inicializado ( Como fazer com que o grub2 se lembre da última opção? )

Se o seu PC não inicializar no sistema operacional desejado, basta reiniciar.

Máx.
fonte