Personalizar o Grub2

Dezembro 2016

Com vários sistemas operacionais, o menu de seleção do Grub2 pode mostrar-se difícil ou confuso. Você terá que aceitar o menu tal qual ou, então, modificá-lo. A alteração pode ser mais ou menos importante. Por esta razão, é melhor ter muito cuidado ao fazê-lo.


Só para lembrar, o Grub2 é instalado na raiz do disco mestre, geralmente SDA. Em seguida, a cada atualização de um kernel, a distribuição GNU e/ou Linux, principal ou opcional, ou após a adição (ou remoção) de outro sistema, o comando
update-grub
(como administrador) atualiza o arquivo de configuração do Grub2 (/boot/grub2/grub.cfg e /boot/grub/grub.cfg para Debian e Ubuntu). É este arquivo grub.cfg que é chamado e lido para propor os sistemas operacionais. Proposta que exibe uma espécie de lista com o sistema principal no topo e, em seguida, as opções avançadas.

Não é recomendado editar este arquivo grub.cfg. Melhor fazer uma cópia de backup antes de fazer quaisquer alterações, utilizando o seguinte comando (como administrador):
# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg-bak-date

Vou expor aqui as minha críticas em relação ao arquivo grub.cfg gerado automaticamente e, depois, o que pode ser mudado, e como. Para concluir, a solução de personalização do mesmo, através do arquivo 40_custom.

As críticas do “grub.cfg”

Como tal, o resultado do grub.cfg não é, necessariamente, agradável.

2 versões do Mageia em coabitação

Se houver versões do Mageia 2 instaladas (uma estável e a Cauldron), o arquivo de configuração do Grub cria uma espécie de duplicata. Além dos núcleos da versão de base, também são incluídos os núcleos da segunda versão nas opções avançadas. Assim, com um Mageia 5 no SDA2 e um Mageia 4 (ou Cauldron) no sdb1, encontramos linhas indicadas (sur/dev/sda2) (sur/dev/sdb1) nas opções avançadas. Para a segunda versão instalada do Mageia, então, um Mageia opcional, os núcleos estão listados nas Opções Avançadas, do mais (no topo da lista) ao menos recente, com estes núcleos claramente indicados. Em seguida, veem as linhas duplas com o Mageia em versão principal.

Fedora

Se o Fedora estiver instalado, além de outras distribuições, a instalação do Grub2 coloca no topo, sistematicamente, o kernel de backup (“rescue") ou de depuração ("+ debug"), o que pode, em seguida, afetar o conforto de uso, já que o tamanho da tela não está no máximo. Recapitulando, o driver gráfico será, então, genérico com os modos de rescue e/ou debug. Vamos ter que procurar o kernel correto nas opções avançadas.

Além disso, as opções avançadas não mencionam a versão do kernel escolhido. É preciso selecionar de forma aleatória. No entanto, a regra parece ser a de colocar no topo da lista das opções avançadas (em cima) a opção de “rescue” (ou de debug) e, em seguida, os outros núcleos para, finalmente, ter o último kernel (o mais recente) no final (em baixo). Por outro lado, estranhamente, o arquivo gerado no Fedora destaca as versões de núcleos do Fedora colocando no topo da lista os principais núcleos e, abaixo, os núcleos de backup.

Debian e Ubuntu

Para o Debian e o Ubuntu (sempre em conjunto com outra distribuição), é o oposto do caso Fedora. Grub2 mostra corretamente os núcleos e põe no topo da lista (em cima) os kernels mais recentes para colocar os outros no meio e terminar com o modo de recovery (rescue) e memtest.

Mudança básica do “grub.cfg”

Para lembrar: não é recomendado alterar esse arquivo “grub.cfg”. Melhor fazer uma cópia de backup antes de qualquer alteração, utilizando o seguinte comando (como root):
# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg-bak-date

Para alterar o “grub.cfg”, o mais simples é usar Grub Customizer. Alguns passarão por um editor de texto como o nano, o kate, o gedit, o Leafpad , etc. Sempre como administrador (root). Neste caso, só é preciso mudar o nome da versão do sistema operacional e destacar a versão do kernel escolhido nas opções avançadas. Não é preciso complicar nada, nem corres o risco, desnecessário, de corromper a estrutura do arquivo.

Exemplos:

Mudança do nome do sistema:
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Mageia 5'

torna-se
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Mageia SDB1'


Destaque do núcleo:
menuentry "Fedora 23 (Twenty Three) (sur /dev/sda3)" 
... etc ...
initrd /boot/initramfs-4.3.3-300.fc23.x86_64.img

torna-se
menuentry "Fedora SDA3 (4.3.3-300.fc23.x86_64)"
... etc ...
initrd /boot/initramfs-4.3.3-300.fc23.x86_64.img

A regra é fazer um mínimo de modificações para não correr nenhum risco.

Instalar o Grub2 no SDXn

Para cada distribuição GNU/Linux Grub2, vamos instalar na raiz da partição de instalação da distribuição o SDXn (“X” representa o disco (SDA, SDB, etc.) e “n” o número da partição. Tudo deve ser feito como root. Isso permitirá, a seguir, o encadeamento correto de vários sistemas.

Mageia secundária

# grub2-install --force /dev/sdb1
e
# update-grub

Debian, Ubuntu secundário

# grub-install --force /dev/sda5
e
# update-grub

Fedora secundária

# grub2-install --force /dev/sda3
e
# grub2-mkconfig -o /boot/grub2/grub.cfg

Alteração do “grub.cfg” no SDX

Para lembrar: não é recomendado alterar esse arquivo “grub.cfg”. Melhor fazer uma cópia de backup antes de quaisquer alterações, utilizando o seguinte comando (como root):
# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg-bak-date

Para alterar o “grub.cfg”, alguns passam por um editor de texto como o nano, o kate, o gedit, o leafpad, etc. Sempre como administrador (root), vamos modificar o arquivo “grub.cfg” principal, ou seja, é o Grub2 utilizado pela distribuição GNU/Linux principal e que está instalado na raiz do disco principal, logicamente, o SDA. Isto é feito por etapas.

Alterar /etc/default/grub

É preciso editar o arquivo
/etc/default/grub
, como roo e mudar de "False" para "True", a seguinte linha:
GRUB_DISABLE_OS_PROBER="true"

Isso vai desativar a pesquisa de outros sistemas operacionais durante a atualização do “grub.cfg”.

Alterar /etc/grub.d/40_custom

Agora, vamos editar o arquivo /etc/grub.d/40_custom como administrador. Se este arquivo não existir, vamos cria-lo. Adicione as seguintes linhas (como administrador):

#!/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.
#
# Windows SDA1
menuentry 'Windows 7 SDA1' {
set root='hd0,msdos1'
chainloader +1
}
# Mageia Cauldron SDA2
menuentry 'Mageia Cauldron SDA2' {
set root='hd0,msdos2'
chainloader +1
}
# Fedora SDA3
menuentry 'Fedora SDA3' {
set root='hd0,msdos3'
chainloader +1
}
# Debian SDA5
menuentry 'Debian SDA5' {
set root='hd0,msdos5'
chainloader +1
}
# Ubuntu SDA8
menuentry 'Ubuntu SDA8' {
set root='hd0,msdos8'
chainloader +1
}

A ser adaptado de acordo com a situação, é óbvio.

Observação n° 1: Notação de acordo com o sistema de partição.
Para um particionamento MSDOS: set root='hd0,msdos1'
Para um particionamento GPT: set root='hd0,gpt1'

Observação n° 2:Notação funcional.
set root='hd0,msdos1'
set root=(hd0,1)

Se (caso pouco provável) este arquivo, “40_custom”, tiver que ser criado, ele deverá ser executável. Ou seja, como administrador:
# chmod +x /etc/grub.d/40_custom

Reconstruir o arquivo “grub.cfg”

Como root, em console:
# update-grub

No Fedora, será a seguinte linha:
# grub2-mkconfig -o /boot/grub2/grub.cfg

Se tudo correr bem, o console deve listar apenas os núcleos do sistema principal. Uma edição (via nano...) do grub.cfg deve exibir uma seção “10_linux_proxy” referente ao sistema operacional principal (com seus diversos núcleos) e, que não vamos mexer; uma seção “30_os-prober” agora vazia (que anteriormente continha as referências dos diversos sistemas); e, uma seção “40_custom” completada com os elementos que acabamos mencionar acima no arquivo “40_custom”.

Validação

Resta apenas validar, reinicializando o sistema, para iniciar cada um dos sistemas operacionais. Nos dois casos a seguir, é preciso reinicializar o sistema com a ajuda do SuperGrub, para instalar o Grub2 na raiz da partição, como descrito mais acima. Se o erro indicar invalid signature (assinatura inválida) é porque o Grub2 não foi instalado. Se o erro indicar GNU GRUB versão 0,97, você instalou o Grub em sua versão Legacy (a versão Grub 1) e o seu Grub2 não sabe ver e interpretar este seletor de sistema operacional.

Se, depois de reinstalar o Grub2 corretamente na raiz da partição correspondente, o erro persistir, verifique novamente a notação dos discos e/ou das partições, no arquivo “40_custom”. Se a personalização funcionar, você só precisará atualizar o “grub.cfg”. A cada atualização do kernel de uma distribuição GN /Linux secundária, vai ser o seu próprio arquivo “grub.cfg” que será atualizado automaticamente. Mas, agora, o Grub2 principal chamará, por encadeamento, o arquivo “grub.cfg” da distribuição secundária sem precisar apontar para um núcleo específico. Economia de tempo e simplicidade!

SuperGrub

Guarde o link supergrubdisk.org. Em caso de problema, este utilitário gratuito e de código aberto, detectará todos os sistemas operacionais instalados, a fim de começar de novo. Para mais informações sobre o modo de usar, veja a dica Super Grub Disk Live CD

Saiba mais

Grub2

Veja também :
Este documento, intitulado « Personalizar o Grub2  »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.