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?


@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.


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! :-(


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.