Estou executando o GRUB 2.00 em um sistema Gentoo Linux.

Compilo meus próprios kernels manualmente e depois os instalo em /boot com make install. 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 

Executar 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, noto que as seguintes entradas foram criadas:

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

O problema é que no momento 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 o terceiro (vmlinuz-3.7.4-gentoo-third). Eu também prefiro não acessar o submenu para escolher o kernel certo para carregar.

Como posso mudar este comportamento? Como posso dizer ao GRUB que desejo executar a quinta revisão do meu kernel por padrão e não a terceira revisão anterior? Em geral, como posso alterar a linha de entrada padrão para corresponder ao kernel que desejo e não a uma aparentemente aleatória escolhida pelo GRUB?

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 inicializei e seleciona-o automaticamente no submenu. É que não gosto de acessar o submenu.

Comentários

  • Percebi que você especificou -o /boot/grub2/grub.cfg como arquivo de saída. O diretório /boot/grub/ ainda existe?

Resposta

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

Observação : Isso não mudará a entrada padrão em o menu 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 4ª imagem nas “Opções avançadas”. Para tornar o vmlinuz-3.7.4-gentoo-5 a entrada padrão no menu grub, a ordem das imagens deve ser tal que o vmlinuz-3.7.4-gentoo-5 deve ser a primeira imagem quando você executa o grub2-mkconfig .

Comentários

  • Observe que as aspas são importantes. Ou seja, GRUB_DEFAULT = 1 > 3 ganhou ‘ t funciona.

Resposta

Se você tem um submenu em 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 como este:

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.

Comentários

  • Estranho. o índice do submenu começa com 0, enquanto o menu principal começa com 1

Resposta

você também pode usar GRUB_DEFAULT=saved. Nesse caso, você “d usará

$ 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 a próxima inicialização:

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

Resposta

Com centos7 (ou RHEL7) e grub2:

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 é “saved_entry” agora é minha compilação:

grub2-editenv list 

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 - set saved_entry="CentOS Linux 3.10.0-693.2.2.el7.ari.x86_64.debug) 7 (Core)" 

Resposta

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 apenas adiciona a opção r5 ao seu menu. Depois de fazer isso, leia este este link e, em seguida, remova todos os kernels no diretório de backup diferente de vmlinuz se você insistir em mantê-los

Resposta

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

  • definir o GRUB_DEFAULT=saved conforme descrito na grub-set-default ajuda

    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"

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

  • Depois disso, 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

Resposta

Você pode definir a escolha padrão pelo valor numérico. Se você definir

`GRUB_DEFAULT=3` 

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

Comentários

  • Eu não ‘ não sei por que, mas parece que não ‘ não funciona. Defino GRUB_DEFAULT=3 como você disse e executei novamente grub2-mkconfig. Mas, no momento da inicialização, a entrada padrão ainda é vmlinuz-3.7.4-gentoo-third.
  • Tente comentar GRUB_SAVEDEFAULT=true Não deveria ‘ não importa, mas ‘ não é necessário com nume rical.
  • Eu não ‘ não tenho essa opção em meu arquivo /etc/default/grub.

Resposta

Suspeito que grub2-mkconfig classifica os kernels em ordem reversa, supondo que eles principalmente contêm números de versão monotonicamente crescentes. Portanto, comece a escolher suas tags para se ajustar a essa convenção.

Resposta

no ubuntu:

sudo grub-pc 

grub-pc permitirá que você escolha qual menu.

sudo update-grub 

veja: https://askubuntu.com/questions/384388/how-to-select-option-in-configuration-grub-pc-menu

Resposta

mv os 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 resgate, depois escolha grub na caixa de diálogo de resgate, então tudo ficará bem.

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

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *