Introdução
O GRUB 2 é atualmente, a versão padrão instalada na maioria das distribuições GNU/Linux. O GRUB é um carregador de boot ou boot loader e sua função é carregar o sistema operacional e transferir-lhe o controle sobre o sistema de hardware. Cabe ao kernel, por sua vez, terminar de carregar o restante do sistema.
Melhorias em relação ao GRUB
- Apoio de scripts
- Módulo de carregamento dinâmico
- Modo de recuperação
- Menus personalizados
- Temas
- Suporte ao menu gráfico
- Nova estrutura de arquivos de configuração
Configuração do GRUB 2
O GRUB 2 constrói todo o seu menu, /boot/grub2/grub.cfg, através de scripts disponíveis no diretório /etc/grub.d/. Vale ressaltar que os parâmetros são definidos no arquivo /etc/default/grub.
Nas melhores práticas este arquivo não deve ser editado de forma manual, pois dependendo das atualizações de kernel, por exemplo, todas as configurações poderão ser substituídas.
O arquivo grub.cfg é dividido em diversas seções, definidas por ### BEGIN antes de referir-se a um dos scripts a ser executado. Para encerrar a referência, é usado um ### END.
O Sistema de Configuração
Como mencionado anteriormente, o GRUB é populado por vários scripts que se encontram na pasta /etc/grub.d.
Sempre que o update-grub é executado, estes scripts são executados na ordem em que são numerados, fazendo com que um novo arquivo /boot/grub/grub.cfg seja gerado e a configuração atualizada.
00_header | lê as variáveis de ambiente e ajusta os parâmetros e configurações, preparando o terreno para a execução dos outros scripts. |
10_linux | adiciona as entradas do sistema principal, incluindo as diferentes versões do kernel que estejam instaladas |
20_linux_xen | faz o mesmo com versões do kernel com suporte ao Xen (caso alguma esteja instalada) |
30_os-prober | Indicam os Sistemas Operacionais instalados |
40_custom e 41_custom | são dedicados à inserção de scripts personalizados com outras funções que você queira executar. |
Como configurar o GRUB 2
Dentre as várias maneiras de configurar o GRUB, a mais simples é editar o arquivo /etc/default/grub.
GRUB_TIMEOUT –> define o tempo de espera na inicialização;
GRUB_DISTRIBUTOR –> contém o nome da distribuição. É usado para gerar mais títulos de entrada no menu;
GRUB_DEFAULT –> especifica a entrada padrão. Pode ser o número ou o título da entrada;
GRUB_DISABLE_SUBMENU –> permite ou não o display de submenu;
GRUB_TERMINAL_OUTPUT –> selecione o dispositivo de saída do terminal;
GRUB_CMDLINE_LINUX –> Argumentos de linha de comando para adicionar entradas de menu para o kernel do Linux;
GRUB_DISABLE_RECOVERY –> Se esta opção estiver definida como “true”, a geração de entradas de modo de recuperação é desabilitada;
- Depois de completar a configuração desejada, é necessário gerar o update-grub.
# grub2-mkconfig > /boot/grub2/grub.cfg
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Alterar o kernel de inicialização ao grub.cfg
Para mudança do kernel default de inicialização, faremos o passo abaixo:
- Identificar a opção que foi iniciada automaticamente.
# grub2-editenv list
- Identificar as linhas exibidas no momento de inicialização do servidor:
# grep “^menuentry” /boot/grub2/grub.cfg | cut -d “‘” -f2
- Classificar cada linha de entrada.
# awk -F\’ ‘$1==”menuentry ” {print i++ ” : ” $2}’ /etc/grub2.cfg
- Setar o novo kernel para inicialização.
# grub2-set-default 2 (número da linha a ser repassado)
- Finalizar e gravar as alterações no arquivo /boot/grub2/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg
Configurar o visual do menu de inicialização GRUB
O papel de parede do menu GRUB pode ser facilmente trocado, de forma que possamos usar uma imagem que reflita o logotipo da empresa.
REQUISITOS DA IMAGEM
- Formatos JPG/JPEG, PNG e TGA;
- Profundidade de cores (JPG/JPEG) deve ser, no máximo, 8-bit (256 cores);
- Certifique-se de que estejam em RGB (o GRUB não aceita imagem indexada).
- Copiar a imagem (logo.tga) para o diretório desejado:
# scp logo.tga cliente:/root
- Editar o grub:
vi /etc/default/grub
Duas mudanças:
GRUB_BACKGROUND=”/root/logo.tga”
# GRUB_TERMINAL_OUTPUT=”console”
- Atualizar o grub com as alterações realizadas:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Remover versões antigas do Kernel
Com o passar de tempo do sistema operacional instalado, além das novas versões dos softwares que você usa e as correções de segurança, novas versões do kernel também chegam e desta forma, o sistema passa a usar a nova versão e não remove as antigas, que vão se acumulando.
Todas as versões instaladas são exibidas no menu de inicialização. Para que possamos limpar estas entradas do menu, podemos simplesmente deletar ou comentar as linhas correspondentes dentro do arquivo /boot/grub2/grub.cfg. Vale ressaltar que este simples procedimento não irá remover as linhas de kernel antigo, porém irá ocultá-las até que seja realizado o comando grub-update (grub2-mkconfig -o /boot/grub2/grub.cfg).
- Para listar os kernels presentes no seu sistema, será utilizado o comando de gestão de pacotes.
# rpm -qa | grep kernel
- Para quem deseja ver o kernel em uso, no momento, use o comando uname:
# uname –a
- Para remover as versões do kernel que não estão mais em uso
# yum remove kernel-3.10.0-693.el7.x86_64
- Em seguida, é importante atualizar o GRUB:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Referências
GNU GRUB
https://www.gnu.org/software/grub/
An introduction to GRUB2 configuration for your Linux machine
https://opensource.com/article/17/3/introduction-grub2-configuration-linux
Redhat Customer Portal – customizing the grub 2 configuration file
https://access.redhat.com/documentation/en-s/red_hat_enterprise_linux/7/html/system_administrators_guide
GRUB 2 bootloader – Full tutorial
https://www.dedoimedo.com/computers/grub-2.html