Ustaw „starsze” jądro jako domyślny wpis grub

93

Zainstalowałem jądro linii głównej do celów testowych. Chciałbym domyślnie ustawić grub, aby uruchamiał się ze starszego jądra.

Wiem, że mogę ustawić GRUB_DEFAULT=0ustawienie dla pierwszej strony gruba, ale jak mogę ustawić domyślne uruchamianie z jednego jądra na drugiej stronie (strona zaawansowana)?

Wolałbym to robić bez instalowania innego oprogramowania (np. Grub-customizer).

Powiązane pytania:
Jak ustawić system Windows, aby uruchamiał się jako domyślny w module ładującym?
Jak zmienić kolejność uruchamiania grub?

Do zrobienia
źródło
3
@belacqua: To nie jest duplikat. To pytanie dotyczy ustawienia domyślnego starszego jądra, którego nie ma na pierwszej stronie opcji gruba.
Aby zrobić
Wygląda na to, że ten przypadek powinien zostać omówiony we wcześniejszych pytaniach, nawet jeśli metoda wymaga aktualizacji dla wersji 12.10, starszych jąder itp.
belacqua,
3
Przypadek użycia pytania jest inny, a odpowiedź jest bardzo szczegółowa w sposób, który nie ma zastosowania do innych zgłoszonych duplikatów. Przybyłem tutaj, aby rozwiązać ten konkretny problem; nie zmieniać kolejności rozruchu; ani do uruchamiania systemu Windows. +1 za „nie duplikat”.
Robie Basak,

Odpowiedzi:

128

Najpierw wykonaj kopię zapasową /etc/default/grub. Jeśli coś pójdzie nie tak, możesz łatwo powrócić do dobrze znanej kopii.

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

Następnie edytuj plik za pomocą edytora tekstu (np. Gedit itp.).

sudo -H gedit /etc/default/grub

Znajdź linię, która zawiera GRUB_DEFAULT- właśnie to chcesz edytować, aby ustawić wartość domyślną. Musisz znać pełną nazwę żądanego jądra - np. Ubuntu, with Linux 3.13.0-53-genericWraz z pełną nazwą „menu zaawansowanego” - np Advanced options for Ubuntu.

Następnie łączysz te dwa ciągi >i ustawiasz GRUB_DEFAULTje jako: GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"(w tym cudzysłowy).

Zapisz go, a następnie skompiluj zaktualizowane menu grub.

sudo update-grub

Zobacz także: Podręcznik GNU GRUB 2.02 lub dokładniej rozdział 15.1.0 na temat ustawiania wartości domyślnej .


Uwaga: Istnieje metoda wykorzystująca liczby do uzyskiwania dostępu do jądra i menu, ale nie jest to zalecane, ponieważ jest zawodne w przypadku aktualizacji jądra.

DaimyoKirby
źródło
24
Użycie wartości liczbowej może być problematyczne w przypadku aktualizacji. Lepiej jest użyć domyślnej wartości tekstowej, tj .: GRUB_DEFAULT = „Poprzednie wersje Linux> Ubuntu, z Linuksem 3.2.0-18-generic”
Bealer
27
Można użyć, sudo grub-mkconfig | lessaby zobaczyć wszystkie możliwe opcje
Nitz
9
To dobre rozwiązanie, ale jeszcze lepiej jest otworzyć /boot/grub/grub.cfgi tam zobaczysz wszystkie manuentryi wszystkie submenus. Jeśli je edytujesz, możesz łatwo ustawić domyślne, a nawet zmienić Tytuły opcji na liście grub podczas ponownego uruchamiania komputera.
Aleks
7
Zdecydowanie przydatne jest sprawdzenie, /boot/grub/grub.cfgaby określić dokładne nazwy do użycia. Ale nie zmieniaj tego pliku, ponieważ zostanie on automatycznie zregenerowany update-grub, w tym podczas aktualizacji pakietów.
Robie Basak,
18
Formatowanie GRUB_DEFAULT jest nieco nieaktualne (od co najmniej Ubuntu 14.04.2). Uruchamianie update-grubnatknąłem ostrzeżenie: Proszę nie używać starych tytuł Previous Linux versions>Ubuntu, with Linux 3.13.0-53-genericdla GRUB_DEFAULT używać Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic(dla wersji przed 2.00) lub gnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c-453b-af59-419b56a2584f(do 2.00 lub nowszy)
Wumms
22

Najlepszym rozwiązaniem dla mnie było ustawienie (włączenie /etc/default/grub):

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

Przy tych ustawieniach ostatnia wybrana wartość jest zachowywana dla następnego rozruchu. Jeśli masz nowe jądro, nie musisz edytować konfiguracji.

Nie zapomnij uruchomić ponownie sudo update-grub

Rozwiązanie pochodzi z czytania: info grub-mkconfig

Martin T.
źródło
4
To jest niesamowite
Mefisto
czy jesteś pewien średnika ( ;) na końcu linii?!?
DJCrashdummy
Nie mogę zajrzeć do mojego komputera, na którym go użyłem, ale masz rację ";" wydaje się być zły lub niepotrzebny!
Martin T.
21

Teraz, gdy Advancedmenu jest domyślne w Ubuntu, musisz wybrać je przed jądrem, którego chcesz użyć tej >postaci.

Ustaw np .:

GRUB_DEFAULT="1>7"

w /etc/default/grubi re-run sudo update-grub.

Należy zauważyć, że numeracja wpisów w menu GRUB zaczyna się od 0. Dlatego 1powyższe punkty wskazują Advancedmenu. Jako środek ostrożności, możesz początkowo ustawić GRUB_TIMEOUT=5. Niektórzy mogą nie być w stanie uzyskać dostępu do GRUB, naciskając klawisz w czasie rozruchu. Jest to siatka bezpieczeństwa na wypadek, gdybyś przypadkowo wskazał coś takiego Memory test. Konieczne jest również zawarcie powyższych liczb w cudzysłowie. W przeciwnym razie nie zadziała.

Testowałem na 16.04 LTS.

Sarnold
źródło
Działa również w Debianie.
Lawrence D'Oliveiro
Uważam tę odpowiedź za bardzo przydatną, ponieważ po aktualizacji jądra nadal wskazuje ona na najnowsze jądro. na przykład w moim ustawieniu jest to 1> 0, co oznacza: listowanie zaawansowane-pierwsze (zawsze jest to najnowsze jądro). mój system kiedyś zatrzymał się, aby automatycznie zaktualizować wpis 0 gruba w najnowszym jądrze, więc używam tej metody.
Peter Fleix,
9

Aby móc ustawić domyślną opcję rozruchu, musisz wiedzieć, co tam jest ... więc:

Aby wyświetlić pozycje menu bez uruchamiania , spróbuj czegoś takiego:

$ 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 'submenu | menuentry' /boot/grub/grub.cfg | sed -re "s / (.?) '([^'] +) '. * / \ 1 \ 2 /"
menuentry Ubuntu
podmenu Zaawansowane opcje dla Ubuntu
    menuentry Ubuntu, z systemem Linux 4.4.0-34-generic
    menuentry Ubuntu, z Linux 4.4.0-34-generic (upstart)
    menuentry Ubuntu, z Linux 4.4.0-34-generic (tryb odzyskiwania)
menuentry Konfiguracja systemu

Hannu
źródło