Índice - Artigos

Entendendo a configuração do Lilo e grub

Por Carlos E. Morimoto em 5 de julho de 2007 às 15h53

3

Introdução

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 :-)


Configurando o Lilo

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" para que ele leia o arquivo e salve as alterações.

Aqui vai um exemplo comentado do arquivo de configuração do lilo:

# 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"
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:
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
initrd=/boot/initrd.gz
# Remova os comentários das linhas abaixo para ativar a opção de inicializar
# sistemas instalados em outras partições do HD, incluindo Windows ou outras
# distribuições Linux.
# No caso de outras distribuições, é importante que o lilo ou grub de cada um esteja
# configurado para ser instalado na partição e não na MBR. Só um sistema pode instalar
# seu gerenciador de boot na MBR, igual no filme Highlander: "Só pode haver um".
#other=/dev/hda2
#label=hda2
#other=/dev/hda3
#label=hda3
#other=/dev/hda4
#label=hda4
#other=/dev/hda6
#label=hda6
# Windows instalado no segundo HD:
# Esta é uma opção especial que permite que você inicialize uma instalação do
# Windows no segundo HD (instalado como slave do primeiro, onde está o Kurumin).
# Ela faz o Windows pensar que está sendo inicializado do primeiro HD :-)
# Descomente todas as sete linhas abaixo, altere o "hdb1" por "hdc1" ou "hdd1"
# caso o HD esteja instalado na segunda IDE. Lembre-se:
# Primeira IDE : Master = hda / Slave = hdb
# Segunda IDE : Master = hdc / Slave = hdd
#other=/dev/hdb1
#label=Windows3
#table=/dev/hdb
#map-drive = 0x80
#to = 0x81
#map-drive = 0x81
#to = 0x80

Existe uma receita simples para alterar o lilo de outras distribuições instaladas no HD. Imagine por exemplo que você instalou o Kurumin e acabou instalando o lilo no MBR, sobrescrevendo o lilo do Mandrake, que agora não dá mais boot.

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 chama 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.

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 Indique o sistema de arquivos 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 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.

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 upgade-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:
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, 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

Você pode também editar as opções básicas do grub usando o grubconf, um utilitário gráfico, disponível em várias distribuições e também via apt-get:

gdh1

3 comentáriosPor Carlos E. Morimoto. Revisado 5 de julho de 2007 às 15h53

Comentários

Otimo texto
por maciel (anônimo) em 13 de junho de 2011 às 02h26
Muito bem explicado, em um texto simples e direto. Informando o que é necessário sem enrolação e conversa mole.
Surpreendente
por Isnadja (anônimo) em 7 de março de 2011 às 20h09
Valeu Morimoto

Seu artigo foi muito esclarecedor, foi show de explicação, não li nada melhor. Muito obrigada!!!
Mais um arquivo de primeira
por Renato (anônimo) em 21 de novembro de 2010 às 17h54
Valeu Morimoto

Seu artigo foi muito esclarecedor, tirou minhas dúvidas