Configurando o Lilo e o Grub
Colaboração: Carlos E. Morimoto
Data de Publicação: 26 de Junho de 2005
O lilo e o grub disputam o posto de gerenciador de boot
default entre as distribuições Linux. O lilo é o mais
antigo e mais simples de configurar, enquanto o grub é o
que oferece mais opções. Mas, ao invés de ficar discutindo
qual é melhor, vamos aprender logo a configurar e resolver
problemas nos dois :-)
O lilo utiliza um único arquivo de configuração, o
/etc/lilo.conf. Ao fazer qualquer alteração neste arquivo
é preciso chamar o executável do lilo, o "/sbin/lilo" ou
simplesmente "lilo" para que ele leia o arquivo e salve
as alterações.
Aqui vai um exemplo comentado do arquivo de configuração
do lilo, que você pode usar como modelo:
# A opção abaixo (quase sempre a primeira linha do arquivo) indica aonde o lilo
# será instalado. Indicando um dispositivo, como em "/dev/hda" ele é instalado
# na MBR do HD. Indicando uma partição, como em "/dev/hda1" ele é instalado
# no primeiro setor da partição. Fazendo isso o sistema não inicializará diretamente,
# você precisará configurar o gerenciador de boot de outro sistema instalado
# para carregar o atual.
boot=/dev/hda
# (caso você use um HD Serial ATA, e o lilo não esteja sendo instalado corretamente,
# experimente mudar esta opção de "/dev/hda" para "/dev/sda", a forma como eles
# são detectados nas versões recentes do Kernel 2.6
# Esta opção ativa o uso de uma imagem como fundo no menu de boot do lilo.
# Este recurso é opcional:
bitmap = /boot/kurumin.bmp
bmp-colors = 255,9,;9,255,
bmp-table = 61,15,1,12
bmp-timer = 73,29,255,9
# RESOLUÇÃO do VÍDEO
# Aqui vai o código que determina a resolução do vídeo, em modo texto (usando frame-
# buffer) e também no modo gráfico, caso seja usado o driver de vídeo "fb" no arquivo
# de configuração do X.
# O default na maioria das distribuições é "vga=788", que faz o sistema usar resolução
# de 800x600, que é compatível com quase todas as placas de vídeo.
# Se você quer usar resolução de 1024x768, mude a opção para: vga=791
# Se você quer usar resolução de 640x480, mude a opção para: vga=785
# Se a sua placa de vídeo não suporta frame-buffer e você quer de volta a velha tela de
# texto padrão, mude a opção para: vga=normal
# OBS: Se você tem uma placa GeForce 4 ou GeForce 4 MX, deixe esta opção em "788",
# pois elas não suportam frame-buffer a 1024x768.
vga=788
# Esta linha indica qual será o sistema operacional default, caso você tenha dois ou mais
# instalados em dual-boot:
prompt
default=Kurumin
# Tempo de espera antes de entrar no sistema padrão, em décimos de segundo (o
# padrão é 10 segundos). O valor máximo é 30000 (3.000 segundos), não use um
#número maior que isto, ou o lilo acusará o erro e não será gravado corretamente:
timeout=100
# Aqui vão os parâmetros do Kernel. Se você usa deseja desativar o suporte a apci,
# para solucionar problemas, por exemplo, adicione a opção "acpi=off"
append = "splash=silent apm=power-off nomce quiet devfs=mount"
# As linhas abaixo indicam a localização do executável principal do Kernel e do arquivo
# initrd, caso seja usado um. Esta é a seção que é duplicada ao instalar um segundo
# Kernel
image=/boot/vmlinuz-2.6.8.1-kanotix-10
label=Kurumin
root=/dev/hda1
read-only
Isso pode ser solucionado facilmente, editando o
"/etc/lilo.conf" do Mandrake, para que ele seja reinstalado
na partição e adicionando as duas linhas que chamam outros
sistemas no lilo do Kurumin.
Você pode editar o lilo do Mandrake e regravá-lo
rapidamente através do próprio Kurumin (ou outra
distribuição instalada), ou dando boot com um CD do Kurumin
ou Knoppix.
Dê boot pelo CD e abra um terminal. Defina a senha de root
usando o comando "sudo passwd". Agora vire root usando o
comando "su" seguido da senha escolhida.
Monte a partição onde o Mandrake está instalado:
# mount -t reiserfs /dev/hda1 /mnt/hda1
Agora usamos o comando chroot para "entrar" dentro da
partição montada, a fim de editar o lilo.conf e gravar
o lilo. Todos os comandos dados dentro do chroot são
na verdade executados no sistema que está instalado na
partição.
É preciso Indicar o sistema de arquivos em que a partição
está formatada no comando acima, caso contrário o chroot
vai dar um erro de permissão.
# chroot /dev/hda1
Agora use um editor de texto em modo texto, como o mcedit
ou o joe para alterar o arquivo "/etc/lilo.conf" e chame
o executável do lilo para salvar as alterações. Depois de
terminar, pressione Ctrl+D para sair do chroot.
# mcedit /etc/lilo.conf
# lilo
Configurando o grub
Muitas distribuições permitem que você escolha entre usar
o lilo ou o grub durante a instalação. Outras simplesmente
usam um dos dois por padrão. De uma forma geral, o grub
oferece mais opções que o lilo e inclui um utilitário,
o update-grub que gera um arquivo de configuração básico
automaticamente. Por outro lado, a sintaxe do arquivo
de configuração do grub é mais complexa o que o torna
bem mais difícil de editar manualmente que o do lilo. O
grub inclui ainda um prompt de comando, novamente nenhum
exemplo de amigabilidade.
De resto, os dois possuem a mesma e essencial função. Sem
o gerenciador de boot o sistema simplesmente não
inicializa. :-)
O grub usa o arquivo de configuração
"/boot/grub/menu.lst". Este arquivo é lido a cada boot,
por isso não é necessário reinstalar o grub ao fazer
alterações, como no caso do lilo.
Para entender melhor como o grub funciona, vamos ver como
instalá-lo no Kurumin, substituindo o lilo que é usado
por padrão.
Em primeiro lugar, você precisa instalar o pacote do
grub via apt-get. Ele não possui dependências externas,
inclui apenas os executáveis principais. Você pode até
mesmo arriscar compilar a versão mais recente, baixada no
site do projeto.
# apt-get install grub
Depois de instalar, crie a pasta "/boot/grub/" e use o
"update-grub" para gerar o arquivo "menu.lst". Basta
responder "y" na pergunta e o arquivo é gerado
automaticamente:
# mkdir /boot/grub
# update-grub
Testing for an existing GRUB menu.list file...
Could not find /boot/grub/menu.lst file. Would you like /boot/grub/menu.lst generated for you? (y/N) y
Searching for splash image... none found, skipping...
Found kernel: /boot/vmlinuz-2.6.8.1-kanotix-10
Found kernel: /boot/memtest86.bin
Updating /boot/grub/menu.lst ... done
Agora só falta instalar o grub na MBR usando o comando:
# grub-install /dev/hda
Ao gravar o grub, ele naturalmente substitui o lilo ou
qualquer outro gerenciador de boot que esteja sendo usado.
Se você mudar de idéia mais tarde e quiser regravar o lilo,
subscrevendo o grub, basta chamá-lo novamente:
# lilo
Assim como no caso do lilo, o arquivo de configuração
do grub inclui uma seção separada para cada sistema
que aparece no menu de boot. O update-grub não é muito
eficiente em detectar outros sistemas instalados,
por isso depois de gerar o arquivo você ainda precisará
adicionar as linhas referentes a eles no final do arquivo
"/boot/grub/menu.lst".
Para que o grub inicialize uma cópia do Windows, instalada
na primeira partição, /dev/hda1, adicione as linhas:
title Windows
rootnoverify (hd0,0)
chainloader +1
Elas equivalem à opção "other=/dev/hda1" que seria usada no
arquivo do lilo. A linha "title" contém apenas a legenda
que é mostrada no menu de boot. O que interessa mesmo é a
linha rootnoverify (hd0,0), que indica o HD e a partição
onde o outro sistema está instalado. O primeiro número
indica o HD e o segundo a partição dentro deste. Na
nomenclatura adotada pelo grub temos:
/dev/hda = 0
/dev/hdb = 1
/dev/hdc = 2
/dev/hdd = 3
As partições dentro de cada HD são também nomeadas a partir do zero:
/dev/hda1 = 0,0
/dev/hda2 = 0,1
/dev/hda3 = 0,2
/dev/hda4 = 0,3
/dev/hda5 = 0,4
/dev/hda6 = 0,5
etc...
Se você quisesse que o grub iniciasse também uma instalação
do Mandrake no /dev/hda3, cujo lilo (ou grub) foi instalado
na partição, adicionaria as linhas:
title Mandrake
rootnoverify (hd0,2)
chainloader +1
A linha "chainloader +1" especifica que o grub vai apenas
chamar o gerenciador de boot instalado na partição e deixar
que ele carregue o outro sistema, assim como fizemos ao
editar o arquivo do lilo.
Você pode usar o grub para carregar diretamente o outro
sistema, sem precisar passar pelo outro gerenciador de
boot. Neste caso você usaria as linhas:
title Mandrake
root (hd0,2)
kernel /boot/vmlinuz-2.6.8 root=/dev/hda3 ro
savedefault
boot
Veja que neste caso você precisa especificar a localização
do executável do Kernel dentro da partição. Você pode
especificar também opções para o Kernel e usar um arquivo
initrd, caso necessário, como neste segundo exemplo:
title Mandrake
root (hd0,2)
kernel /boot/vmlinuz-2.6.8 root=/dev/hda3 ro vga=791 acpi=off splash=verbose
initrd /boot/initrd.gz
savedefault
boot
Assim como no caso do lilo, você pode usar um CD do Kurumin
ou Knoppix para reinstalar o grub, caso ele seja subscrito
por uma instalação do Windows ou outra distribuição Linux.
Neste caso, depois de dar boot pelo CD, você só precisa
montar a partição onde o sistema está instalado, como em:
# mount -t reiserfs /dev/hda2 /mnt/hda2
E usar o chroot para obter o prompt de comando do sistema
que está recuperando:
# chroot /mnt/hda2
No prompt, você precisa apenas editar o arquivo
"/boot/grub/menu.lst", ou gerá-lo novamente usando
o comando "update-grub" e reinstalar o grub, usando
o comando:
# grub-install /dev/hda
Gostou da dica? Veja a agenda de cursos presenciais com Carlos E. Morimoto em Porto Alegre e São Paulo
- Curso: Redes e Servidores Linux (com Carlos E. Morimoto) Em Porto Alegre, início dia 04/07
- Curso: Programando em Shell Script (com Júlio Cezar Neves) Em Porto Alegre, início dia 11/07