Configurando o GRUB2 no Debian Squeeze

18 de fev de 2013 - Paulo Dias


Os principais arquivos de configuração do GRUB2 são o /boot/grub/grub.cfg, o /etc/default/grub e também os scripts localizados no diretório /etc/grub.d/. Na verdade a configuração manual do GRUB2 é feita apenas no arquivo /etc/default/grub e nos scripts do diretório /etc/grub.d/. O arquivo /boot/grub/grub.cfg apesar de ser o principal arquivo de configuração não deve ser alterado manualmente, esse arquivo será configurado pelo comando update-grub tendo como base o conteúdo dos arquivos anteriores.

/etc/grub.d/

Os arquivos do diretorio /etc/grub.d/ são scripts responsáveis por montar o arquivo /boot/grub/grub.cfg. Esses scripts serão executados pelo comando update-grub, por tanto, devem ter permissão de execução. A ordem de execução desses arquivos segue a ordem alfabética de seus nomes, por exemplo: o arquivo 05_debian_theme é executado antes do 10_linux. Alguns scripts desse diretorio são:

00_header: é o script que carrega as configurações que estão no arquivo /etc/default/grub, por exemplo: o tempo de espera e a entrada de boot padrão.

05_debian_theme: define a aparência do GRUB2

10_linux: localiza os kernels do sistema operacional e cria suas entradas no menu.

20_memtest86+: Cria as entradas do memtest.

30_os-prober: Busca outros sistemas operacionais e cria as suas entradas no menu.

40_custom: é apenas um modelo para se criar entradas adicionais no menu do GRUB2.

/etc/default/grub

O arquivo /etc/default/grub não é exatamente um script, nele é possível alterar diretamente o valor de varias variáveis de configuração, por isso esse arquivo é bem mais amigável que os scripts do diretório grub.d.

Configurações

Configurar as cores do menu:

Técnicamente o arquivo responsável por essa configuração é o script 05_debian_theme, mas por se tratar de um script, ele exige um certo conhecimento em programação, felizmente existe uma forma mais simples(depende do ponto de vista) de fazer essa configuração: Crie o arquivo /boot/grub/custom.cfg e dentro dele coloque o seguinte conteúdo:
set color_normal=light-gray/black

set color_highlight=blue/white

set menu_color_normal=magenta-light-gray

set menu_color_highlight=blue/white
Onde:

color_normal -> cor da fonte e do background

color_highlight -> cor da fonte e do background com seleção

menu_color_normal -> cor da fonte e do background do menu

. menu_color_highlight -> cor da fonte e do background do menu com seleção

As cores possíveis são: black, blue, green, cyan, red, magenta, brown, light-gray, dark-gray, light-blue, light-green, light-cyan, light-red, light-magenta, yellow e white.

E pronto, não é necessário rodar o comando update-grub, o arquivo será carregado automaticamente.

Colocar uma imagem no GRUB2

Essa é outra opção que a principio deveria ser configurada no script 05_debian_theme, mas pelo mesmo motivo anterior vou mostrar uma forma alternativa: No arquivo /etc/default/grub altere ou crie a seguinte linha e rode o comando update-grub:
GRUB_BACKGROUND="coloque aqui o caminho até a imagem"
Uma boa fonte de imagens para o menu GRUB2 é o pacote GRUB2-splashimages, após a instalação verifique o diretório /usr/share/images/grub/ ( para ver como instalar pacotes no Debian clique aqui )

Alterar a resolução do GRUB2:

Para configurar a resolução da tela do GRUB2 altere a seguinte linha no arquivo /etc/default/grub e rode o comando update-grub:
GRUB_GFXMODE=640x480
Essa configuração altera apenas a resolução da tela do GRUB2, não terá efeito no sistema. É interessante manter a resolução do menu igual a resolução do sistema.

Configurar o boot padrão:

Essa configuração especifica qual a entrada do menu que vai ser executada automaticamente, se o usuário não especificar nenhuma até o final do tempo de espera. Para configurar o boot padrão altere a seguinte linha no arquivo /etc/default/grub e rode o comando update-grub:
GRUB_DEFAULT=0
onde o 0(zero) é a primeira entrada do menu do GRUB2, 1 a segunda, 2 a terceira... Também é possível utilizar GRUB_DEFAULT=saved assim a entrada padrão será sempre a última que foi selecionada, ou seja, se na última vez o usuário selecionou a entrada 1, essa será opção padrão até que ele selecione outra.

Ajustar o tempo de espera:

Esse é o tempo que o GRUB2 vai esperar antes de chamar o boot padrão. Para configurar altere a seguinte linha no arquivo /etc/default/grub e rode o comando update-grub:
GRUB_TIMEOUT=5

Incluir ou retirar o recovery mode:

Para configurar a entrada do recovery mode altere o valor da seguinte linha no arquivo /etc/default/grub e rode o comando update-grub:
GRUB_DISABLE_LINUX_RECOVERY="true"
se o valor for true, o recovery mode não vai ter sua entrada no GRUB2, se for false vai ter.

Configurar a entrada do memtest:

Para retirar a opção de memtest do menu execute os seguintes comandos:
chmod -x /etc/grub.d/20_memtest86+; update-grub;
Para habilitar essa opção novamente rode os seguintes comandos:
chmod +x /etc/grub.d/20_memtest86+; update-grub;
Se quiser habilitar essa opção, mas o script 20_memtest86+ não estiver no diretório grub.d, instale o pacote memtest86+ .

Personalizar as entradas do menu

Para editar as entradas que estão no menu do GRUB2, é possível copiar essas entradas da configuração que já está pronta no arquivo /boot/grub/grub.cfg (afinal ela está funcionando normalmente) e depois colar no script 40_custom. As entradas do menu do GRUB2 são configuras pela palavra chave menuentry e são delimitadas por chaves {}, segue um exemplo:
menuentry "Titulo da opção" {

aqui ficam os comandos

}
O arquivo /boot/grub/grub.cfg é dividido por blocos BEGIN e END, cada bloco é gerado por um dos scripts do diretório /etc/grub.d/. É importante guardar o nome dos scripts que geraram os blocos de onde estão as menuentry que serão copiadas. Cuidado, copie apenas as menuentry's. Com as entradas já coladas no script 40_custom faça as alterações necessárias e salve. Com isso, se o comando update-grub fosse rodado as entradas personalizadas já estariam no GRUB2, mas as entradas padrão também, ou seja, as entradas ficariam em dobro. Para evitar isso é necessário tirar a permissão de execução dos scripts que geram as entradas padrão(os scripts do diretorio grub.d), para isso execute o comando a seguir para cada um desses scripts, faça somente naqueles que o nome aparecia em um bloco BEGIN e END de onde foram copiadas as menuentry's, não tire a permissão dos outros :)
cd /etc/grub.d/;
chmod -x nome_do_script
E por último rode o comando update-grub.

Criar uma nova entrada para o menu:

A principio dificilmente será necessário criar uma entrada manualmente para o menu do GRUB2, se por algum motivo um sistema não for reconhecido após o comando update-grub, instale o pacote os-prober e rode os comandos abaixo:
os-prober; update-grub;
O os-porber é capaz de localizar sistemas que não estejam sendo reconhecidos pelo GRUB2. Se ainda assim, o sistema não for reconhecido, é possível criar uma entrada no menu manualmente através do script 40_custom que está no diretório /etc/grub.d/. Para criar uma entrada para uma distribuição Linux insira o seguinte conteúdo no script 40_custom e execute o update-grub:
menuentry "Titulo do Sistema" {

set root=(hd0,1)
linux /boot/vmlinuz-versão_do_kernel
initrd /boot/initrd.img-versão_do_kernel
}
Esse é o mínimo para se cria uma entrada para um sitema Linux no GRUB2.
Em set root=(hd0,1) está sendo especificado que o sistema está no primeiro disco(hd0) e na primeira partição desse disco. Obs.: Os discos iniciam no zero( hd0, hd1, hd2... ), mas as partições iniciam no 1.
Onde diz "versão_do_kernel" substitua pela versão do kernel que o sistema utiliza. Se tiver acesso a esse sistema, é possível verificar qual a versão do kernel com o comando uname -r.
Para criar uma entrada no menu para um sistema Windows( xp, vista, 7 ) use:
menuentry "Titulo do Sistema" {

set root=(hd0,1)
chainloader +1
}
Mais sobre o GRUB2:
http://www.vivaolinux.com.br/dica/Personalizando-o-Grub-2
http://www.gnu.org/software/grub/
http://www.vivaolinux.com.br/dica/Colocando-senha-criptografada-no-GRUB-2

Paulo Dias

Graduado no curso tecnólogo em análise e desenvolvimento de sistemas. Defensor do Software Livre e da democratização da informação. Possui as certificações Linux LPIC-1 e Java OCA. Atualmente exerce a função de coordenador técnico na área de telecomunicações.

Siga-me no Twitter


Tags: Linux