Considérez la configuration à double démarrage suivante:
/dev/sda
/dev/sda1
est monté en tant que /boot
/dev/sda6
est monté en tant que /
/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?
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>
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.
Une autre idée grâce à réponse de takkat :
grub-reboot N
où N
est l'entrée de démarrage de Windows 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! : - (
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.