O gerenciador de boot GRUB
Este artigo apresenta as características do GRUB, um gerenciador de boot cada vez mais usado, principalmente entre os usuários do Linux. O texto trata rapidamente de sua instalação e depois dá detalhes sobre sua configuração, sendo indicado para iniciantes ou para aqueles que queiram saber o básico de seu funcionamento.
Parte 2: Configuração do GRUB
Geralmente o GRUB faz uso do arquivo /boot/grub/menu.lst para definir e carregar sua configuração (um detalhe importante: dependendo da distribuição, o GRUB pode usar outro diretório e outro nome de arquivo, como grub.conf ou menu.conf). Nele, a primeira coisa que chama a atenção é sua forma de trabalhar com os discos rígidos do computador. Ao invés de referenciar esses dispositivos como /dev/hda1, /dev/hda2, etc, ele o faz através dos termos (hd0,0), (hd0,1) e assim por diante. Observe a tabela abaixo para um melhor entendimento:
O GRUB chama o HD principal do computador de hd0 (enquanto o Linux o chama de hda). Um disco secundário recebe o nome de hd1 (o Linux o chama de hdb) e assim segue. Para trabalhar com as partições do HD, o GRUB as referencia através de um número inserido após uma vírgula. Assim, a primeira partição recebe o número 0 (zero) - hd0,0 -, à segunda partição é atribuído o número 1 - hd0,1 - e assim por diante. É importante frisar que, nesse caso, o GRUB não faz distinção entre discos IDE e SCSI.
Agora que você já sabe como o GRUB trata os discos da máquina, abaixo segue, como exemplo, o conteúdo de um arquivo menu.lst:
| Padrão | GRUB |
| /dev/hda1 | (hd0,0) |
| /dev/hda2 | (hd0,1) |
| /dev/hdb1 | (hd1,0) |
| /dev/hdb2 | (hd1,1) |
O GRUB chama o HD principal do computador de hd0 (enquanto o Linux o chama de hda). Um disco secundário recebe o nome de hd1 (o Linux o chama de hdb) e assim segue. Para trabalhar com as partições do HD, o GRUB as referencia através de um número inserido após uma vírgula. Assim, a primeira partição recebe o número 0 (zero) - hd0,0 -, à segunda partição é atribuído o número 1 - hd0,1 - e assim por diante. É importante frisar que, nesse caso, o GRUB não faz distinção entre discos IDE e SCSI.
Agora que você já sabe como o GRUB trata os discos da máquina, abaixo segue, como exemplo, o conteúdo de um arquivo menu.lst:
default 0
timeout 5
fallback 1
splashimage=(hd0,1)/grub/splash.xpm.gz
title Fedora Core (2.6.9-1.667)
root (hd0,1)
kernel /boot/vmlinuz-2.6.9-1.667 ro root=/dev/hda2
initrd /boot/initrd-2.6.9-1.667.img
title Windows XP
rootnoverify (hd0,0)
makeactive
chainloader +1
timeout 5
fallback 1
splashimage=(hd0,1)/grub/splash.xpm.gz
title Fedora Core (2.6.9-1.667)
root (hd0,1)
kernel /boot/vmlinuz-2.6.9-1.667 ro root=/dev/hda2
initrd /boot/initrd-2.6.9-1.667.img
title Windows XP
rootnoverify (hd0,0)
makeactive
chainloader +1
A primeira linha - default 0 - indica ao GRUB qual sistema operacional inicializar caso o usuário não faça nenhuma escolha. No exemplo, ele vai "bootar" o Fedora Linux, pois o número 0 faz referência ao primeiro sistema listado no arquivo. Caso o Windows XP tivesse que ser carregado por padrão, bastaria mudar a linha em questão para default 1, pois no arquivo esse sistema é o segundo a ser listado (note que o GRUB faz a listagem começando em zero).
A linha preenchida com timeout 5 determina o tempo (em segundos) que o usuário terá para escolher um sistema operacional para inicializar. Assim que o GRUB "entra em ação", ele mostra na tela uma lista dos sistemas operacionais instalados. O usuário poderá escolher um alternando-os através das teclas de seta do teclado e pressionando o botão Enter quando a escolha for feita. No caso desse exemplo, o timeout recebe o valor 5. Isso significa que o usuário terá 5 segundos para escolher um sistema. Caso nenhuma opção seja escolhida, após os 5 segundos, o GRUB carregará o sistema padrão, definido através da primeira linha.
Por sua vez, a terceira linha (nem sempre usada) - fallback 1 - indica ao GRUB qual sistema inicializar caso o carregamento da primeira opção falhe por algum motivo. Esse recurso é especialmente útil quando há mais de dois sistemas operacionais instalados no computador.
A quarta linha simplesmente contém informações para carregar as configurações gráficas (como imagem de fundo) para quando o GRUB exibir as opções de sistema operacional disponíveis.
Repare que neste arquivo menu.lst a lista de sistemas operacionais é mostrada depois da quarta linha de configuração. O primeiro sistema da lista é o Fedora Linux:
title Fedora Core (2.6.9-1.667)
root (hd0,1)
kernel /boot/vmlinuz-2.6.9-1.667 ro root=/dev/hda2
initrd /boot/initrd-2.6.9-1.667.img
root (hd0,1)
kernel /boot/vmlinuz-2.6.9-1.667 ro root=/dev/hda2
initrd /boot/initrd-2.6.9-1.667.img
A primeira linha acima mostra o título que o sistema recebe no GRUB. É esse nome que será exibido quando o GRUB mostrar a lista de sistemas operacionais que o usuário pode escolher. Pode-se usar qualquer frase depois de title. Obviamente, informe algo relacionado ao sistema operacional em questão.
A segunda linha - root (hd0,1) - informa ao GRUB onde o sistema operacional está instalado. No exemplo, ele se encontra na segunda partição do HD. A palavra root tem a função de indicar que aquela é a partição principal do sistema (ou a partição-raiz) e que, portanto, deverá ser montada.
A terceira e a quarta linha informam ao GRUB o kernel a ser carregado e possíveis parâmetros. Neste caso, ro indica que a partição deve ser montada inicialmente com permissões apenas de leitura.
Na parte do arquivo que trata do Windows XP, a sintaxe é a mesma. No entanto, a segunda linha recebe o parâmetro rootnoverify ao invés de root, pois a montagem de partição não se aplica ao Windows. O rootnoverify é usado porque esse parâmetro não tenta fazer nenhuma montagem.
title Windows XP
rootnoverify (hd0,0)
makeactive
chainloader +1
rootnoverify (hd0,0)
makeactive
chainloader +1
Como o Windows trabalha de maneira diferente do Linux, a opção de carregar o kernel também não se aplica ao sistema da Microsoft. No lugar desse parâmetro, geralmente é usado chainloader +1, que "chama" o carregador de boot do Windows, deixando a esse a tarefa de iniciar o sistema. Note que em nosso exemplo, há um parâmetro na linha acima de chainloader +1, o makeactive. Este tem a função de definir a partição em questão como ativa.
Existe um parâmetro chamado map que permite o carregamento do Windows quando este não está instalado no primeiro HD (regra obrigatória no Windows 9x, por exemplo). Sua utilização é feita da seguinte forma (supondo que o Windows esteja no segundo disco):
map (hd0) (hd1)
map (hd1) (hd0)
map (hd1) (hd0)