¿Cómo controlar remotamente qué arranque de OS Grub?

10

Considere la siguiente configuración de arranque dual:

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

Tal como está ahora, Grub selecciona Ubuntu de forma predeterminada cuando se inicia y puedo iniciar sesión de forma remota a través de SSH. También es posible seleccionar Windows cuando se inicia Grub y puedo iniciar sesión de forma remota a través de RDP.

El problema es que no tengo forma de seleccionar qué sistema operativo iniciar cuando no estoy físicamente presente.

Esta pregunta describe un método para hacer que Grub arranque automáticamente el último sistema operativo seleccionado. Sin embargo, esto no funcionará . Si selecciono Windows, no tengo forma de reiniciar remotamente la PC y arrancar Ubuntu.

¿Hay alguna manera de controlar de forma remota qué sistema operativo arranca?

Nathan Osman
fuente
¿@Takkat desde el lado de Windows? (¿Puedo ejecutar Windows y hacer que algún tipo de programa o script indique a Grub que arranque Ubuntu?)
Nathan Osman
@Takkat oh, ya veo lo que estás diciendo ... eso podría funcionar.
Nathan Osman
¿Has pensado en arrancar a través de PXE? Entonces, ¿podría dejar su configuración de arranque en otro servidor al que podría acceder en cualquier momento y ajustar en consecuencia y luego reiniciar la otra máquina para iniciar el sistema operativo especificado?
Ziazis

Respuestas:

11

Podemos reiniciar a una determinada entrada de arranque del menú Grub usando grub-reboot . Esto también se puede hacer desde una sesión remota, por ejemplo, a través de SSH.

Para iniciar en otro sistema operativo, elija la posición que está representada en el menú Grub a partir de 0:

sudo grub-reboot <num>

ingrese la descripción de la imagen aquí

En este caso mi Windows está en posición 4. Entonces al emitir

sudo grub-reboot 4 && sudo reboot

La máquina se reiniciará en Windows después del tiempo de espera que definimos en la configuración de Grub.

Después de reiniciar desde Windows, la máquina se iniciará en el sistema operativo predeterminado. Esto se puede definir con

sudo grub-set-default <num>

Para que esto funcione, es posible que tengamos que definir GRUB_DEFAULT=saveden nuestro /etc/default/grubsistema, pero en mi sistema también funcionó con la configuración predeterminada.

Lamentablemente, esto no se puede reiniciar Windows desde Windows.

Takkat
fuente
3

Otra idea gracias a la respuesta de takkat :

  1. El arranque predeterminado es Ubuntu
  2. grub-reboot Ndonde Nestá la entrada de arranque de Windows
  3. Reiniciar Windows te devolverá al arranque predeterminado: Ubuntu.

Desventaja : para reiniciar Windows, debe reiniciar dos veces: reinicie Windows, deje que Ubuntu arranque y grub-reboot N¡otra vez! :-(

Fabby
fuente
Más ideas por favor. :)
AB
1

Puede configurar el sistema operativo predeterminado con grub dependiendo del tiempo, consulte ¿Se puede programar GRUB? Esto significa: ¿cambiar automáticamente la 'entrada' predeterminada (inicio de sesión automático) en períodos de tiempo definidos? . Entonces, por ejemplo, puede configurar grub para arrancar en Windows cuando $ MINUTE es impar y arrancar en Linux cuando $ MINUTE es 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

Si desea un sistema operativo específico; solo espera hasta que llegue el momento.

El uso de este método debe tener en cuenta el tiempo que lleva llegar a Grub. Usar un marco de tiempo de 5 minutos es probablemente más confiable.


Creo que también es posible alternar entre las entradas de arranque. Algo como :

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

cuando grub está configurado para recordar el último sistema operativo iniciado ( ¿Cómo hacer que grub2 recuerde la última opción? )

Si su PC no arranca en el sistema operativo que desea, simplemente reinicie.

Max
fuente