Setze "älteren" Kernel als Standard-Grub-Eintrag

93

Ich habe zu Testzwecken einen Mainline-Kernel installiert. Ich möchte grub so einstellen, dass es standardmäßig vom älteren Kernel bootet.

Ich weiß, dass ich die GRUB_DEFAULT=0Einstellung für die erste Seite von Grub festlegen kann, aber wie kann ich festlegen, dass standardmäßig von einem Kernel auf der zweiten Seite (Seite "Erweitert") gebootet wird?

Ich würde es vorziehen, wenn ich keine andere Software installieren würde (zB grub-customizer).

Verwandte Fragen:
Wie stelle ich Windows so ein, dass es im Bootloader standardmäßig gestartet wird?
Wie ändere ich die Grub-Startreihenfolge?

Machen
quelle
3
@belacqua: Es ist kein Duplikat. In dieser Frage geht es darum, einen älteren Kernel, der nicht auf der ersten Optionsseite von grub vorhanden ist, als Standard festzulegen.
zu tun
Anscheinend sollte dieser Fall in den früheren Fragen behandelt werden, auch wenn die Methode für 12.10, ältere Kernel usw. aktualisiert werden muss.
belacqua
3
Der Anwendungsfall der Frage ist unterschiedlich, und die Antwort ist in einer Weise sehr spezifisch, die nicht auf die anderen beanspruchten Duplikate zutrifft. Ich bin hergekommen, um dieses spezielle Problem zu lösen. die Startreihenfolge nicht zu ändern; noch um Windows zu booten. +1 für "kein Duplikat".
Robie Basak

Antworten:

128

Erstellen Sie zunächst eine Sicherungskopie von /etc/default/grub. Wenn etwas schief geht, können Sie problemlos auf die als funktionierend bekannte Kopie zurückgreifen.

sudo cp /etc/default/grub /etc/default/grub.bak

Bearbeiten Sie anschließend die Datei mit dem Texteditor Ihrer Wahl (z. B. gedit usw.).

sudo -H gedit /etc/default/grub

Suchen Sie die Zeile, die enthält GRUB_DEFAULT- das ist, was Sie bearbeiten möchten, um die Standardeinstellung festzulegen. Sie müssen den vollständigen Namen des gewünschten Kernels kennen - zB Ubuntu, with Linux 3.13.0-53-generic- zusammen mit dem vollständigen Namen des "erweiterten Menüs" - zB Advanced options for Ubuntu.

Anschließend kombinieren Sie diese beiden Zeichenfolgen mit >und stellen GRUB_DEFAULTsie wie GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"folgt ein : (einschließlich Anführungszeichen).

Speichern Sie es und erstellen Sie das aktualisierte Grub-Menü.

sudo update-grub

Siehe auch: GNU GRUB Manual 2.02 oder genauer Abschnitt 15.1.0 zum Festlegen der Standardeinstellungen .


Hinweis: Es gibt eine Methode, die Zahlen für den Zugriff auf Kernel und Menüs verwendet. Dies wird jedoch nicht empfohlen, da dies bei Kernelaktualisierungen unzuverlässig ist.

DaimyoKirby
quelle
24
Die Verwendung eines numerischen Werts kann bei Aktualisierungen problematisch sein. Es ist besser, einen Standardtext zu verwenden, dh: GRUB_DEFAULT = "Frühere Linux-Versionen> Ubuntu, mit Linux 3.2.0-18-generic"
Bealer
27
Man kann verwenden sudo grub-mkconfig | less, um alle möglichen Optionen zu sehen
Nitz
9
Dies ist eine gute Lösung, aber noch besser ist es, eine zu öffnen /boot/grub/grub.cfgund dort sehen Sie alles manuentryund alles submenus. Wenn Sie sie bearbeiten, können Sie einfach die Standardeinstellungen festlegen und sogar die Titel der Optionen in der Grub-Liste ändern, wenn Sie einen Computer neu starten.
Aleks
7
Es ist auf jeden Fall nützlich, /boot/grub/grub.cfgdie genauen zu verwendenden Namen zu ermitteln. Ändern Sie diese Datei jedoch nicht, da sie update-grubauch beim Aktualisieren von Paketen automatisch neu generiert wird .
Robie Basak
18
Die Formatierung für GRUB_DEFAULT ist etwas veraltet (seit mindestens Ubuntu 14.04.2). Laufe update-grubich eine Warnung aufgetreten: Bitte verwenden Sie keine alten Titel Previous Linux versions>Ubuntu, with Linux 3.13.0-53-genericfür GRUB_DEFAULT verwenden Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic(für Versionen vor 2.00) oder gnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c-453b-af59-419b56a2584f(für 2,00 oder höher)
Wumms
22

Die beste Lösung für mich war (in /etc/default/grub) zu setzen:

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

Mit diesen Einstellungen wird der zuletzt gewählte Wert für den nächsten Start beibehalten. Wenn Sie einen neuen Kernel haben, müssen Sie Ihre Konfiguration nicht bearbeiten.

Vergiss nicht, erneut zu rennen sudo update-grub

Die Lösung ist aus dem Lesen: info grub-mkconfig

Martin T.
quelle
4
Das ist großartig
Mephisto
Sind Sie sich über das Semikolon ( ;) am Ende der Zeilen sicher ?!?
DJCrashdummy
Ich kann nicht in meinen Computer schauen, wo ich ihn in diesem Moment benutzt habe, aber Sie haben Recht ";" scheint falsch oder unnötig zu sein!
Martin T.
21

Da ein AdvancedMenü in Ubuntu standardmäßig vorhanden ist, müssen Sie es vor dem Kernel auswählen, den Sie mit dem >Zeichen verwenden möchten .

Stellen Sie zB ein:

GRUB_DEFAULT="1>7"

in /etc/default/grubund erneut ausführen sudo update-grub.

Es ist wichtig zu beachten, dass für die GRUB-Menüeinträge die Nummerierung mit beginnt 0. Daher zeigt das 1oben auf das AdvancedMenü. Als Vorsichtsmaßnahme möchten Sie möglicherweise zunächst festlegen GRUB_TIMEOUT=5. Einige können möglicherweise nicht auf GRUB zugreifen, indem sie beim Booten eine Taste drücken. Dies ist ein Sicherheitsnetz, falls Sie versehentlich auf etwas zeigen Memory test. Es ist auch notwendig, die obigen Zahlen in Anführungszeichen zu setzen. Sonst geht es nicht.

Ich habe am 16.04 LTS getestet.

Sarnold
quelle
Funktioniert auch in Debian.
Lawrence D'Oliveiro
Ich finde diese Antwort sehr nützlich, da sie nach einem Kernel-Update immer noch auf den neuesten Kernel verweist. In meinem Setup ist es zum Beispiel 1> 0, was bedeutet: Advanced-First Listing (ist immer der neueste Kernel). Mein System hat irgendwann aufgehört, den Eintrag 0 von grub automatisch mit dem neuesten Kernel zu aktualisieren, daher verwende ich diese Methode.
Peter Fleix
9

Um festlegen zu können, welche Startoption als Standard verwendet werden soll, müssen Sie wissen, welche vorhanden sind.

Versuchen Sie Folgendes , um die Menüeinträge anzuzeigen, ohne tatsächlich zu booten :

$ lsb_release -s -rdc
Ubuntu 16.04.4 LTS
16.04
xenial

$ update-grub --version
grub-mkconfig (GRUB) 2.02 ~ beta2-36ubuntu3.17

$ grep -Ei 'Untermenü | Menüeintrag' /boot/grub/grub.cfg | sed -re "s / (.?) '([^'] +) '. * / \ 1 \ 2 /"
Menüeintrag Ubuntu
Untermenü Erweiterte Optionen für Ubuntu
    Menüeintrag Ubuntu, mit Linux 4.4.0-34-generisch
    Menüeintrag Ubuntu, mit Linux 4.4.0-34-generic (upstart)
    Menüeintrag Ubuntu, mit Linux 4.4.0-34-generisch (Wiederherstellungsmodus)
Menüeintrag Systemeinrichtung

Hannu
quelle