Como nem tudo é um mar de rosas, é necessário que se entenda bem o processo de boot para assim podermos corrigir bem mais facilmente qualquer tipo de problema. Geralmente, podem ocorrer três tipos de problemas durante o processo de boot:
- LILO com dados corrompidos;
- Novas configurações de módulos e parâmetros do kernel;
- Sistema de arquivos corrompidos.
Erros do LILO
As mensagens de erro do LILO podem ser oriundas de má instalação/configuração e quando o LILO carrega o boot do sistema. Os erros de instalação geralmente são óbvios e geram informações suficientes para corrigir o problema.
Já as informações de erros de boot não são mostradas como as de instalação/configuração. Quando o LILO é carregado ele mostra uma letra para cada fase. Usando estas informações podemos minimizar este tipo de problema.
- <NADA> - Nenhuma parte do LILO foi carregada.
- L<Código de Erro> - Primeiro estágio de boot carregado, porém erros encontrados durante o carregamento do segundo estágio. Veja a tabela de código de erros.
- LI - Primeiro estágio de boot carregado e pronto para carregar o segundo, porém o sistema falha ao executar essa tarefa. Motivo: Configurações de geometria dos discos rígidos em desacordo ou o arquivo /boot.boot.b foi alterado sem executar o map installer.
- LIL - O segundo estágio de boot é carregado, porém o descritor da tabela de partições para o arquivo /boot/map não é carregado. Motivo: Falhas de disco ou configurações de geometria dos discos rígidos em desacordo.
- LIL? - O segundo estágio de boot é carregado, porém em um endereço incorreto. Motivo: Configurações de geometria dos discos rígidos em desacordo ou o arquivo /boot/boot.b foi alterado sem executar o map installer.
- LIL- - O descritor da tabela de partições corrompido.Motivo:Configurações de geometria de um ou outros discos rígidos em desacordo com a tabela de partições ou o arquivo /boot/map foi alterado sem executar o map installer.
- LILO - O LILO é carregado normalmente.
Códigos de erro
- 0x00 - Erro interno. Motivo: Dados corrompidos na instalação do LILO ou o sistema tenta acessar um disco com mais de 1024 cilindros com o LILO configurado com a opção linear. Consulte a man do lilo.conf.
- 0x01 - Comando ilegal. Motivo: Disco não suportado pela BIOS.
- 0x02 - Endereço não encontrado. Motivo: Erro de mídia, reinicie o sistema.
- 0x03 - Disco com proteção de escrita.
- 0x04 - Setor não encontrado. Motivo: Geometria de disco inválida.
- 0x06 - Mudança de linha ativa. Motivo: Este é um erro passageiro, reinicie o sistema.
- 0x07 - Inicialização inválida. Motivo: A BIOS falha ao iniciar o controlador de discos.
- 0x08 - DMA overrun. Motivo: Erros de DMA, reinicie o sistema.
- 0x09 - O DMA atravessa a barreira do 64K. Motivo: Geometria de disco inválida. Remova a opção compact do arquivo lilo.conf.
- 0x0C - Mídia inválida. Motivo: Erro de mídia.
- 0x10 - Erro de CRC. Motivo: Problemas na Mídia, mova os arquivos de boot para outra localização para corrigir este problema.
- 0x11 - ECC correction successful. Motivo: Um erro ocorre na leitura dos dados.
- 0x20 - Erro de controle
- 0x40 - Falha na inicialização do disco. Motivo: Disco corrompido.
- 0x80 - Disk timeout. Motivo: Disco corrompido ou o disco não está girando.
- 0xBB - Erro de BIOS. Motivo: O problema persiste depois de uma reinicialização, remova a opção compact do lilo.conf. Se o erro persistir analise as opções lba32 e linear.
Bootando o sistema como Monousuário (Single-user)
Às vezes por inconsistência do sistema ou por causa de um driver corrompido é necessário acessar o sistema como monousuário para fazer as devidas correções no sistema. Para acessar o sistema como single user, basta apenas digitar linux single no prompt do LILO. Como dito anteriormente nesse nível de execução somente o necessário é startado. Observe:
boot: linux S, s ou single
Criando discos de boot e de reparo
Às vezes nos deparamos com problemas no boot do sistema por causa de arquivos corrompidos, má configuração de gerenciadores de boot, instalação de um novo kernel etc. Nesses casos aparecem duas ferramentas simples e importantes para qualquer Administrador
Linux, o disco de boot e o disco reparo. Estes discos podem garantir a disponibilidade do sistema em casos de emergência. Nunca pense que esse tipo de problema não irá acontecer com você então para a casa não cair à receita é simples. Observe:
Para criar um disco de boot do
Debian faça:
# mkboot
Para criar um disco de boot no Red Hat faça:
# mkbootdsk --device /dev/fd0 --noprompt --verbose
Agora vamos criar um disco de recuperação de MBR no LILO, pois na MBR estão armazenadas informações sobre as partições dos discos como partição inicializável, se são primárias ou estendidas e tipo de sistema de arquivos utilizado.
# dd if=/dev/sda of=/dev/fd0 bs=512 count=1
Onde:
- if=arquivo_de_entrada - Lê o arquivo,disco ou partição de entrada.
- of=arquivo_de_saída - Grava no arquivo, disco ou partição de saída.
- bs=bytes - Força ibs bytes e obs bytes (consulte man dd)
- count=blocos - Conta somente à entrada de blocos.
Para restaurá-lo faça:
# dd if=/dev/fd0 of=/dev/sda bs=512 count=1
Vamos fazer uma simulação, tome cuidado, pois se fizer algo de errado pode comprometer o seu sistema. No meu caso estou usando o VMware para emular um ambiente Linux.
1. Apague a partição de boot usando o fdisk, no meu caso bootei o sistema usando um disquete de boot do Windows. Feito isso o seu sistema não bootará mais como antes. Ou seja, você precisará de um disco de boot para iniciar o seu sistema.
A:>
fdisk
2. Reinicie o sistema usando o disco de reparação criado anteriormente com o utilitário dd. Lembre-se que ele possui informações das partições do sistema. Para visualizar a tabela de partições digite:
# fdisk -l
3. Para recuperar a tabela de partição digite o comando como citado anteriormente:
# dd if=/dev/fd0 of=/dev/sda bs=512 count=1
4. Reinicie o sistema sem o disco de recuperação, após a inicialização digite novamente "fdisk -l" e observe a tabela de partições. Você verá que a partição apagada foi restaurada. Parabéns.