web-dev-qa-db-fra.com

Comment redémarrer Windows à partir d'Ubuntu?

Je cherche un moyen de redémarrer Windows à partir d'Ubuntu sur un système à double démarrage 10.10/Vista. Le cas d'utilisation spécifique est que je voudrais pouvoir utiliser SSH dans mon instance Ubuntu en cours d'exécution et émettre une commande qui initiera un redémarrage directement dans Windows.

J'ai trouvé n article de blog prometteur , mais le script qu'il suggère ne fonctionne pas:

#!/bin/bash

WINDOWS_ENTRY=`grep menuentry /boot/grub/grub.cfg  | grep --line-number Windows`
MENU_NUMBER=$(( `echo $WINDOWS_ENTRY | sed -e "s/:.*//"` - 1 ))
Sudo grub-reboot $MENU_NUMBER
Sudo reboot

man grub-reboot ne m'aide pas beaucoup, mais il semble me mener dans la bonne direction:

définir l'entrée de démarrage par défaut pour GRUB, pour le prochain démarrage uniquement

WINDOWS_ENTRY=`grep menuentry /boot/grub/grub.cfg  | grep --line-number Windows`
MENU_NUMBER=$(( `echo $WINDOWS_ENTRY | sed -e "s/:.*//"` - 1 ))
echo $MENU_NUMBER

Cela renvoie la valeur attendue, mais au redémarrage, la première entrée de menu est toujours en surbrillance. Des idées pour lesquelles cela ne fonctionne pas ou des suggestions pour d'autres solutions?

34
andrewsomething
  • Vous devez d'abord modifier votre vers.

    Sudo gedit /etc/default/grub
    
  • Recherchez la ligne GRUB_DEFAULT = et modifiez-la en GRUB_DEFAULT = sauvegardée alt text

  • Mettez à jour votre fichier en utilisant la commande suivante.

    Sudo update-grub  
    
  • Maintenant, créez un fichier de script,

    Sudo gedit switch-to-windows.sh
    
  • Ajoutez ensuite ces lignes.

    #!/bin/bash
    WINDOWS_ENTRY=`grep menuentry /boot/grub/grub.cfg  | grep --line-number Windows`
    MENU_NUMBER=$(( `echo $WINDOWS_ENTRY | sed -e "s/:.*//"` - 1 ))
    Sudo grub-reboot $MENU_NUMBER
    Sudo reboot
    
  • Rendre le script exécutable.

    Sudo chmod +x switch-to-windows.sh
    
  • Et maintenant, vous pouvez exécuter ce script depuis un terminal pour redémarrer Windows.

    ./switch-to-windows.sh
    
  • Ou vous pouvez exécuter la commande suivante dans votre terminal

    Sudo grub-reboot X  
    
  • Où X est la position de menu du système d'exploitation que vous souhaitez redémarrer à partir du menu GRUB (en commençant par 0 comme première entrée).

Par exemple:

  • S'il s'agit du menu de votre choix et que vous souhaitez démarrer Windows, vous devez attribuer la valeur 5 à X.
  • Sudo grub-reboot 5

    alt text

  • Vous pouvez également créer un lanceur pour la commande ci-dessus, de sorte qu'un double-clic sur le lanceur redémarre sous Windows.
43
karthick87

Pour ce faire, il existe une commande grub, elle est grub-reboot.

Cela ne semble fonctionner que si vous avez configuré grub pour démarrer avec la dernière entrée enregistrée. Donc, si vous ne l’avez pas déjà fait, modifiez /etc/default/grub et définissez

GRUB_DEFAULT=saved

puis mettez à jour le fichier de configuration grub:

Sudo update-grub

A partir de maintenant, la dernière entrée utilisée sera lancée à chaque démarrage.

Maintenant, si vous voulez définir à l’avance quel devrait être le système à démarrer la prochaine fois, utilisez

Sudo grub-reboot ENTRY

ENTRY pourrait être un nombre relatif à une entrée de menu (numéroté à partir de 0), ou un titre d'entrée de menu exact, par exemple

Sudo grub-reboot "Microsoft Windows XP Professional (on /dev/sda1)"

Cette commande peut facilement être mise à disposition en tant que lanceur

#!/usr/bin/env xdg-open
#
# save as ~/Desktop/reboot-into-windows.desktop
#

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=sh -c 'gksu "grub-reboot 2" && gnome-session-save --shutdown-dialog'
Name=Reboot into Windows
Icon=gnome-panel-launcher

mais je ne sais pas comment cela pourrait être intégré dans le menu système.

Vous pouvez obtenir le titre d’entrée de menu disponible avec

sed -n '/menuentry/s/.*\(["'\''].*["'\'']\).*/\1/p' /boot/grub/grub.cfg 
12
enzotib

Je pense avoir trouvé un moyen encore plus agréable pour les personnes qui veulent la même chose alors qu’elles sont localement sur leur PC sans ssh.

Une solution pour redémarrer dans un système spécifique choisi via un lanceur d'unité vient d'être publiée sur webupd8. Voir http://www.webupd8.org/2011/05/custom-unity-launcher-to-reboot-in.html

Je sais que ce n'est pas exactement le sujet de la question, mais au cas où quelqu'un aurait une question similaire plus tard, cela pourrait être utile.

4
K. Hendrik

Autant que je sache, ce ne sera pas exactement ce que vous voulez, mais je suppose que c'est assez proche. Il suffit de suivre le lien article webupdate .

3
dago

Donc, pour moi, le mieux était de créer le script suivant avec la commande grub-reboot

#!/bin/bash 
WINDOWS_TITLE=$(grep -i 'windows' /boot/grub/grub.cfg|grep "^[^#;]"|cut -d"'" -f2) 
Sudo grub-reboot "$WINDOWS_TITLE" 
echo "Your computer will reboot on ${WINDOWS_TITLE} in 3 seconds, press Ctrl+C if you want to abord it"
sleep 3 && Sudo reboot
2

Les informations de tout le monde ont été utiles pour moi mais à la fin, je ne pouvais toujours pas changer le paramètre par défaut grub puis le redémarrer en un clic. Après avoir bricolé pendant 2 heures, je découvre ce programme qui est exactement la même chose que nous essayons de construire et en 5 minutes, je redémarre sous Windows. Merci à tous, voici le lien du tricheur pour ceux qui abandonnent aussi. http://www.webupd8.org/2013/01/unity-reboot-launcher-to-quickly-reboot.html

0
Mickey Brown