Doğru GRUB 2 varsayılan menü girişi nasıl doğru bir şekilde ayarlanır?


27

Gentoo Linux sisteminde GRUB 2.00 kullanıyorum.

Kendi çekirdeklerimi manuel olarak derlerim ve sonra onları birlikte /bootkurarım make install. /bootŞu anda aşağıdaki çekirdekleri var :

# 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

grub2-mkconfigAşağıdaki sonuçlarla çalışan sonuçlar:

# 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

Şimdi ortaya çıkan /boot/grub2/grub.cfgdosyayı okuduysanız , aşağıdaki girişlerin oluşturulduğunu fark ettim:

  • Başlayan ana varsayılan giriş vmlinuz-3.7.4-gentoo-third
  • Diğer tüm girişlerin (kurtarma girişleri dahil) grub2-mkconfigkomutuyla aynı sırada olduğu bir alt menü

Sorun şu ki önyükleme sırasında çekirdeğimin ( vmlinuz-3.7.4-gentoo-5) beşinci revizyonunu ( üçüncü değil) varsayılan olarak yüklemek istiyorum vmlinuz-3.7.4-gentoo-third. Ayrıca yüklenecek doğru çekirdeği seçmek için alt menüye erişmemeyi tercih ederim.

Bu davranışı nasıl değiştirebilirim? GRUB'a çekirdeğimin beşinci revizyonunu eski üçüncü revizyonu değil varsayılan olarak çalıştırmak istediğimi nasıl söyleyebilirim? Genel olarak, GRUB tarafından seçilen görünüşte rastgele bir değil, istediğim çekirdeğe göre varsayılan giriş satırını nasıl değiştirebilirim?

Ayrıca, aşağıdaki satırları koymayı da denedim /etc/default/grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Bu, sorunu istediğim gibi çözmüyor. Ancak, en azından GRUB, başlattığım en son çekirdeği hatırlıyor ve alt menüden otomatik olarak seçiyor. Sadece alt menüye erişmek istemiyorum.


-o /boot/grub2/grub.cfgÇıktı dosyası olarak belirttiğinizi fark ettim . Dizin /boot/grub/hala var mı?
ott--

Yanıtlar:


12

"Gelişmiş seçenekler" alt menüsü altında bir menü girişi seçmek için GRUB_DEFAULT = "1> 3" ayarlayın. Artık grub config dosyasını oluşturmak için grub2-mkconfig komutunu çalıştırabilirsiniz. Bir sonraki açılışta vmlinuz-3.7.4-gentoo-5 önyüklemeli.

Not : Bu, grub menüsündeki varsayılan girişi değiştirmez, yani, varsayılan giriş, şu an sahip olduğunuzla aynı girişi gösterir. Ancak, varsayılan olarak önyüklenecek olan resim, "Gelişmiş seçenekler" in altındaki 4. görüntü olacaktır. Grub menüsünde varsayılan giriş olarak vmlinuz-3.7.4-gentoo-5'i kullanmak için görüntülerin sıralaması, grub2-mkconfig komutunu çalıştırdığınızda vmlinuz-3.7.4-gentoo-5'in ilk resim olması gerektiği şekilde olmalıdır. .


2
Tırnak işaretlerinin önemli olduğunu unutmayın. Yani, GRUB_DEFAULT = 1> 3 çalışmayacak.
ctuffli

7

Grub.cfg dosyanızda bir alt menü varsa, bunun gibi iki basamak kullanmalısınız:

grub-reboot '1>3'

İlk menü endeksidir ve ikinci alt endeksidir.

Örneğin, son girişi config gibi önyüklemek için:

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' {

kullanmalısın:

grub-reboot '1>5'

ve yeniden başlat.


Tuhaf. alt menü dizini 0 ile başlar, ana menü 1
VarunAgw

5

Sen de kullanabilirsin GRUB_DEFAULT=saved. Bu durumda kullanırsın

$ 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.

veya yalnızca bir sonraki önyükleme içinse:

$ 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.

2

Deneyin

mkdir -p /boot/grub/backup
mv -v /boot/grub/vmlinuz-3.7.4-gentoo-{first,third,fourth} /boot/grub/backup

Bu, kullanılmayan tüm çekirdeklerinizi şimdi bir yedekleme dizinine taşır:

grub2-mkconfig -o /boot/grub/grub.cfg

Bu sadece r5menünüze seçenek ekler . Bunu yaptıktan sonra, bu linki okuyunuz ve daha sonra yedekleme dizinindeki bütün çekirdekleri vmlinuz'dan başka bir şey ile yeniden doldurunuz.


2

Centos7 (veya RHEL7) ve grub2 ile:

grub, önyükleme için varsayılan olarak grubenv'den 'saved_entry' girişini, /boot/grub2/grub.cfg adresinden sniplet'i kullanır:

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

'saved_entry'nin ne olduğunu kontrol etmek için şimdi benim derlemem:

grub2-editenv list

saved_entry=CentOS Linux (3.10.0-693.2.2.el7.ari.x86_64) 7 (Core)

Örneğin benim hata ayıklama derlememe değiştirmek için:

grub2-editenv - set saved_entry='CentOS Linux 3.10.0-693.2.2.el7.ari.x86_64.debug) 7 (Core)'

1

İstenen sonucu elde etmek için yaptığım şey:

  • yardımda GRUB_DEFAULT=savedbelirtildiği şekilde ayarlayıngrub-set-default

    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.

  • Varsayılan değeri ayarla

    grub-set-default "1>2"

    / Boot / grub içinde grubenv adında yeni bir dosya oluşturur ve gerekli bilgileri içerir.

  • Ondan sonra config dosyasını yeniden oluyorum

    grub-mkconfig > /boot/grub/grub.cfg

Yapılandırmanın kaydedilmiş durumu kullanacak şekilde değiştirildiğini gördüm:

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


0

Varsayılan seçimi, sayısal değere göre ayarlayabilirsiniz. Ayarlarsanız

`GRUB_DEFAULT=3` 

in /etc/default/grub
Varsayılanı gentoo-5 girişine ayarlarsınız.
GRUB_DEFAULTsıfır ofset, yani 3 dördüncü girişi istediğiniz gibi seçecektir.


2
Nedenini bilmiyorum ama işe yaramadı. Dediğin GRUB_DEFAULT=3gibi ayarladım , sonra tekrar koş grub2-mkconfig. Ancak önyükleme sırasında varsayılan giriş hala vmlinuz-3.7.4-gentoo-third.
Francesco Turco

1
Yorum GRUB_SAVEDEFAULT=trueyapmayı deneyin Önemli olmamalı, ancak sayısal olması gerekmez.
bsd

2
Dosyamda bu seçenek yok /etc/default/grub.
Francesco Turco,

0

grub2-mkconfigÖncelikle monoton olarak artan sürüm numaralarını içerdiğini varsayarak, çekirdekleri sırayla sıraladığından şüpheleniyorum . Bu nedenle bu sözleşmeye uyması için etiketlerinizi seçmeye başlayın.


0

mv bu yeni / kullanılmayan sürüm dosyalarını / boot / back / back / örneğin / 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-jenerik

sistemi yeniden kurtarma moduna alın, ardından kurtarma iletişim kutusundan grub'u seçin, sonra her şey yoluna girecek.

bence en uygun yöntem bu. Ubuntu 14.04 kullanıyorum.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.