Używam GRUB 2.00 w systemie Gentoo Linux.
Ręcznie kompiluję własne jądra, a następnie instaluję je w /boot
z make install
. W tej chwili mam następujące jądra w /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
Uruchomienie grub2-mkconfig
daje następujący wynik:
# 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 plik /boot/grub2/grub.cfg
, zauważę, że zostały utworzone następujące wpisy:
- Główny domyślny wpis, który uruchamia
vmlinuz-3.7.4-gentoo-third
- Podmenu zawierające wszystkie inne wpisy (w tym pozycje odzyskiwania), w tej samej kolejności co
grub2-mkconfig
polecenie
Problem polega na tym, że podczas rozruchu chciałbym domyślnie załadować piątą wersję mojego jądra (vmlinuz-3.7.4-gentoo-5
), nie trzeci (vmlinuz-3.7.4-gentoo-third
). Wolę też nie wchodzić do podmenu w celu wybrania odpowiedniego jądra do załadowania.
Jak mogę zmienić to zachowanie? Jak mogę powiedzieć GRUB-owi, że chcę domyślnie uruchomić piątą wersję mojego jądra, a nie starszą trzecią? Ogólnie rzecz biorąc, jak mogę zmienić domyślną linię wprowadzania, aby pasowała do jądra, które chcę, a nie na pozornie losowy wybrany przez GRUB?
Próbowałem również umieścić następujące wiersze w /etc/default/grub
:
GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=true
To nie rozwiązuje problemu tak, jak sobie tego życzyłem. Ale przynajmniej wydaje się, że GRUB pamięta najnowsze jądro, z którego uruchomiłem i automatycznie wybiera go z podmenu. Po prostu nie lubię wchodzić do podmenu.
Komentarze
Odpowiedź
Aby wybrać pozycję menu w podmenu „Opcje zaawansowane” ustaw GRUB_DEFAULT = „1> 3”. Możesz teraz uruchomić grub2-mkconfig, aby wygenerować plik konfiguracyjny grub . Przy następnym restarcie vmlinuz-3.7.4-gentoo-5 powinien się uruchomić.
Uwaga : To nie zmieni domyślnego wpisu w menu grub, tj. 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 .
Komentarze
- Zwróć uwagę, że cudzysłowy są ważne. To znaczy. GRUB_DEFAULT = 1 > 3 wygrane ' t działa.
Odpowiedź
Jeśli masz podmenu w swoim grub.cfg, powinieneś użyć dwie cyfry w ten sposób:
grub-reboot "1>3"
pierwsza to indeks menu, a druga to indeks podmenu .
Na przykład, aby załadować ostatni wpis z konfiguracji w ten sposób:
grep menu /boot/grub/grub.cfg menuentry "Debian GNU/Linux" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-simple-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { submenu "Advanced options for Debian GNU/Linux" $menuentry_id_option "gnulinux-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-4.6.0-0.bpo.1-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (sysvinit)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-4.6.0-0.bpo.1-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (recovery mode)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-4.6.0-0.bpo.1-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 3.16.0-4-amd64" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-3.16.0-4-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 3.16.0-4-amd64 (sysvinit)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-3.16.0-4-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 3.16.0-4-amd64 (recovery mode)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-3.16.0-4-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" {
należy użyć:
grub-reboot "1>5"
i uruchom ponownie.
Komentarze
- Dziwne. Indeks podmenu zaczyna się od 0, natomiast menu główne od 1
Odpowiedź
równie dobrze możesz użyć GRUB_DEFAULT=saved
. W tym przypadku „d użyjesz
$ grub2-set-default -h Usage: grub2-set-default [OPTION] MENU_ENTRY Set the default boot menu entry for 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/grub2 instead of the /boot/grub2 directory MENU_ENTRY is a number, a menu item title or a menu item identifier.
lub jeśli jest to tylko przy następnym uruchomieniu:
$ grub2-reboot -h Usage: grub2-reboot [OPTION] MENU_ENTRY Set the default boot menu entry for GRUB, for the next boot only. -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/grub2 instead of the /boot/grub2 directory MENU_ENTRY is a number, a menu item title or a menu item identifier.
Odpowiedź
Z centos7 (lub RHEL7) i grub2:
grub używa wpisu „save_entry” z grubenv jako domyślny do rozruchu, sniplet z /boot/grub2/grub.cfg:
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
, aby sprawdzić, co to jest „save_entry” to teraz moja kompilacja:
grub2-editenv list
saved_entry=CentOS Linux (3.10.0-693.2.2.el7.ari.x86_64) 7 (Core)
aby zmienić np. Na moją wersję debugowania:
grub2-editenv - set saved_entry="CentOS Linux 3.10.0-693.2.2.el7.ari.x86_64.debug) 7 (Core)"
Odpowiedź
Spróbuj
mkdir -p /boot/grub/backup mv -v /boot/grub/vmlinuz-3.7.4-gentoo-{first,third,fourth} /boot/grub/backup
Spowoduje to przeniesienie wszystkich nieużywanych jąder do katalogu kopii zapasowych, teraz:
grub2-mkconfig -o /boot/grub/grub.cfg
To dodaje tylko wybór r5
do twojego menu. Po wykonaniu tej czynności przeczytaj ten ten link , a następnie zmień nazwę wszystkich jąder w katalogu kopii zapasowych na coś innego niż vmlinuz, jeśli nalegasz na ich zachowanie
Odpowiedź
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ć zapisanego stanu:
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
Odpowiedź
Domyślny wybór można ustawić za pomocą wartości liczbowej. Jeśli ustawisz
`GRUB_DEFAULT=3`
w /etc/default/grub
Domyślnie ustawisz wpis gentoo-5.
GRUB_DEFAULT
to zero offset, więc 3 wybierze czwarty wpis, jak sobie życzysz.
Komentarze
- Nie ' nie wiem dlaczego, ale to wygląda na to, że nie ' nie działa. Ustawiam
GRUB_DEFAULT=3
tak, jak powiedziałeś, a następnie ponownie uruchamiamgrub2-mkconfig
. Jednak podczas uruchamiania domyślnym wpisem jest nadalvmlinuz-3.7.4-gentoo-third
. - Spróbuj wykomentować
GRUB_SAVEDEFAULT=true
Nie powinno ' Nie ma znaczenia, ale ' nie jest potrzebne z nume rical. - Nie ' nie mam tej opcji w moim pliku
/etc/default/grub
.
Odpowiedź
Podejrzewam, że grub2-mkconfig
sortuje jądra w odwrotnej kolejności, zakładając, że głównie zawierają monotonicznie rosnące numery wersji. Więc zacznij wybierać tagi, aby pasowały do tej konwencji.
Odpowiedz
w ubuntu:
sudo grub-pc
grub-pc pozwoli ci wybrać menu.
sudo update-grub
zobacz: https://askubuntu.com/questions/384388/how-to-select-option-in-configuration-grub-pc-menu
Odpowiedź
mv
te nowe / nieużywane pliki wersji w /boot
do katalogu kopii zapasowych, 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 tryb ratunkowy, następnie wybierz grub w oknie ratunkowym, wtedy wszystko będzie dobrze.
Myślę, że jest to najbardziej odpowiednia metoda. Używam ubuntu 14.04.
-o /boot/grub2/grub.cfg
jako plik wyjściowy. Czy katalog/boot/grub/
nadal istnieje?