Gibt es eine Möglichkeit für grub, Windows automatisch von Windows aus neu zu starten?

11

Ich habe ein Dual-Boot-Setup:

  1. Ubuntu 16.04 LTS
  2. Windows

Derzeit, wenn ich rebootvon Ubuntu in Windows will, verwende ich grub-rebootmit der entsprechenden Nummer als Argument. Das funktioniert gut.

Manchmal muss Windows jedoch neu gestartet werden, damit ein bestimmtes Programm installiert oder aktualisiert werden kann, und ich muss manuell den richtigen Eintrag für das Grub-Startmenü auswählen. Gibt es eine ähnliche Möglichkeit (über die Windows-Benutzeroberfläche), grub mitzuteilen, welcher Eintrag gestartet werden soll?

Ich nehme an, der grub-rebootBefehl übergibt das Argument an eine Datei, die wiederum von grub on gelesen wird reboot.

Bearbeiten (bezüglich meiner ausgewählten Antwort): Ich bin gerade dabei, das ext4-Laufwerk, das / boot enthält, zu mounten und die Bearbeitung per Skript durchzuführen. Dies wird möglicherweise eine Weile dauern, da ich dies in meiner Freizeit neben meinem 40-Stunden / Woche-Non-Tech-Job mache. ^^

amon san
quelle
Kommentare sind nicht für eine ausführliche Diskussion gedacht. Dieses Gespräch wurde in den Chat verschoben .
Terdon
Bitte aktualisieren Sie Ihre Frage in Zukunft mit dem, was Sie letztendlich getan haben, damit grub automatisch neu in Windows startet. Ich bin gespannt, welche Methode für Sie funktioniert hat und ob Sie das Skript des Fensters (falls vorhanden) sehen, das Sie geschrieben haben. Ich bin sicher, dass auch viele andere Leute interessiert sind.
WinEunuuchs2Unix
@ WinEunuuchs2Unix Derzeit arbeite ich daran. wie Oli sagte - Skripte in Fenstern sind eine königliche PITA.
Amon San
@amonsan Ich habe meine Antwort mit einer reboot-to-windowsFunktion aktualisiert, die einen Kompromiss gegenüber der Verwendung von ext2fsd darstellt , der ext4-Superblocks beschädigt .
WinEunuuchs2Unix
@amonsan Haben Sie Ihr System jetzt so eingerichtet, dass der Neustart von Windows Update automatisch wieder in Windows ausgeführt werden kann?
WinEunuuchs2Unix

Antworten:

8

Sie können replizieren, was grub-reboottut. Es ist nur ein Skript, das schließlich aufruft:

grub-editenv /boot/grub/grubenv set next_entry="Windows"

Wo Windowsist der Name Ihres Grub-Menüeintrags? Das könnte es nicht sein

Ich habe das gemacht. Alles , was sie tut es Einsatz next_entry=Windowsin /boot/grub/grubenv. In Zeile 2. Wenn es sich also nur um eine Datei in einem Dateisystem handelt, können Sie in Windows genau dasselbe tun . Es ist ein Windows-Problem zu lösen, aber hier ist die allgemeine Übersicht:

  • Hängen Sie die Festplatte dort ein, wo sich der Start befindet. Dies ist wahrscheinlich das schwierigste Bit, da dies wahrscheinlich ext4 ist. Dies könnte helfen, aber es ist nicht unvorstellbar, dass Linux mit Windows ausgeführt werden muss, um es zu bearbeiten.

    Wie Muru betont, muss es nicht so schwer sein. Sie können /bootzu einer eigenen FAT32-Partition wechseln . Dies macht es trivial, in Windows zu mounten.

  • Fügen Sie next_entry=Windows(oder was auch immer) nach dem Kommentar vor den Hashes in die Datei ein.

  • Abmontage.
  • Starten Sie neu.

Skripte in Windows liegen weit außerhalb meiner Komfortzone und nicht wirklich das, was wir hier tun. Aber das sollte alles sein, was Sie tun müssen.

Oli
quelle
1
Wie ich in einem Kommentar sagte, der jetzt in den Chat verschoben wurde, ist es bei dieser Methode am besten, auf eine separate /bootPartition zu wechseln, diese auf FAT32 oder NTFS zu formatieren und sie dann bequem unter Windows zu bearbeiten. Es gibt nichts /boot, was besonders Unix-y-Funktionen erfordert. Das Scripting mit Powershell sollte dann einfach sein.
Muru
19

Der einfachste Weg ist mit Grub

Die Steuerung grubüber Windows ist umständlich . Eine Drittanbieteranwendung für den Zugriff auf Ubuntu unter Windows und einige Hacking-Aktionen ist erforderlich. Im oberen Teil dieses Beitrags: So ändern Sie die Reihenfolge in meinen Dual-Boot-Distributionen : Sie können festlegen , dass grubdie letzte Menüoption automatisch neu gestartet wird . Wenn Sie also zum ersten Mal mit Windows booten und es um 2 Uhr morgens aufwacht, um Updates auszuführen, grubwird Windows neu geladen, damit Updates ordnungsgemäß abgeschlossen werden können.

Wenn Sie Ubuntu manuell neu starten und von gruball Ihren nächsten Neustarts auswählen, wird Ubuntu automatisch geladen. Diese Funktion funktioniert genauso gut, wenn Sie Fehler im aktuellen Kernel haben und grubautomatisch eine ältere Kernelversion neu starten möchten , die Sie ausgewählt haben.

So bringen Sie Grub dazu, die letzte Startauswahl zu wiederholen

Das ist ziemlich einfach. sudoBearbeiten /etc/default/grubund ändern Sie mithilfe von Kräften Folgendes:

#GRUB_DEFAULT=0 # Rather than option #1, we'll always default to last boot choice.
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

In der ersten Zeile, die Sie auskommentieren, und direkt darunter werden die nächsten beiden Zeilen eingefügt.

Speichern Sie die Datei und geben Sie das Terminal ein:

sudo update-grub

Ubuntu-Befehlszeile zum Neustart in Windows

Derzeit verwenden Sie so etwas:

sudo grub-reboot x # Where x is Windows zero-based grub menu number
sudo reboot now

Aus dieser geänderten Stack Exchange- Antwort können Sie den Grub-Standard verwenden, um Windows neu zu starten. Kopieren Sie diesen Code in Ihre ~/.bashrcDatei:

function reboot-to-windows {
    WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
    sudo grub-set-default "$WINDOWS_TITLE"
    sudo reboot
}
  • Speichern Sie die ~/.bashrcDatei mit neuer reboot-to-windowsFunktion.
  • Schließen Sie Ihre aktuelle Terminalsitzung.
  • Öffnen Sie eine neue Terminalsitzung, damit Änderungen geändert ~/.bashrcwerden können.
  • Sie können eingeben : ~/.bashrc, um es in die vorhandene Terminalsitzung neu zu laden, aber einige Leute empfehlen, dies nicht zu tun.

So starten Sie Windows über die Befehlszeile neu:

reboot-to-windows

Wenn Windows automatisch neu gestartet wird, wenn Sie nicht suchen, wird Windows neu gestartet. Auf diese Weise können automatische Windows-Updates über mehrere Neustartzyklen, die Windows manchmal verwendet, normal verarbeitet werden.

WinEunuuchs2Unix
quelle
1
Diese Frage hat nichts mit der Startreihenfolge zu tun.
Jennifer
2
@ Jennifer Die Frage ist jedoch eine Instanz des XY-Problems. Diese Antwort ist also nützlich. Außerdem geht es tatsächlich um die Startreihenfolge, da nach einer Möglichkeit gefragt wird, die Startreihenfolge über eine Windows-Benutzeroberfläche vorübergehend zu ändern.
wizzwizz4
2

grub-set-defaultsollte das gleiche tun wie grub-reboot, aber die Einstellung dauerhaft machen. Dies ist nicht genau von der Windows-Benutzeroberfläche, wie Sie gefragt haben, aber vielleicht funktioniert es für Sie.

Sebastian Stark
quelle
Diese Frage hat nichts mit der Startreihenfolge zu tun.
Jennifer
Ich verstehe nicht ganz, was du mit diesem Kommentar meinst, kannst du das erklären?
Sebastian Stark
Amon San fragt nicht, wie ich Grub dazu bringen soll, Windows standardmäßig zu verwenden. Ze fragt, ob Windows bereits gestartet wurde, wie jetzt ein Neustart durchgeführt werden soll und welches Betriebssystem gestartet werden soll.
Jennifer
@Jennifer OP fragt nicht "wie man jetzt in Windows neu startet". In diesem Fall könnte OP einfach Windows Restart und dann Windows im Grub-Menü auswählen. OP fragt: "Wenn Windows automatisch neu gestartet wird, wenn ich nicht da bin, wie kann ich sicherstellen, dass es wieder in Windows neu gestartet wird, nicht die Standardoption für das Grub-Menü?" Zumindest sehe ich so das Hauptproblem .
WinEunuuchs2Unix
Ja, OP könnte einfach Windows-Neustart und dann Windows im Grub-Menü auswählen. OP fragt jedoch speziell, wie ich automatisch zu Windows zurückkehren kann, ohne Windows im Startmenü auswählen zu müssen. Mit anderen Worten, wie geht das ohne mein Eingreifen? Zu viel X Ying!
Jennifer
1

Sie haben nicht gesagt, welche Windows-Version oder ob Sie UEFI verwenden.

Wenn Sie einen ordnungsgemäßen UEFI-Start (und keinen Legacy-Start) verwenden, können Sie vorübergehend mit dem Windows-UEFI-Starteintrag starten. Unter Linux kann dies mit Tools wie efibootmgr. Unter Windows verwende ich persönlich EasyUEFI . Es ist kostenlos für den persönlichen Gebrauch, die GUI, aber nicht für Unternehmen oder CLI. Ich kann nicht für seine Sicherheit bürgen. Es scheint auch etwas langsam zu sein, aber es scheint zu funktionieren

In meinem eigenen Setup, das Arch Linux (Kernel EFI Shim, ohne GRUB) und Windows 10 verwendet, sieht es so aus, nachdem Sie auf dem Startbildschirm "EFI Boot Option verwalten" ausgewählt haben:

Bild zeigt einmalige Startoption

Wenn Sie den UEFI-Start verwenden, sollten Sie etwas Ähnliches für Windows sowie einen einzelnen Eintrag für Ubuntu (der GRUB lädt) sowie einige andere gerätespezifische Optionen sehen. Die einmalige Startoption kann dann verwendet werden, um festzulegen, dass der UEFI-Starteintrag für Windows einmal gestartet wird und anschließend der Startvorgang wieder auf GRUB zurückgesetzt wird. Nachdem Sie dies eingestellt haben, starten Sie wie gewohnt neu.

muru
quelle
1
Danke, aber das erfordert jedes Mal zu viel manuelle Interaktion für meinen Geschmack.
Amon San
1
Zucken. In jedem Fall sollten Sie /bootzu NTFS oder FAT32 wechseln , anstatt es als ext4 zu bearbeiten. Schreibunterstützung für ext4 in Windows ist zweifelhaft, Sie riskieren auf diese Weise zu viel.
Muru