Hugo Cisneiros (Eitch), hugo arroba devin ponto com ponto br
Versão 4.0, 2006

The Linux Manual

4.2. Configurando o GRUB

Índice

4.2.1. Seção de configuração global
4.2.2. Seção de configuração de partições
4.2.3. Mega-exemplo
4.2.4. Instalando o GRUB

O GRUB (GRand Unified Bootloader), assim como o LILO é um gerenciador de boot. Seu trabalho é carregar o kernel do Linux ou iniciar outros sistemas operacionais. Ele surgiu da necessidade de um gerenciador de boot livre e por isso foi criado sob o guarda-chuva do projeto GNU. Com o GRUB, você consegue iniciar vários sistemas diferentes, seja Linux, BSDs, Mac, entre outros. Como neste manual gostamos do Linux, vamos puxar mais o saco dele :)

O GRUB tem algumas diversas vantagens sobre o LILO e é por isso que a maioria das distribuições estão substituindo o LILO pelo uso do GRUB. Além do menu bonitinho para a escolha do sistema operacional, tecnicamente o GRUB tem algumas boas vantagens:

Então com essas características legais e divertidas, eu aconselho utilizar o GRUB para gerenciar as suas versões de kernel do Linux :)

O arquivo de configuração do GRUB geralmente está fixo em um lugar, que é o /boot/grub/menu.lst. Muitas distribuições fazem um link para /etc/grub.conf, então editar os dois arquivos funcionam. A seguir, um exemplo de configuração para dois sistemas operacionais: Linux e Windows:


# Exemplo para dois sistemas Operacionais: Linux e Windows!
#
default=0
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz

# Partição Linux
title Fedora Core
        root (hd0,1)
        kernel /boot/vmlinuz-2.6.13-1.1532_FC4 ro root=/dev/hda1 vga=791
        initrd /boot/initrd-2.6.13-1.1532_FC4.img

# Partição Windows
title Windows
	rootnoverify (hd1,0)
	chainloader +1

Exemplo 4.3. Exemplo de Arquivo de Configuração do GRUB

No exemplo acima, assim como no LILO temos duas partes: uma global com as configurações do funcionamento geral do GRUB e uma parte com as definições dos sistemas. Na seção global, podemos definir muitas coisas como senhas, imagem do menu, cores, entre outros.

Antes de mais nada, é preciso notar que o GRUB trata as partições de um modo diferente que o Linux. Por exemplo, ao invés de /dev/hda1 ele usa (hd0,0). Veja a tabela abaixo:

Dispositivo Equivalente no GRUB
/dev/hda1 (hd0,0) - Partição 1 da IDE Primária Master
/dev/hda2 (hd0,1) - Partição 2 da IDE Primária Master
/dev/hdb1 (hd1,0) - Partição 1 da IDE Primária Slave
/dev/hdc3 (hd2,2) - Partição 3 da IDE Secundária Master
/dev/hdd2 (hd3,2) - Partição 2 da IDE Secundária Slave

Tabela 4.2. Comparação de dispositivos para o GRUB

[Nota] Nota

O GRUB detecta e identifica seus HDs automaticamente, fazendo a conversão mostrada acima. Caso você tenha dúvidas quanto à essa equivalência, utilize o seguinte comando para verificar:


# cat /boot/grub/device.map

Para mais informações sobre dispositivos no Linux, veja Seção 3.5, “Dispositivos”.

Agora vamos ver com detalhes das partes de configuração do GRUB!

4.2.1. Seção de configuração global

default=0

Qual o sistema será iniciado por padrão caso o usuário não escolha nenhum outro. Serve junto com a opção timeout para quando o usuário não fazer nada, ele inicie no sistema padrão. Caso nada seja especificado, o primeiro sistema (número 0) será o padrão.

timeout=5

A quantidade de segundos que o GRUB vai esperar o usuário apertar alguma tecla antes de iniciar no sistema padrão definido pela opção default.

password --md5 $1$QWqsC1$Gtat14yn8l2fy6wUogC080

Configura a senha do GRUB criptografada em MD5. Faz com que o usuário tenha que digitar uma senha antes de poder editar algum dos itens do menu. Combinada com a opção lock na configuração das partições, faz com que o usuário só consiga iniciar o sistema digitando a senha.

[Importante] Importante

Para gerar esses caracteres malucos criptografados é simples, basta executar o comando grub como root e na shell dele digitar:

grub> md5crypt
Password: *****

Encrypted: $1$QWqsC1$Gtat14yn8l2fy6wUogC080

Então digitando a senha, o programa vai gerar os caracteres malucos e você pode copiar e colar no seu arquivo de configuração como explicado :)

splashimage=(hd0,1)/boot/grub/splash.xpm.gz

A imagem de fundo para o menu de escolha do sistema. No exemplo está indicando uma imagem no diretório /boot/grub/ em formato .xpm.gz (XPM GZipado). Você pode usar uma imagem de fundo, ou cores.

hiddenmenu

Se colocado, o GRUB não mostrará um menu interativo e vai iniciar o sistema padrão depois de X segundos (especificado na opção timeout). Se você quiser acessar o menu mesmo assim, terá que apertar Esc para mostrar o menu.

color frente/fundo [frente/fundo]

Com essa opção você especifica cores para os planos de frente e fundo do menu do GRUB. As cores são especificadas pelos seus nomes em inglês: black, blue, green, cyan, red, magenta, brown and light-gray; dark-gray, light-blue, light-green, light-cyan, light-cyan, light-red, light-magenta, yellow e white.

O segundo argumento funciona da mesma maneira que o primeiro, mas apenas para os itens que estiverem selecionados no menu (que você seleciona com as setas do teclado).

4.2.2. Seção de configuração de partições

Aqui você vai colocar as partições/sistemas que vai querer bootar. Cada conjunto de linhas corresponde à um sistema diferente (veja no exemplo anterior :)). Vejamos aqui os parâmetros para a partição Linux que definimos:

title Fedora Core

Aqui é o título que vai aparecer no menu. No nosso exemplo usamos o "Fedora Core", mas pode ser qualquer outra coisa!

root (hd0,1)

A partição em que seu root se encontra. Lembrando que essa partição tem que ser onde está o /boot, que é onde fica a imagem do kernel.

kernel /boot/vmlinuz-2.6.13-1.1532_FC4 ro root=/dev/hda1 vga=791

O caminho do kernel para fazer o boot, junto com as opções do kernel. Aqui você vai usar a mesma coisa que no LILO por exemplo :)

initrd /boot/initrd-2.6.13-1.1532_FC4.img

Onde se encontra o arquivo initrd do kernel atual. O initrd contém módulos e informações iniciais para o sistema poder iniciar. Ele é carregado um pouco depois do kernel.

lock (não-especificado no exemplo)

Com a opção lock, você faz com que o usuário tenha que digitar uma senha antes de iniciar o sistema. Combine esta opção com o parâmetro global password, explicado anteriormente.

[Importante] Importante

Se for usar o parâmetro lock, use-o logo após a linha do parâmetro title, pois só assim todas as opções de início são bloqueadas.

Estas foram as opções para uma partição Linux. Se você quiser colocar uma Windows (como no exemplo que usei anteriormente), você só terá que substituir algumas coisinhas, como veremos a seguir:

title Windows

Mesma coisa que anteriormente, é o título, que no caso agora vai ser Windows :(

rootnoverify (hd1,0)

Especifica a partição root do sistema, mas ao contrário da opção root, não monta a partição. Como o boot do Windows é direto e não precisa ser carregado um kernel pelo GRUB (ele tem seu próprio carregador), então é necessário não montar a partição do Windows.

chainloader +1

Carrega a partição chamando um outro gerenciador de boot, que é o caso do próprio do Windows.

E assim com essas opções, você pode ir montando o seu menu de inicialização do GRUB como quiser! :)

4.2.3. Mega-exemplo

Assim como na seção do LILO (Seção 4.1.4, “Mega-exemplo”), colocarei aqui o mesmo exemplo, só que utilizando um arquivo de configuração do GRUB. Vou apresentar um arquivo de configuração para 4 sistemas diferentes, com senha e tudo mais :)


# Arquivo de configuração do GRUB

# Seção de parâmetros globais do GRUB
default=0
timeout=10
# password boboalegre
password --md5 $1$H35tC1$l45i5oNTY0UaNxZ8TjylF.

# Seção de partições do GRUB

# Slackware Linux usando kernel 2.2.16
title Slackware Linux (Kernel 2.2.16)
	root (hd0,0)
	kernel /boot/vmlinuz-2.2.16 ro root=/dev/hda1

# Conectiva Linux 5.1 usando kernel 2.2.17
title Conectiva Linux 5.1 (Kernel 2.2.17)
	root (hd0,1)
	kernel /boot/vmlinuz-2.2.17 ro root=/dev/hda2
	initrd /boot/initrd-2.2.17.img

# Conectiva Linux 5.1 usando kernel 2.2.16-cl6
title Conectiva Linux 5.1 (Kernel 2.2.16-cl6)
	root (hd0,1)
	kernel /boot/vmlinuz-2.2.16-cl6 ro root=/dev/hda2
	initrd /boot/initrd-2.2.16-cl6.img

# Debian 2.2 usando kernel 2.2.17
title Debian 2.2 (Kernel 2.2.17)
	root (hd1,0)
	kernel /boot/vmlinuz-2.2.17 ro root=/dev/hdb1
	initrd /boot/initrd.img-2.2.17

# Debian 2.2 usando kernel 2.2.18
title Debian 2.2 (Kernel 2.2.18)
	root (hd1,0)
	kernel /boot/vmlinuz-2.2.18 ro root=/dev/hdb1
	initrd /boot/initrd.img-2.2.18

# Ruindows e Nojenta e Oitxo
title Ruindows e Nojenta e Oitxo
	rootnoverify (hd2,0)
	chainloader +1

# Fim da configuração do GRUB

Exemplo 4.4. Mega-Exemplo Complexo Alienígena de configuração do GRUB

4.2.4. Instalando o GRUB

Na maioria das vezes a distribuição quando é instalada, instala o GRUB como gerenciador de boot. Com o grub instalado na MBR do HD, não será mais preciso ficar re-instalando, como é o caso do LILO. Mas se é a primeira vez que você configurou o GRUB e está instalando, aí tudo bem. Para instalar na MBR do HD Master Primário:

# grub-install /dev/hda

Se por acaso você quiser instalar em um disquete:

# grub-install /dev/fd0

Assim você terá um GRUB no disquete para quaisquer eventualidades :) Para desinstalar o GRUB da MBR, basta você instalar outra coisa por cima, LILO ou utilizando o comando fdisk \mbr no DOS/Windows.

Leia também a seção sobre o LILO (Seção 4.1.5, “Instalando o LILO”) para ver o caso interessante :)