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?


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.


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


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.