Kann Grub so konfiguriert werden, dass es sich an das letzte Betriebssystem erinnert, in dem Sie gebootet haben?

17

Normalerweise habe ich 2-3 Betriebssysteme in meinem Boot-Menü:

  • Ubuntu 10.04
  • Windows 7
  • [Manchmal eine dritte Option, wie Ubuntu 10.04 Netbook]

Wenn ich ein anderes Betriebssystem als die Standardeinstellung verwende (in diesem Fall Windows 7) und einen Neustart durchführe, bootet Grub in Ubuntu 10.04. Dies sollte nicht passieren - wenn ich in Windows 7 neu starte, möchte ich in Windows 7 bleiben. Gibt es eine Möglichkeit, Grub so zu konfigurieren, dass es sich an meine letzte Auswahl erinnert, und in diese zu booten?

Alternativ wäre es sogar noch besser, wenn Grub dies nur beim Neustart tun würde (nicht beim ersten Einschalten des Computers). Mir ist klar, dass dies möglicherweise nicht möglich ist, daher würde ich mich über einfaches Erinnern an die letzte Wahl freuen.

Matthew
quelle

Antworten:

20

Im ursprünglichen Grub würden Sie dies tun, indem Sie in /boot/grub/menu.lst das Standardschlüsselwort auf "saved" setzen und dann das savedefault- Schlüsselwort in jedem Startmenüeintrag verwenden.


Aktualisiert :
Grub2 ist etwas komplizierter. Es ist auch noch in der Entwicklung, und obwohl Ubuntu 9.10 und 10.04 beide Grub2 verwenden, gibt es genügend Unterschiede in der Art und Weise, wie Dinge gepackt und konfiguriert werden, um Dinge interessant zu machen.

Hier ist , wie das zu tun , savedefault Trick in beide:

  • Ubuntu 10.04:
    Die 9.10 Richtungen sind ein Trick; Lucid ist viel einfacher. Siehe Ubuntu Hilfe für mehr blutigen Details. Sie müssen zwei Änderungen in / etc / default / grub vornehmen :

    1. Ändern Sie die Zeile , die liest GRUB_DEFAULT=0zuGRUB_DEFAULT=saved

    2. Fügen Sie eine Zeile mit GRUB_SAVEDEFAULT=true

    Das ist es. Ist das nicht schlimm? Vergiss nicht zu rennen sudo update-grub.

  • Ubuntu 9.10:
    Es gibt mehrere Hacks in den Ubuntu-Foren, um dies zum Laufen zu bringen. Anscheinend war das Schlüsselwort savedefault in Grub v1.97 fehlerhaft. Dieser Beitrag in den Ubuntu-Foren bietet eine Methode. Ein anderer Beitrag schlägt eine etwas einfachere Methode vor:

    1. Setze GRUB_DEFAULT = gespeichert in / etc / default / grub .

    2. Fügen Sie diese beiden Zeilen in /etc/grub.d/40_custom ein (ganz unten nach der Zeile "exec tail" ):

      saved_entry=${chosen}
      save_env saved_entry
      

    Ich habe diese Methode in Ubuntu 9.10 getestet und sie funktioniert. Beim nächsten Start wird automatisch der zuletzt gewählte Eintrag markiert. In Verbindung mit einer Zeitüberschreitung wird automatisch das zuletzt gestartete Betriebssystem gestartet.

Und vergiss nicht zu rennen sudo update-grub. Nachdem Sie mit Ihren Änderungen fertig sind. Es ist wichtig und peinlich leicht zu vergessen ....


Grub hat keine Möglichkeit, einen Neustart von einem Kaltstart zu unterscheiden , daher kann Grub dies beim Neustart nicht selbst ausführen. Wenn Sie jedoch in Linux gebootet haben, können Sie sudo grub-set-default N(wobei N die Nummer eines Startmenüeintrags ab 0 ist) festlegen, dass Eintrag N beim nächsten Start ausgewählt wird (anstelle des gespeicherten Eintrags).

Theoretisch könnten Sie etwas hacken, das in die Shutdown-Routinen eingebunden ist (vielleicht ein Upstart-Skript ), das grub-set-default für Sie ausführte , als Sie Linux zum Herunterfahren aufforderten (aber nicht, als Sie es zum Neustart aufforderten). Sie würden jedoch nicht die gleiche Funktionalität erhalten, wenn Sie Windows herunterfahren.

Ich habe von einer Grub4DOS- oder Grub1-Technik gehört, bei der Grub auf einer FAT32- oder NTFS / Boot- Partition installiert wurde - mit der Sie auch grub-set-default unter Windows ausführen können , sodass Sie es über ein Windows-Abmeldeskript aufrufen können. Als ich das letzte Mal etwas davon gesehen habe, war dies auf Grub2 nicht möglich. Das könnte sich inzwischen geändert haben.

Quacksalber
quelle
Lösung 2 scheint bei mir nicht zu funktionieren. Ich habe / etc / default / grub bearbeitet, /etc/grub.d/40_custom bearbeitet und lief sudo update-grub. Ich habe getestet, indem ich Windows 7 gebootet, heruntergefahren und dann meinen Computer wieder eingeschaltet habe. Ubuntu 10.04 (der Standard) wurde noch ausgewählt. Ich habe auch versucht, "saved_entry" in / etc / default / grub zu speichern, anstatt "saved" (nicht sicher, wie Grub-Konfigurationsskripte funktionieren), aber es hat nicht geholfen. Ich habe die erste Lösung noch nicht ausprobiert.
Matthew
@Matthew: Überprüfen Sie, ob /etc/grub.d/40_custom ausführbar ist (sudo chmod + x, falls dies nicht der Fall ist). aber ja, ich habe es gerade auf meinem Ubuntu 10.04-Rechner versucht und es funktioniert dort auch nicht. Einchecken, warum ...
Quack Quixote
@Matthew: OK, habe es herausgefunden. Es tut mir leid, ich hätte wissen sollen, dass Lucid und Karmic so anders wären. (oh. und stellen Sie sicher, dass Sie laufen sudo update-grub.)
Quacksalber 5.
3

Dieser Beitrag wird Ihnen wahrscheinlich von Nutzen sein, er ist ziemlich selbsterklärend. Beachten Sie, dass 10.04 und 9.10 dieselbe GRUB-Version verwenden, sodass die Dinge für Sie genau gleich sein sollten.

marcusw
quelle