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
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 nagrub-set-default
ajudagrub-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 novamentegrub2-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.
-o /boot/grub2/grub.cfg
como arquivo de saída. O diretório/boot/grub/
ainda existe?