altere a ordem do carregador de boot GRUB no GRUB

1

Em nosso sistema, há dois sistemas operacionais Ubuntu instalados.

No momento da inicialização, o GRUB pergunta de onde o Ubuntu deve inicializar, mas agora tenho que adicionar um novo item de menu no GRUB e esse item de menu permitirá que o usuário altere o Linux padrão para inicializar.

Nafotoacima,eutenhoqueadicionarterceiroitemdemenu,estemenupermiteaousuárioselecionaronovosistemaoperacionaldeinicializaçãopadrão.Seousuárioselecionar"Definir o Linux 2 como padrão", a próxima vez na ordem de inicialização da reinicialização será como na imagem abaixo.

Eu encontrei documentações sobre a alteração da ordem de inicialização, mas esses documentos descrevem o processo dentro do Ubuntu, eu quero conseguir isso dentro do próprio GRUB. Como posso fazer isso?

    
por zenprogrammer 22.03.2017 / 07:48

2 respostas

2

Podemos conseguir isso usando o bloco de ambiente do Grub. . O bloco de ambiente é armazenado em /boot/grub/grubenv e esse arquivo é um pouco especial, tem um tamanho pré-alocado de 1024 bytes. Não devemos editar este arquivo com um editor de texto, mesmo que você possa abrir esse arquivo com um editor de texto para exibir seu conteúdo.

Podemos editar /boot/grub/grubenv com diferentes ferramentas:

Comando de terminal sudo grub-editenv [OPTION...] FILENAME COMMAND , consulte também man grub-editenv

Menu-entrada-comando save_env [-f file] var , veja detalhes no Manual GNU Grub

Se o arquivo /boot/grub/grubenv não sair, você poderá criá-lo com

sudo grub-editenv /boot/grub/grubenv create

Teremos que criar algumas entradas de menu personalizadas, link fornece informações úteis sobre como fazer isso. Edite /etc/grub.d/40_custom para que fique assim:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
#
submenu 'Set boot default' {
    menuentry 'Set first entry as default' {
            set saved_entry=0
                save_env saved_entry
                reboot  
    }
    menuentry 'Set second entry as default' {
        set saved_entry=1
                save_env saved_entry
                reboot
    }
}

Se já tivermos entradas de menu personalizadas no arquivo, apenas anexamos as linhas após as linhas de comentário em nosso arquivo. Os comandos nas entradas de menu agem da seguinte forma:

set saved_entry    set the environment variable saved_entry to the specified value.
Save_env saved_entry    stores the variable saved_entry in /boot/grub/grubenv.
reboot                  reboot the machine

Além disso, precisaremos editar /etc/default/grub , que contém a configuração básica do Grub. Novamente, no Manual do GNU Grub, encontraremos informações detalhadas .

Em /etc/default/grub , precisamos alterar o valor de GRUB_DEFAULT para GRUB_DEFAULT=saved . Isso forçará o Grub a carregar a entrada de menu padrão de /boot/grub/grubenv quando nós arrancarmos. Se você encontrar uma linha com GRUB_SAVEDEFAULT=true , remova essa linha.

Para aplicar as alterações que fizemos no arquivo de configuração principal do Grub, /boot/grub/grub.cfg , temos que executar sudo update-grub .

Como próximo passo, corremos sudo grub-editenv - set saved_entry=0 em um terminal. Fazemos isso para evitar conflitos, quando o Grub for inicializado da próxima vez, o Grub procurará por saved-entry em /boot/grub/grubenv e é capaz de encontrá-lo.

Agora podemos reiniciar, quando o menu Grub aparecer, veremos o submenu adicionado na lista, abrimos e selecionamos uma das entradas. O Grub definirá saved_entry para o valor especificado, salve-o para /boot/grub/grubenv e, em seguida, reinicie. Grub-menu aparece novamente e veremos que o novo padrão é selecionado automaticamente.

Mais uma coisa para pensar

Em qual sistema operacional temos que fazer essas alterações? Temos duas distribuições Linux instaladas e ambas são enviadas com o Grub. Com as informações de um Boot-Info-summary e o terminal-comando findmnt , devemos ser capazes de identificar a distribuição que detém e controla os arquivos de configuração. Nesta distribuição, temos que executar os passos acima. Na outra distribuição, o Grub não é necessário e deve ser removido ou até purgado, apenas para evitar qualquer tipo de conflito.

Informações adicionais:

Testei isso no meu sistema com a versão do Grub 2.02~beta2-36ubuntu3.8 .

    
por mook765 24.03.2017 / 07:17
0

cd / etc / default /

vim grub

altere o GRUB_DEFAULT = 0 para o que você deseja.

OR

cd / boot / grub

vim grub.cfg

aqui tenha cuidado ao editar

Reorganize as funções do menuentries e você poderá ver isso no gerenciador de inicialização.

    
por Prawin 22.03.2017 / 08:05