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

  • Zauważyłem, że podałeś -o /boot/grub2/grub.cfg jako plik wyjściowy. Czy katalog /boot/grub/ nadal istnieje?

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 w grub-set-default pomocy

    grub-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 uruchamiam grub2-mkconfig. Jednak podczas uruchamiania domyślnym wpisem jest nadal vmlinuz-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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *