Imagem Da Lilo - Lilo & Stitch | Disney divulga primeira imagem oficial do live-action ...
Lilo & Stitch | Disney divulga primeira imagem oficial do live-action ...

Entendendo a imagem do LILO e como configurá-la corretamente

A maioria das pessoas que chega no LILO hoje em dia o faz por acidente. Pode ser um servidor legado, uma VM antiga, ou simplesmente um artigo que recomenda a ferramenta sem avisar que ela já está obsoleta. O LILO (LInux LOader) é um boot loader clássico que escreve a imagem diretamente nos setores iniciais do disco. Diferente do GRUB, ele não lê o sistema de arquivos no momento do boot. Ele precisa ter os setores do kernel já mapeados fisicamente no disco quando o comando lilo é executado.

O que é a imagem da lilo e como ela funciona na prática

A imagem da lilo é basicamente o resultado do comando lilo sendo executado com sucesso. Quando você roda esse comando, o LILO lê o arquivo de configuração em /etc/lilo.conf, localiza os setores físicos onde o kernel e o initrd estão gravados, e escreve essas posições em dois lugares: o MBR (Master Boot Record) e o boot sector da partição raiz. É essa gravação direta que define tudo. Se o disco mudar de layout, se você mover o kernel para outro lugar, se o disco sofrer alguma reorganização, a imagem fica desatualizada e o boot falha silenciosamente. Um detalhe que muita gente perde: o LILO só atualiza esses mapeamentos quando você roda o comando explicitamente. Alterar o /etc/lilo.conf e reiniciar o sistema não faz nada. Você precisa rodar lilo -v e verificar se a saída não traz erros. Se o comando retornar algo como "Fatal: /dev/hda is not a block device", o problema não é a configuração. É o fato de estar usando um dispositivo que o LILO não reconhece como bloco.

Eu tive um caso específico com um servidor rodando Debian antigo em hardware com controladora SCSI via USB. O LILO não conseguia instalar a imagem porque o dispositivo aparecia como /dev/sdb mas o mapeamento físico não era estável entre reinicializações. A solução foi ajustar o lilo.conf para apontar diretamente para o dispositivo com partition=0 e usar a opção compact para evitar problemas de endereçamento. Também desativei o suporte a discos virtuais no bootloader e forcei a instalação apenas no MBR. Isso resolveu, mas levou duas horas de teste porque os logs do LILO são... generosos na verbosidade.

Quando usar LILO versus alternativas

O LILO tem uma vantagem que o GRUB não oferece: ele funciona em ambientes extremamente restritos, como sistemas embarcados sem sistema de arquivos no boot, ou partições fora do padrão. Mas essa vantagem é hipotética na grande maioria dos casos atuais. O GRUB2 lê o sistema de arquivos no momento do boot, então ele sobrevive a mudanças de partição, migração de disco, expansão de volume. Com LILO, qualquer alteração no layout do disco exige rerodpear o comando e atualizar a imagem. Se você esquecer, o sistema simplesmente não boota. Outro ponto importante: o LILO não suporta kernel modules dentro do boot loader. Tudo precisa estar embutido no initrd ou compilado diretamente no kernel. Isso significa que, se você precisar de drivers de hardware diferentes em máquinas distintas, vai ter que manter imagens de kernel separadas ou confiar em initrds bem construídos. O GRUB, por outro lado, carrega módulos como gfxterm e font, o que dá muito mais flexibilidade visual e funcional.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Se o seu cenário envolve um servidor legado que já roda LILO há anos e nunca deu problema, mantenha. A regra é: se não está quebrado, não conserte. Mas se está começando um projeto novo, use GRUB. A diferença de complexidade na manutenção entre os dois é grande e o LILO cobra caro o descuido.

Passo a passo básico para gerar a imagem

O processo é simples na teoria. Edite o /etc/lilo.conf com as entradas de boot necessárias. Cada entrada deve ter pelo menos label, image (caminho do kernel), e root (partição raiz). Opções como append para parâmetros de kernel e read-only para montagem inicial são comuns. Depois de salvar, execute sudo lilo -v para ver o que está acontecendo. A saída detalhada mostra os setores endereçados e se algum erro ocorreu. Se não houver erro, a imagem foi gerada com sucesso. Um erro comum é colocar o caminho do kernel errado no lilo.conf. O LILO não valida isso antes de escrever. Ele tenta mapear o setor, falha silenciosamente, e o boot simplesmente não encontra o kernel. Sempre verifique se o arquivo existe no sistema de arquivos antes de rodar o comando. Uma checagem rápida com ls -la /boot/vmlinuz-* evita dor de cabeça.

Também vale mencionar que o LILO não lida bem com discos muito grandes em sistemas antigos. Se o kernel estiver após o cilindro 1024 em um disco IDE convencional, o LILO não consegue endereçá-lo. A solução clássica é criar uma partição separada de 100MB em /boot e instalar o kernel lá, garantindo que fique dentro do limite. Em discos SCSI ou SATA, esse limite não se aplica da mesma forma, mas ainda pode aparecer em hardware muito antigo com BIOS limitada. Não há download único para a "imagem da lilo" porque ela não é um arquivo pré-construído. É um produto da execução do comando lilo sobre a configuração existente. O que você baixa é o pacote do LILO em si, disponível nos repositórios das distribuições Linux. Em Debian e derivados, o pacote se chama lilo. Em RPM-based, é lilo também. A instalação é trivial, mas a configuração e a manutenção exigem atenção.

Se o sistema já está configurado com GRUB e você quer migrar para LILO, não faça isso sem um plano de contingência. Tenha um live USB disponível, saiba como restaurar o GRUB do MBR, e entenda que qualquer erro na transição pode deixar a máquina irrecuperável sem intervenção externa. A migração reversa é muito mais comum do que a ida, justamente porque o GRUB é mais tolerante a mudanças. Em resumo, a imagem da lilo é um artefato direto da configuração e da execução do comando lilo. Ela funciona bem quando o ambiente é estável e previsível. Falha de forma abrupta quando algo muda. Conhecer essas limitações evita surpresas desagradáveis e economiza tempo precioso, especialmente em produção.