web-dev-qa-db-fra.com

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

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

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

Dans l'état actuel des choses, Grub sélectionne Ubuntu par défaut lors du démarrage et je peux me connecter à distance via SSH. Il est également possible de sélectionner Windows au démarrage de Grub et de 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 d’amorcer 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 OS démarre?

9
Nathan Osman

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

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

Sudo grub-reboot <num>

enter image description here

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

Sudo grub-reboot 4 && Sudo reboot

La machine redémarre sous Windows après le délai défini dans les paramètres Grub.

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

Sudo grub-set-default <num>

Pour que cela fonctionne, nous devrons peut-être définir GRUB_DEFAULT=saved dans notre /etc/default/grub, mais sur mon système, cela fonctionnerait également avec les paramètres par défaut.

Malheureusement, il est impossible de redémarrer Windows à partir de Windows.

11
Takkat

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

  1. Le démarrage par défaut est Ubuntu
  2. grub-reboot NN est l'entrée de démarrage de 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 le redémarrer deux fois: redémarrez Windows, laissez Ubuntu redémarrer et grub-reboot N à nouveau! : - (

3
Fabby

Vous pouvez définir le système d’exploitation par défaut avec grub en fonction de la durée, voir Le programme GRUB peut-il être programmé? Cela signifie: modification automatique de la saisie par défaut (connexion automatique) à des périodes définies? . Ainsi, par exemple, vous pouvez configurer grub pour qu'il démarre sous Windows lorsque $ MINUTE est impair et démarre sous 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 voulez un système d'exploitation spécifique; attendez le moment venu.

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


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

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

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

Si votre PC ne démarre pas dans le système d'exploitation souhaité, redémarrez.

1
Max