Comment contrôler à distance quel OS Grub démarre?

10

Considérez la configuration à double démarrage suivante:

  • Grub est installé sur /dev/sda
  • /dev/sda1 est monté comme /boot
  • /dev/sda6 est monté comme /
  • Windows 10 est installé sur /dev/sdb2

À l'heure actuelle, Grub sélectionne Ubuntu par défaut au démarrage et je peux me connecter à distance via SSH. Il est également possible de sélectionner Windows au démarrage de Grub et je peux me connecter à distance via RDP.

Le problème est que je n'ai aucun moyen de sélectionner le système d'exploitation à démarrer lorsque je ne suis pas physiquement présent.

Cette question décrit une méthode permettant à Grub de démarrer automatiquement le dernier système d'exploitation sélectionné. Cependant, cela ne fonctionnera pas . Si je sélectionne Windows, je n'ai aucun moyen de redémarrer le PC à distance et de démarrer Ubuntu.

Existe-t-il un moyen de contrôler à distance quel système d'exploitation démarre?

Nathan Osman
la source
@Takkat du côté Windows? (Puis-je exécuter Windows et avoir une sorte de programme ou de script demandant à Grub de démarrer Ubuntu?)
Nathan Osman
@Takkat oh, je vois ce que tu dis ... ça pourrait marcher.
Nathan Osman
Avez-vous pensé à démarrer via PXE? Ensuite, vous pouvez laisser votre configuration de démarrage sur un autre serveur auquel vous pouvez accéder à tout moment et ajuster en conséquence, puis redémarrer l'autre machine pour démarrer le système d'exploitation spécifié?
Ziazis

Réponses:

11

Nous pouvons redémarrer à une entrée de démarrage du menu Grub donnée en utilisant grub-reboot . Cela peut également être fait à partir d'une session à distance, par exemple via SSH.

Pour démarrer dans un autre système d'exploitation, choisissez la position dans laquelle il est représenté dans le menu Grub à partir de 0:

sudo grub-reboot <num>

entrez la description de l'image ici

Dans ce cas, mon Windows est en position 4. Donc lors de l'émission

sudo grub-reboot 4 && sudo reboot

La machine redémarrera vers Windows après le délai que nous avons défini dans les paramètres de Grub.

Après le redémarrage à partir de Windows, la machine démarrera dans le système d'exploitation par défaut. Cela peut être défini avec

sudo grub-set-default <num>

Pour que cela fonctionne, nous devrons peut-être définir GRUB_DEFAULT=saveddans notre /etc/default/grubmais sur mon système, il a également fonctionné avec les paramètres par défaut.

Malheureusement, le redémarrage de Windows à partir de Windows ne peut pas être fait par cela.

Takkat
la source
3

Une autre idée grâce à la réponse de takkat :

  1. Le démarrage par défaut est Ubuntu
  2. grub-reboot NNest l'entrée de démarrage Windows
  3. Le redémarrage de Windows vous ramènera au démarrage par défaut: Ubuntu.

Inconvénient : pour redémarrer Windows, vous devez redémarrer deux fois: Redémarrez Windows, laissez Ubuntu redémarrer et grub-reboot Nencore! :-(

Fabby
la source
Plus d'idées s'il vous plaît. :)
AB
1

Vous pouvez définir le système d'exploitation par défaut avec grub en fonction de l'heure, voir GRUB peut-il être planifié? Cela signifie: changer automatiquement «l'entrée» par défaut (connexion automatique) à des périodes définies automatiquement? . Ainsi, par exemple, vous pouvez configurer grub pour démarrer sur Windows lorsque $ MINUTE est impair et démarrer sur Linux lorsque $ MINUTE est pair.

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 vous souhaitez un système d'exploitation spécifique; attendez que son heure soit venue.

L'utilisation de cette méthode doit prendre en compte le temps nécessaire pour atteindre Grub. L'utilisation d'un délai de 5 minutes est probablement plus fiable.


Je pense qu'il est également possible d'alterner entre les entrées de démarrage. Quelque chose comme :

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

lorsque grub est configuré pour se souvenir du dernier système d'exploitation démarré ( Comment faire pour que grub2 se souvienne du dernier choix? )

Si votre PC ne démarre pas dans le système d'exploitation que vous souhaitez, redémarrez simplement.

Max
la source