
Ich habe ein Dual-Boot-System mit Linux/Windows eingerichtet und wechsle häufig von einem zum anderen. Ich habe überlegt, ob ich in einem der Menüs ein Menüelement hinzufügen könnte, um direkt in Windows neu zu starten, ohne an der GRUB-Eingabeaufforderung anzuhalten.
ich sahdiese Fragein einem Forum, das ist genau das, was ich will, aber es geht um Lilo, was nicht mein Fall ist.
Ich habe über eine Lösung nachgedacht, bei der der Standardeintrag im GRUB-Menü geändert und dann ein Neustart durchgeführt wird, aber es gibt einige Nachteile, und ich habe mich gefragt, ob es eine sauberere Alternative gibt.
(Außerdem wäre ich an einer Lösung interessiert, um von Windows direkt in Linux zu booten, aber das könnte schwieriger sein und gehört hier nicht hin. Wie auch immer, solange ich es auf die eine Art habe, könnte die andere Art als Standard eingerichtet werden.
AKTUALISIERENEs scheint, als hätte jemand gefragteine ähnliche Frage, und wenn das die vorgeschlagenen Antworten sind, kann ich sie auch gleich bearbeiten /boot/grub/grubenv
und grub-reboot
tun . )grub-set-default
grub-editenv
Vielen Dank im Voraus für alle Tipps.
AKTUALISIEREN:
Dies ist meine GRUB-Version:(GRUB) 1.99-12ubuntu5-1linuxmint1
Ich habe versucht, es auszuführen grubonce
, aber der Befehl wurde nicht gefunden. Und die Suche in den Repositories bringt nichts. Ich verwende Linux Mint, also könnte es daran liegen ...
Wenn ich sehe man grub-reboot
, scheint es, als würde es das tun, was ich will, und das grubonce
tut es auch. Es ist auch überall verfügbar (zumindest für mich, ich glaube, es ist Teil des Grub-Pakets). Ich habe zwei verwandte Befehle gesehen: grub-editenv
und grub-set-default
.
Ich habe herausgefunden, dass nach dem Ausführen sudo grub-set-default 4
etwas grub-editenv list
Ähnliches wie das Folgende angezeigt wird:
saved_entry=4
Und wenn Sie ausführen grub-reboot 4
, erhalten Sie etwa Folgendes:
prev_saved_entry=0
saved_entry=4
Das bedeutet, dass beide dasselbe tun (einer ist vorübergehend, der andere nicht).
Überraschenderweise passierte Folgendes, als ich es versuchte:
sudo grub-reboot 4
sudo reboot now
Es funktionierte nicht, als hätte ich nichts getan. Es zeigte mir lediglich wie üblich das Menü und wählte den ersten Eintrag aus, mit der Meldung, dass dieser Eintrag in 10 Sekunden gebootet würde.
Ich habe es noch einmal versucht, weil ich dachte, ich hätte vielleicht den falschen Eintrag geschrieben (er ist nullbasiert, oder?). Dieses Mal blieb es einfach beim Menübildschirm hängen und ich musste den PC zurücksetzen, um booten zu können.
Wenn das irgendjemand ausprobieren könnte, nur um zu sehen, ob es nur bei mir so ist, wäre ich dankbar. (Mint macht mir das Leben schwer und das wäre eine gute Gelegenheit, das zu ändern :P).
Beim Lesen des Codes /boot/grub/grub.cfg
scheint dies der richtige Weg zu sein, aber meinen Beobachtungen zufolge werden diese Einstellungen einfach ignoriert ...
Antwort1
- Bearbeiten Sie /etc/default/grub und ersetzen Sie
GRUB_DEFAULT=0
durchGRUB_DEFAULT=saved
sudo update-grub
Ihr Befehl wird sein:
sudo grub-reboot "$(grep -i windows /boot/grub/grub.cfg|cut -d"'" -f2)" && sudo reboot
AhübschFunktion für Ihr
~/.bashrc
oder.bash_aliases
könnte so aussehen:# Reboot directly to Windows # Inspired by http://askubuntu.com/questions/18170/how-to-reboot-into-windows-from-ubuntu reboot_to_windows () { windows_title=$(grep -i windows /boot/grub/grub.cfg | cut -d "'" -f 2) sudo grub-reboot "$windows_title" && sudo reboot } alias reboot-to-windows='reboot_to_windows'
Anmerkungen des Herausgebers:
Ich habe ersetztveraltete Backticks(
``
) durch$(...)
Konstrukt.Im Allgemeinen habe ich es neu geschrieben, um den aktuellenPOSIX (Wiki)Standards, und habe dabei noch ein paar andere kleinere Änderungen vorgenommen.
Der Vollständigkeit halber habe ich die folgende Funktion zum Vergleich unverändert gelassen.
Falls Ihre grub.conf mehrere Zeilen für Windows enthält, kümmern sich die folgenden Funktionen nur um die Zeilen, die mit beginnen, menuentry
und wählen nur die erste aus, die sich auf Windows bezieht:
function my_reboot_to_windows {
WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
sudo grub-reboot "$WINDOWS_TITLE"
sudo reboot
}
Antwort2
Damit der grub-reboot
Befehl funktioniert, müssen mehrere erforderliche Konfigurationsänderungen vorgenommen werden:
- Der Standardeintrag für Grub muss auf gesetzt sein
saved
. Ein möglicher Ort hierfür ist dieGRUB_DEFAULT=
Zeile in/etc/default/grub
- Legen Sie mit diesen Optionen
grub-set-default
Ihren Standardeintrag auf den Eintrag fest, den Sie normalerweise verwenden. - Aktualisieren Sie Ihre Grub-Konfiguration (z. B.
update-grub
).
Damit sollte die Ersteinrichtung erledigt sein. Führen Sie in Zukunft einfach grub-reboot <entry>
einen einmaligen Bootvorgang durch <entry>
.
Antwort3
Ich habe hierfür ein Tool für Ubuntu 20.04/22.04 geschrieben: https://github.com/mendhak/grub-reboot-picker
Es funktioniert möglicherweise auf früheren Ubuntu-Versionen, aber ich habe es nie getestet.
Antwort4
Stimme @jw013 zu. Und Sie können das Menüfeld auch an grub-reboot übergeben (einschließlich des Titels des übergeordneten Menüs). Beispiel:
$ sudo grub-reboot "Advanced options for Ubuntu>Ubuntu, with Linux 4.13.0-26-generic"
$ sudo reboot
Wobei „Erweiterte Optionen für Ubuntu“ das übergeordnete Menü ist, ist „Ubuntu, mit Linux 4.13.0-26-generic“ das Untermenü.