Personalizando o GRUB no Ubuntu, sem programas


As vezes é frustrante você percorrer fóruns e grupos atrás de como configurar algum programa ou serviço e te jogarem como solução um programa que faz aparentemente tudo por você. Não sou contra o grub-customizer, acho até que ele quebra um galho para aqueles que querem apenas uma personalização rápida, mas o grande problema é que você perde mágica de descobrir como as coisas funcionam. 

Alterando as Funcionalidades


O GRUB2, versão mais atual até então, possui um arquivo de configuração padrão, o /etc/default/grub . Nele você pode alterar a parte funcional do GRUB. Algumas opções são:
GRUB_DEFAULT=0

Essa opção define a entrada padrão do grub. Ao terminar o tempo configurado para escolha do sistema, o grub entrará na entrada setada nesta linha. Ao colocar 0, você está escolhendo a primeira entrada, 1 será a segunda entrada e assim sucessivamente. É possível usar o valor saved para a última entrada selecionada ou o nome exato da entrada, como por exemplo "Ubuntu, com Linux 3.13.0-44-generic" ou "Memory test (memtest86+)".
GRUB_HIDDEN_TIMEOUT=0

Essa opção serve para ocultar o menu do Grub. Ela é útil quando se utiliza apenas um sistema operacional e quer se "pular" a escolha do sistema. Para desativar essa opção coloque um comentário na frente da linha (um #). O comentário fará com que a linha não seja interpretada como um comando, ou nesse caso, uma opção, devendo ficar assim: #GRUB_HIDDEN_TIMEOUT=0
Caso deixe ativado, poderá usar valores numéricos para setar quantos segundos o GRUB levará para carregar a entrada padrão, assim GRUB_HIDDEN_TIMEOUT=5, por exemplo, levará 5 segundos até carregar a entrada padrão.
GRUB_HIDDEN_TIMEOUT_QUIET=true

Essa opção oculta ou mostra o tempo setado na opção anterior. Se por exemplo GRUB_HIDDEN_TIMEOUT estiver configurado para 5 segundos, e GRUB_HIDDEN_TIMEOUT_QUIET estiver configurado para false, será exibida uma contagem regressiva de 5 até zero na tela do GRUB. Caso estiver setado para true, esta contagem será oculta. Lembrando que só funcionará caso GRUB_HIDDEN_TIMEOUT esteja habilitado.
GRUB_TIMEOUT=10

Esse é o tempo que o usuário terá para escolher a entrada. Ao fim da contagem, se o usuário não tiver escolhido nenhuma entrada (não tiver apertado nenhuma tecla), o GRUB entrará automaticamente na opção setada em GRUB_DEFAULT.
Para que este tempo de espera seja desativado, coloque o valor -1, neste caso o GRUB esperará até que o usuário escolha uma entrada.
GRUB_GFXMODE=640x480

Essa linha modifica a resolução gráfica do GRUB. Se estiver comentada ela pegará a resolução padrão da placa de vídeo. Lembrando que aceita apenas valores suportados pela placa de vídeo do computador.
GRUB_DISABLE_RECOVERY="true"

Essa opção habilita ou desabilita o modo de recuperação do sistema. É bastante útil quando as coisas não vão bem.
Essas são algumas configurações padrões para alterar as funcionalidades do GRUB, é claro que existem outras mais avançadas mas estas são as mais básicas. Porém, apenas alterar o arquivo não vai aplicar essas configurações e para que isso aconteça é necessário atualizar o GRUB com o comando:
sudo update-grub

Se tudo ocorrer bem, a tela irá retornar algo parecido com isso:
Generating grub configuration file ...
Encontrado imagem linux: /boot/vmlinuz-3.13.0-44-generic
Encontrado imagem linux: /boot/vmlinuz-3.13.0-32-generic
Encontrado imagem initrd: /boot/initrd.img-3.13.0-32-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
concluído



Alterando a aparência - Cores e Imagens

 

É possível alterar a aparência do GRUB, alterando a imagem de fundo, texto e cores das opções. Para colocar uma imagem de fundo, é necessário acrescentar uma linha em /etc/default/grub
GRUB_BACKGROUND="caminho da imagem"

Coloque o caminho correto da imagem para que o sistema consiga carregar a imagem. Para evitar erros, recomendo colocar uma imagem de mesma resolução que a da tela do GRUB, e no formato png ou jpg. Escolhi esta imagem para colocar no GRUB. 
Sua resolução é de 800x600. Indico que a salve em um diretório em que um usuário comum não possa excluí-la, como por exemplo o /boot/grub. Agora é só configurar o arquivo /etc/default/grub adicionando as seguintes linhas:
#Alteramos a resolução da tela
GRUB_GFXMODE=800x600
#Adicionamos a imagem de fundo
GRUB_BACKGROUND="/boot/grub/fundo.jpg"

Feito isso atualizamos o GRUB:
sudo update-grub 

Se tudo ocorrer certo o resultado será semelhante a este:
 

Também é possível alterar as cores do texto. Para isso existem as configurações de cores: menu_color_highlight, menu_color_normal, color_normal. Essas opções recebem por parâmetro duas cores, uma para o texto e outra para o fundo, ficando assim:
item=cor do texto/cor do fundo.
menu_color_highlight se refere a opção do menu que está selecionada.
menu_color_normal se refere as opções do menu que não estão selecionadas e também para o quadro do menu
color_normal se refere ao texto fora do menu
Podemos utilizar as seguintes cores: 

black, blue, brown, cyan, dark-gray, green, light-cyan, light-blue, light-green, light-gray, light-magenta, light-red, magenta, red, white e yellow.
 
Nota: a cor black quando usada para o fundo torna-se transparente.
Para adicionar essas cores, precisaremos alterar o arquivo /etc/grub.d/05_debian_theme.
Encontre as seguintes linhas:
if [ -z "${2}" ] && [ -z "${3}" ]; then
                echo "  true"
fi

Faremos as seguintes alterações:
1 - Comentar echo " true".
2 - Adicionar o menu_color_highlight com as cores white e black(transparente)
3 - Adicionar o menu_color_normal com as cores light-red e black(transparente)
4 - Adicionar o color_normal com as cores light-cyan e black(transparente)
Devemos colocar o comando dentro de um echo e depois de um set
As linhas ficarão ficará assim:
if [ -z "${2}" ] && [ -z "${3}" ]; then
        #echo "  true"
        echo " set menu_color_highlight=white/black"
        echo " set menu_color_normal=light-red/black"
        echo " set color_normal=light-cyan/black"
fi

Como de costume, daremos um update-grub e veremos este resultado ao reiniciar: 
É óbvio que você pode deixar a aparência muito melhor que essa jogando com as cores e o fundo.Você ainda pode testar as cores no próprio gerenciador de inicialização desta forma:
Dentro do GRUB, aperte c e uma tela semelhante a esta aparecerá: 
Digite: set menu_color_normal=blue/black, dê Enter e logo em seguida pressione ESC para voltar. A cor do menu não selecionado deverá ter se alterado para azul. Você pode testar as combinações de cores dos três itens em tempo real, porém ao entrar no sistema esses dados serão perdidos, pois é apenas uma maneira de testar as cores.

Alterando os textos de entrada


Podemos alterar os textos das do menu do GRUB. Para isso iremos editar o arquivo /boot/grub/grub.cfg. Este arquivo é gerado automaticamente pelo comando update-grub baseado nos scripts que estão dentro do diretório /etc/grub.d/.
Tenha muito cuidado, pois um erro neste arquivo pode dar uma grande dor de cabeça, tanto que nas primeiras linhas do arquivo está escrito # DO NOT EDIT THIS FILE, ou seja, altere por sua conta e risco.
Agora que você foi alertado, iremos alterar os textos.
Procure pelas linhas que começam com menuentry. Sempre após elas, o nome da entrada estará entre aspas, como por exemplo:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os...
Altere apenas os nomes que estiverem entre aspas, e dessa forma o texto será alterado. Podemos também retirar algumas entradas, como por exemplo o teste de memória, para isso procure pelas linhas
### BEGIN /etc/grub.d/20_memtest86+ ###

### END /etc/grub.d/20_memtest86+ ###

e comente tudo que estiver entre elas, dessa forma estas entradas não irão aparecer como opções.
Por último NÃO utilize o update-grub, pois se o fizer ele criará um novo grub.cfg, fazendo você perder todas as alterações feitas nele.
Eis o resultado:
 
Referências:
http://www.ubuntudicas.com.br/blog/2009/12/tudo-sobre-o-grub-2/
http://www.thegeekstuff.com/2012/10/grub-splash-image/
https://www.youtube.com/watch?v=B6tRWK4fcEs
https://www.youtube.com/watch?v=JgVgZc2udUQ

Comentários

Postagens mais visitadas deste blog

Xubuntu: título e botões de janela no painel

DataScraping utilizando PHP - Introdução