Como configurar corretamente a entrada de menu padrão do GRUB 2 correta?

23

Estou executando o GRUB 2.00 em um sistema Gentoo Linux.

Eu compilo meus próprios kernels manualmente, e então eu os instalo em /boot com make install . Eu tenho os seguintes kernels em /boot no momento:

# 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

A execução de grub2-mkconfig resulta na seguinte saída:

# 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

Se eu agora ler o arquivo /boot/grub2/grub.cfg resultante, observo que as seguintes entradas foram criadas:

  • Uma entrada principal padrão que inicia vmlinuz-3.7.4-gentoo-third
  • Um submenu com todas as outras entradas (incluindo as de recuperação), na mesma ordem que o comando grub2-mkconfig

O problema é que na hora da inicialização eu gostaria de carregar por padrão a quinta revisão do meu kernel ( vmlinuz-3.7.4-gentoo-5 ), não a terceira ( vmlinuz-3.7.4-gentoo-third ). Eu também prefiro não acessar o submenu para escolher o kernel correto para carregar.

Como posso alterar esse comportamento? Como posso dizer ao GRUB que quero executar a quinta revisão do meu kernel por padrão e não a terceira revisão mais antiga? Em geral, como posso alterar a linha de entrada padrão para corresponder ao kernel que eu quero e não um aleatório aparentemente escolhido pelo GRUB?

Eu também tentei colocar as seguintes linhas em /etc/default/grub :

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Isso não resolve o problema da maneira que desejo. Mas pelo menos o GRUB parece se lembrar do kernel mais recente do qual eu inicializei e o seleciona automaticamente no submenu. É só que eu não gosto de acessar o submenu.

    
por Francesco Turco 27.01.2013 / 13:27

10 respostas

8

Para selecionar uma entrada de menu no submenu "Opções avançadas" defina GRUB_DEFAULT="1 > 3". Agora você pode executar o grub2-mkconfig para gerar o arquivo de configuração do grub. Na próxima reinicialização vmlinuz-3.7.4-gentoo-5 deve inicializar.

Nota : Isso não alterará a entrada padrão no menu do grub, ou seja, a entrada padrão ainda indicará a mesma entrada que você tem agora. Mas a imagem que será inicializada por padrão será a quarta imagem sob as "Opções avançadas". Para tornar o vmlinuz-3.7.4-gentoo-5 como a entrada padrão no menu grub, a ordenação das imagens deve ser tal que o vmlinuz-3.7.4-gentoo-5 seja a primeira imagem quando você executar o grub2-mkconfig .

    
por 08.03.2015 / 07:59
4

você também pode usar GRUB_DEFAULT=saved . Neste caso, você usaria

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

ou se for apenas para o próximo boot:

$ 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.
    
por 14.03.2013 / 21:59
3

Se você tem um submenu no seu grub.cfg você deve usar dois dígitos como este:

grub-reboot '1>3'

O primeiro é o índice do menu, e o segundo é o índice do submenu.

Por exemplo, para inicializar a última entrada da configuração assim:

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

você deve usar:

grub-reboot '1>5'

e reinicie.

    
por 15.07.2016 / 12:26
2

Tente

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

Isso move todos os seus kernels não usados para um diretório de backup, agora:

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

Isso adiciona apenas r5 ao seu menu. Depois disso, leia isto este link e depois reame todos os kernels no diretório de backup algo diferente de vmlinuz se você insistir em mantê-los     

por 02.04.2014 / 00:50
1

com centos7 e grub2:

O grub usa a entrada 'saved_entry' do grubenv como padrão para inicializar, sniplet de /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

para verificar o que é o 'saved_entry' agora é minha compilação:     lista grub2-editenv     saved_entry = CentOS Linux (3.10.0-693.2.2.el7.ari.x86_64) 7 (Core)

para alterá-lo, por exemplo, para minha compilação de depuração:     grub2-editenv - conjunto saved_entry = 'CentOS Linux 3.10.0-693.2.2.el7.ari.x86_64.debug) 7 (Core)'

    
por 28.09.2017 / 07:50
0

Você pode definir a opção padrão por valor numérico. Se você definir

'GRUB_DEFAULT=3' 

em /etc/default/grub
Você definirá o padrão para a entrada do gentoo-5.% GRUB_DEFAULT é o deslocamento zero, portanto, 3 selecionará a quarta entrada como desejar.

    
por 27.01.2013 / 13:39
0

Eu suspeito que grub2-mkconfig ordena os kernels na ordem inversa, assumindo que eles contêm números de versão monotonicamente crescentes. Então, comece a escolher suas tags para se adequar a essa convenção.

    
por 02.04.2014 / 01:19
0

mv esses arquivos de versão novos / não usados em / boot para um diretório de backup, por exemplo / 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

reinicialize o sistema no modo de recuperação e, em seguida, escolha o grub na caixa de diálogo de recuperação, então tudo ficará bem.

é o método mais adequado, eu acho. Estou usando o Ubuntu 14.04.

    
por 21.05.2015 / 22:24
0

no Ubuntu:

sudo grub-pc

O grub-pc permite que você escolha o menu.

sudo update-grub

veja: link

    
por 21.05.2015 / 22:34
0

O que fiz para alcançar o resultado desejado foi:

  • defina o GRUB_DEFAULT=saved conforme descrito na grub-set-default help

    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.

  • Defina o valor padrão

    grub-set-default "1>2"

    Ele cria um novo arquivo em / boot / grub chamado grubenv com as informações necessárias.

  • Depois eu recrio o arquivo de configuração

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

E eu vi que a configuração foi alterada para usar o estado salvo:

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

    
por 08.03.2017 / 09:39

Tags