Come riavviare in Windows da Ubuntu?

30

Sto cercando un modo per riavviare Windows da Ubuntu su un sistema dual boot 10.10 / Vista. Il caso d'uso specifico è che mi piacerebbe essere in grado di ssh nella mia istanza di Ubuntu in esecuzione e di emettere un comando che avvierà un riavvio direttamente in Windows.

Ho trovato un promettente post sul blog , ma lo script che suggerisce non funziona:

#!/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 non è di grande aiuto, ma sembra portarmi nella giusta direzione:

  

imposta la voce di avvio predefinita per GRUB,   solo per il prossimo avvio

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

Restituisce il valore previsto, ma al riavvio la prima voce del menu è ancora evidenziata. Qualche idea sul perché questo non funziona o suggerimenti per altre soluzioni?

    
posta andrewsomething 19.12.2010 - 21:33

8 risposte

39
  • Devi prima modificare il tuo grub.

    sudo gedit /etc/default/grub
    
  • Cerca la linea GRUB_DEFAULT = 0 e modificala in GRUB_DEFAULT = salvata

  • Aggiorna il tuo grub usando il seguente comando.

    sudo update-grub  
    
  • Ora crea un file e aggiungi queste linee,

    #!/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
    
  • Rendi eseguibile lo script.
  • Ora puoi eseguire questo script dal terminale per riavviarlo in windows.
  • Oppure puoi eseguire il seguente comando nel tuo terminale

    sudo grub-reboot X  
    
  • Dove X è la posizione di menuentry del sistema operativo che si desidera riavviare dal menu di GRUB. (a partire da 0 come prima voce)

Ad esempio:

  • Se questo è il tuo menu di grub e se vuoi avviare in windows dovresti dare il valore di X come 5.
  • sudo grub-reboot 5

  • Puoi anche creare un launcher per il comando sopra, in modo che il doppio clic sul launcher si riavvii in windows.
risposta data karthick87 19.12.2010 - 23:53
11

C'è un comando grub solo per farlo, è grub-reboot .

Sembra funzionare solo quando grub è configurato per iniziare con l'ultima voce salvata. Quindi, se non lo hai già fatto, modifica /etc/default/grub e imposta

GRUB_DEFAULT=saved

quindi aggiorna il file di configurazione di grub:

sudo update-grub

Da ora in poi, ad ogni avvio, grub inizierà l'ultima voce utilizzata.

Ora, se vuoi impostare in anticipo quale dovrebbe essere il sistema da avviare la volta successiva, usa

sudo grub-reboot ENTRY

dove ENTRY potrebbe essere un numero relativo a una voce di menu (numerata a partire da 0) o un esatto titolo della voce di menu, ad esempio

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

Questo comando può essere reso facilmente disponibile come programma di avvio

#!/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

ma non so come possa essere integrato nel menu di sistema.

È possibile ottenere il titolo della voce di menu disponibile con

sed -n '/menuentry/s/.*\(["'\''].*["'\'']\).*//p' /boot/grub/grub.cfg 
    
risposta data enzotib 26.09.2011 - 16:30
4

Penso di aver trovato un modo ancora più carino per le persone che vogliono fare lo stesso mentre sono localmente sul loro PC senza ssh.

Una soluzione per riavviare in un sistema specifico scelto attraverso un launcher di unità è stata appena pubblicata su webupd8. Vedi link

So che non è esattamente la domanda, ma nel caso qualcuno abbia una domanda simile più avanti potrebbe essere utile.

    
risposta data K. Hendrik 14.05.2011 - 02:43
3

Per quanto ho capito, questo non sarà esattamente quello che vuoi ma immagino che sia abbastanza vicino. Segui semplicemente il link articolo webupdate .

    
risposta data dago 26.09.2011 - 21:32
2

Quindi per me il meglio era creare il seguente script con grub-reboot comando

#!/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
    
risposta data Philippe Gachoud 08.05.2017 - 14:47
0

Le informazioni di tutti erano utili per me, ma alla fine non riuscivo ancora a cambiare il default di grub e poi a riavviarlo con un clic. Dopo aver armeggiato per 2 ore, scopro questo programma che è esattamente la stessa cosa che stiamo cercando di costruire e in 5 minuti sto riavviando Windows. Grazie a tutti, ecco il link cheater per coloro che rinunciano. link

    
risposta data Mickey Brown 03.02.2016 - 04:33
-1

Non sono sicuro che anche questo funzionerà al 100% su Ubuntu, ma una volta ho fatto questo lavoro su un centos machine

in pratica devi dire a grub quale id # da grub.conf dovrebbe essere eseguito successivamente. L'ID # può essere scoperto da

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

quindi nel mio caso questo sarebbe per es. output "4-1" come quarta voce nel mio grub.conf contiene il testo "Windows". (Sostituirlo con il nome effettivo della voce (anche parzialmente) che si desidera utilizzare. Quindi puoi dare da mangiare a grub come:

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

e al prossimo riavvio dovrebbe avviarsi automaticamente la voce che gli hai detto.

tutto questo può essere messo insieme in uno script come il seguente:

#!/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

lo script determinerà automaticamente quale voce dal tuo grub.conf corrisponde al testo "Windows", lo invierà a grub per dire cosa deve essere caricato al prossimo avvio e riavvierà il PC.

per un gui potresti ad es. aggiungi un'icona di collegamento sul desktop per ottenere questo.

    
risposta data Roland Kohn 26.09.2011 - 15:47
-4

Modifica semplicemente /boot/grub/grub.cfg e modifica la voce predefinita in modo che punti alla voce che vuoi avviare. Il valore può essere il numero ordinale della voce (a partire da zero per il primo) oppure puoi inserire il titolo completo della voce desiderata tra virgolette.

    
risposta data psusi 26.09.2011 - 17:49

Leggi altre domande sui tag