Wie starte ich von Ubuntu aus in Windows?

30

Ich suche nach einer Möglichkeit, in Windows von Ubuntu auf einem 10.10 / Vista Dual-Boot-System neu zu starten. Der spezielle Anwendungsfall ist, dass ich in der Lage sein möchte, in meine laufende Ubuntu-Instanz zu gelangen und einen Befehl auszuführen, der einen Neustart direkt in Windows initiiert.

Ich fand einen vielversprechenden Blogeintrag , aber das Skript, das es vorschlägt, funktioniert nicht:

#!/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 ist nicht viel Hilfe, aber es scheint mich in die richtige Richtung zu führen:

  

Legen Sie den Standardstarteintrag für GRUB fest,   nur für den nächsten Start

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

Dies gibt den erwarteten Wert zurück, aber beim Neustart wird der erste Menüeintrag immer noch hervorgehoben. Irgendwelche Ideen, warum das nicht funktioniert oder Vorschläge für andere Lösungen?

    
andrewsomething 19.12.2010, 21:33

8 Antworten

39
  • Sie müssen zuerst Ihr grub bearbeiten.

    sudo gedit /etc/default/grub
    
  • Suchen Sie nach der Zeile GRUB_DEFAULT = 0 und ändern Sie sie in GRUB_DEFAULT = gespeichert

  • Aktualisieren Sie Ihre grub mit dem folgenden Befehl.

    sudo update-grub  
    
  • Erstellen Sie nun eine Datei und fügen Sie diese Zeilen hinzu,

    #!/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
    
  • Machen Sie das Skript ausführbar.
  • Und jetzt können Sie dieses Skript vom Terminal ausführen, um in Windows neu zu starten.
  • Oder Sie können den folgenden Befehl in Ihrem Terminal ausführen

    sudo grub-reboot X  
    
  • Dabei steht X für die Menüposition des Betriebssystems, von dem aus das GRUB-Menü neu gestartet werden soll (beginnend mit 0 als ersten Eintrag)

Beispiel:

  • Wenn dies Ihr Grub-Menü ist und Sie in Windows booten wollen, sollten Sie den Wert von X mit 5 angeben.
  • sudo grub-reboot 5

  • Sie können auch einen Launcher für den obigen Befehl erstellen, sodass ein Doppelklick auf den Launcher in Windows neu gestartet wird.
karthick87 19.12.2010, 23:53
11

Es gibt nur einen grub Befehl, es ist grub-reboot .

Es scheint nur zu funktionieren, wenn Sie grub so konfiguriert haben, dass es mit dem letzten gespeicherten Eintrag beginnt. Wenn Sie dies noch nicht getan haben, ändern Sie /etc/default/grub und setzen Sie

GRUB_DEFAULT=saved

Aktualisieren Sie dann die Grub-Konfigurationsdatei:

sudo update-grub

Ab jetzt wird bei jedem Bootgrub der letzte benutzte Eintrag gestartet.

Wenn Sie nun im Voraus festlegen möchten, welches System beim nächsten Mal gestartet werden soll, verwenden Sie

sudo grub-reboot ENTRY

Dabei könnte ENTRY eine Zahl relativ zu einem Menüeintrag (beginnend mit 0 beginnend) oder ein genauer Menüeintrag sein, zum Beispiel

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

Dieser Befehl kann leicht als Startprogramm verfügbar gemacht werden

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

aber ich weiß nicht, wie es in das Systemmenü integriert werden könnte.

Sie können den verfügbaren Titel des Menüeintrags mit

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

Ich denke, dass ich einen noch schöneren Weg für Leute gefunden habe, die dasselbe vor Ort auf ihrem PC ohne ssh wollen.

Eine Lösung zum Neustart in ein bestimmtes System, das über einen Unity Launcher ausgewählt wurde, wurde gerade auf webupd8 veröffentlicht. Siehe link

Ich weiß, dass das nicht genau die Frage ist, aber falls jemand eine ähnliche Frage später hat, könnte das hilfreich sein.

    
K. Hendrik 14.05.2011 02:43
3

Soweit ich das verstanden habe, wird das nicht genau das sein, was Sie wollen, aber ich schätze ziemlich genau. Folgen Sie einfach dem Link webupdate .

    
dago 26.09.2011 21:32
2

Für mich war es am besten, folgendes Skript mit grub-reboot command

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

Die Informationen für alle waren hilfreich für mich, aber am Ende konnte ich immer noch nicht den Grub-Standard ändern und dann mit einem Klick neu starten. Nachdem ich zwei Stunden lang herumgebastelt habe, entdecke ich dieses Programm, das genau das ist, was wir alle versuchen zu bauen und in fünf Minuten starte ich wieder in Windows. Danke an alle hier ist der Cheater Link für diejenigen, die auch aufgeben. link

    
Mickey Brown 03.02.2016 04:33
-1

Ich bin nicht sicher, ob das 100% auch in ubuntu funktioniert, aber ich habe das einmal auf einer Centos-Maschine gemacht

Im Grunde wirst du grub sagen müssen, welche ID # aus grub.conf als nächstes laufen soll. Die ID # kann von

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

in meinem Fall würde dies z.B. Ausgabe "4-1" als vierter Eintrag in meiner grub.conf enthält den Text "Windows". (Ersetzen Sie dies durch den tatsächlichen Eintragsnamen (auch teilweise), den Sie verwenden möchten. Dann kannst du das zum grub füttern wie:

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

und beim nächsten Neustart sollte es automatisch den Eintrag starten, den Sie ihm mitgeteilt haben.

Dies alles kann in einem Skript wie folgt zusammengefügt werden:

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

Das Skript ermittelt automatisch, welcher Eintrag aus Ihrer grub.conf dem Text "Windows" entspricht, wird dies an grub übergeben, um zu bestimmen, was beim nächsten Start geladen werden soll wird Ihren PC neu starten.

für eine GUI könnten Sie z.B. Fügen Sie Ihrem Desktop ein Verknüpfungssymbol hinzu, um dies zu erreichen.

    
Roland Kohn 26.09.2011 15:47
-4

Bearbeiten Sie einfach /boot/grub/grub.cfg und ändern Sie den Standardeintrag so, dass er auf den Eintrag zeigt, den Sie starten möchten. Der Wert kann entweder die Ordnungszahl des Eintrags sein (beginnend mit Null für den ersten Eintrag) oder Sie können den vollständigen Titel des gewünschten Eintrags in Anführungszeichen setzen.

    
psusi 26.09.2011 17:49

Tags und Links