Comment redémarrer sous Windows à partir d'Ubuntu?

30

Je cherche un moyen de redémarrer Windows à partir d'Ubuntu sur un système à double amorçage 10.10 / Vista. Le cas particulier est que je voudrais pouvoir insérer ssh dans mon instance Ubuntu en cours d'exécution et émettre une commande qui lancera un redémarrage directement dans Windows.

J'ai trouvé un 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 n'est pas d'une grande aide, mais il semble que cela me mène 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 du menu est toujours mise en évidence. Des idées pour lesquelles cela ne fonctionne pas ou des suggestions pour d'autres solutions?

    
posée andrewsomething 19.12.2010 - 21:33
la source

8 réponses

39
  • Vous devez d'abord modifier votre grub.

    sudo gedit /etc/default/grub
    
  • Recherchez la ligne GRUB_DEFAULT = 0 et modifiez-la en GRUB_DEFAULT = enregistré

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

    sudo update-grub  
    
  • Maintenant, créez un fichier et ajoutez 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.
  • Et maintenant, vous pouvez lancer ce script depuis le terminal pour redémarrer dans Windows.
  • Ou vous pouvez exécuter la commande suivante dans votre terminal

    sudo grub-reboot X  
    
  • Où X est la position de menu de l'OS que vous voulez redémarrer depuis le menu GRUB (commençant par 0 comme première entrée)

Par exemple:

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

  • Vous pouvez également créer un lanceur pour la commande ci-dessus afin que le double-clic sur le lanceur redémarre dans Windows.
réponse donnée karthick87 19.12.2010 - 23:53
la source
11

Il y a une commande grub juste pour le faire, c'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, à chaque démarrage, la dernière entrée utilisée sera lancée.

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

sudo grub-reboot ENTRY

ENTRY peut être un nombre relatif à une entrée de menu (numérotée à partir de 0), ou un titre 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 il 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/.*\(["'\''].*["'\'']\).*//p' /boot/grub/grub.cfg 
    
réponse donnée enzotib 26.09.2011 - 16:30
la source
4

Je pense que j'ai trouvé un moyen encore plus agréable pour les personnes qui veulent la même chose en local sur leur PC sans ssh.

Une solution pour redémarrer dans un système spécifique choisi via un lanceur d'unité a été postée sur webupd8. Voir lien

Je sais que ce n’est pas exactement la question, mais au cas où une question similaire se poserait plus tard, cela pourrait être utile.

    
réponse donnée K. Hendrik 14.05.2011 - 02:43
la source
3

Autant que je sache, ce ne sera pas exactement ce que vous voulez mais je suppose que je suis proche. Suivez simplement le lien article webupdate .

    
réponse donnée dago 26.09.2011 - 21:32
la source
2

Pour moi, le meilleur é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
    
réponse donnée Philippe Gachoud 08.05.2017 - 14:47
la source
0

L'information de tout le monde m'a été utile, mais au final, je n'ai toujours pas réussi à modifier la valeur par défaut de grub, puis à 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 tous de construire et en 5 minutes, je redémarre dans Windows. Merci à tous ici le lien tricheur pour ceux qui abandonnent aussi. lien

    
réponse donnée Mickey Brown 03.02.2016 - 04:33
la source
-1

Je ne suis pas sûr que cela fonctionne à 100% dans Ubuntu, mais j'ai déjà fait ce travail sur une machine centos

fondamentalement, vous devrez indiquer à grub l'id # de grub.conf qu'il devrait exécuter ensuite. L'identifiant peut être trouvé par

echo 'sudo grep ^title /boot/grub/grub.conf | grep -n Windows | cut -f 1 -d:'-1

donc dans mon cas, par exemple la sortie "4-1" comme quatrième entrée de mon grub.conf contient le texte "Windows". (Remplacez-le par le nom de l'entrée réelle (également partiellement) que vous souhaitez utiliser. Ensuite, vous pouvez nourrir ceci comme grub comme:

echo "savedefault --stage2=/boot/grub/stage2 --default=4-1 --once" | sudo /sbin/grub

et au prochain redémarrage, il devrait automatiquement démarrer l'entrée que vous lui avez indiquée.

tout cela peut être assemblé dans un script comme celui-ci:

#!/bin/sh
let NEWBOOT='sudo grep ^title /boot/grub/grub.conf | grep -n Windows | cut -f 1 -d:'-1
echo Booting $NEWBOOT - 'sudo grep ^title.\*Windows /boot/grub/grub.conf'
echo "savedefault --stage2=/boot/grub/stage2 --default=$NEWBOOT --once" | sudo /sbin/grub
sudo reboot

le script déterminera automatiquement quelle entrée de votre grub.conf correspond au texte "Windows", le chargera pour que grub indique ce qui doit être chargé au prochain démarrage et va redémarrer votre PC.

pour une gui vous pourriez par exemple ajoutez une icône de raccourci sur votre bureau pour y parvenir.

    
réponse donnée Roland Kohn 26.09.2011 - 15:47
la source
-4

Modifiez simplement /boot/grub/grub.cfg et modifiez l'entrée par défaut pour qu'elle pointe vers l'entrée que vous souhaitez démarrer. La valeur peut être le nombre ordinal de l'entrée (à partir de zéro pour le premier) ou vous pouvez placer le titre complet de l'entrée que vous souhaitez entre guillemets.

    
réponse donnée psusi 26.09.2011 - 17:49
la source

Lire d'autres questions sur les étiquettes