Używam GRUB 2.00 w systemie Gentoo Linux.
Skompilować własne jądro ręcznie, a następnie zainstalować je w /boot
z make install
. W tej chwili mam następujące jądra /boot
:
# ls -1 /boot/vmlinuz*
/boot/vmlinuz-3.7.4-gentoo-5
/boot/vmlinuz-3.7.4-gentoo-first
/boot/vmlinuz-3.7.4-gentoo-fourth
/boot/vmlinuz-3.7.4-gentoo-third
Uruchamianie grub2-mkconfig
daje następujące wyniki:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.7.4-gentoo-third
Found linux image: /boot/vmlinuz-3.7.4-gentoo-fourth
Found linux image: /boot/vmlinuz-3.7.4-gentoo-first
Found linux image: /boot/vmlinuz-3.7.4-gentoo-5
done
Jeśli teraz przeczytam wynikowy /boot/grub2/grub.cfg
plik, zauważę, że zostały utworzone następujące wpisy:
- Główny domyślny wpis, który się rozpoczyna
vmlinuz-3.7.4-gentoo-third
- Podmenu z wszystkimi pozostałymi wpisami (w tym odzyskiwania), w tej samej kolejności, co
grub2-mkconfig
polecenie
Problem polega na tym, że w czasie uruchamiania chciałbym załadować domyślnie piątą wersję mojego jądra ( vmlinuz-3.7.4-gentoo-5
), a nie trzecią ( vmlinuz-3.7.4-gentoo-third
). Wolę też nie wchodzić do podmenu, aby wybrać odpowiednie jądro do załadowania.
Jak mogę zmienić to zachowanie? Jak mogę powiedzieć GRUB, że domyślnie chcę uruchomić piątą wersję mojego jądra, a nie starszą trzecią wersję? Ogólnie, jak mogę zmienić domyślną linię wprowadzania, aby pasowała do jądra, którego chcę, a nie na pozornie losowy wybrany przez GRUB?
Próbowałem także wstawić następujące wiersze /etc/default/grub
:
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
To nie rozwiązuje problemu tak, jak sobie tego życzę. Ale przynajmniej GRUB wydaje się pamiętać ostatnie jądro, z którego się uruchomiłem i automatycznie wybiera je z podmenu. Po prostu nie lubię wchodzić do podmenu.
-o /boot/grub2/grub.cfg
jako plik wyjściowy. Czy katalog/boot/grub/
nadal istnieje?Odpowiedzi:
Aby wybrać pozycję menu w podmenu „Opcje zaawansowane”, ustaw GRUB_DEFAULT = „1> 3”. Możesz teraz uruchomić grub2-mkconfig, aby wygenerować plik konfiguracyjny grub. Podczas następnego restartu vmlinuz-3.7.4-gentoo-5 powinien się uruchomić.
Uwaga : nie zmieni to domyślnego wpisu w menu grub, tzn. Domyślny wpis nadal będzie wskazywał ten sam wpis, który masz teraz. Ale obraz, który zostanie domyślnie uruchomiony, będzie czwartym obrazem w „Opcjach zaawansowanych”. Aby ustawić vmlinuz-3.7.4-gentoo-5 jako domyślną pozycję w menu grub, kolejność obrazów powinna być taka, aby vmlinuz-3.7.4-gentoo-5 był pierwszym obrazem po uruchomieniu grub2-mkconfig .
źródło
Jeśli masz podmenu w swoim pliku grub.cfg, powinieneś użyć dwóch takich cyfr:
Pierwszy jest indeks menu, a drugi to indeks podmenu.
Na przykład, aby uruchomić ostatni wpis z konfiguracji w następujący sposób:
powinieneś użyć:
i uruchom ponownie.
źródło
równie dobrze możesz użyć
GRUB_DEFAULT=saved
. W takim przypadku użyłbyślub jeśli dotyczy tylko następnego rozruchu:
źródło
Próbować
Przenosi to wszystkie nieużywane jądra do katalogu kopii zapasowej, teraz:
To tylko dodaje wybór
r5
do twojego menu. Po ten sposób przeczytać ten link, a następnie reame wszystkie jądra w katalogu kopii zapasowych czymś innym niż vmlinuz jeśli nalegać na utrzymanie ichźródło
Z centos7 (lub RHEL7) i grub2:
grub używa domyślnie opcji „save_entry” z grubenv do bootowania, sniplet z /boot/grub2/grub.cfg:
sprawdzenie, co to jest „zapisane_wejście”, jest teraz moją wersją:
aby to zmienić np. do mojej wersji debugowania:
źródło
To, co zrobiłem, aby osiągnąć pożądany rezultat, to:
ustaw
GRUB_DEFAULT=saved
zgodnie z opisem wgrub-set-default
pomocygrub-set-default Menu entry not specified. Usage: grub-set-default [OPTION] MENU_ENTRY Set the default boot menu entry for GRUB. This requires setting GRUB_DEFAULT=saved in /etc/default/grub. -h, --help print this message and exit -V, --version print the version information and exit --boot-directory=DIR expect GRUB images under the directory DIR/grub instead of the /boot/grub directory MENU_ENTRY is a number, a menu item title or a menu item identifier.
Ustaw wartość domyślną
grub-set-default "1>2"
Tworzy nowy plik w / boot / grub o nazwie grubenv z wymaganymi informacjami.
Następnie ponownie tworzę plik konfiguracyjny
grub-mkconfig > /boot/grub/grub.cfg
Widziałem, że konfiguracja została zmieniona, aby używać stanu zapisanego:
if [ "${next_entry}" ] ; then set default="${next_entry}" set next_entry= save_env next_entry set boot_once=true else set default="${saved_entry}" fi
źródło
Możesz ustawić domyślny wybór według wartości liczbowej. Jeśli ustawisz
w
/etc/default/grub
Ustawisz domyślnie wpis gentoo-5.
GRUB_DEFAULT
jest przesunięciem zera, więc 3 wybierze czwarty wpis, jak chcesz.źródło
GRUB_DEFAULT=3
tak, jak powiedziałeś, a następnie uruchom ponowniegrub2-mkconfig
. Ale w czasie uruchamiania domyślny wpis jest nadalvmlinuz-3.7.4-gentoo-third
.GRUB_SAVEDEFAULT=true
To nie powinno mieć znaczenia, ale nie jest potrzebne w przypadku liczb./etc/default/grub
pliku.Podejrzewam, że
grub2-mkconfig
sortuje jądra w odwrotnej kolejności, zakładając, że zawierają one głównie monotonicznie rosnące numery wersji. Zacznij więc wybierać tagi, aby pasowały do tej konwencji.źródło
mv te nowe / nieużywane pliki wersji w katalogu / boot do katalogu kopii zapasowej, na przykład / boot / back initrd.img-3.13.0-xx-generic
vmlinuz-3.13.0-xx-generic config-3.13.0-xx-generic System.map-3.13.0-xx-generic
zrestartuj system w trybie ratunkowym, następnie wybierz grub w oknie dialogowym ratunkowym, wtedy wszystko będzie dobrze.
myślę, że jest to najbardziej odpowiednia metoda. Używam Ubuntu 14.04.
źródło
w ubuntu:
grub-pc pozwoli ci wybrać które menu.
patrz: /ubuntu/384388/how-to-select-option-in-configuration-grub-pc-menu
źródło