4481 Views
Tempo de leitura: 2 MinutosGostaria de falar um pouco sobre um erro que me ocorreu em algumas oportunidades, sempre ao atualizar o sistema operacional CentOS.
Primeiro, gostaria de deixar claro que sistemas Linux, geralmente, não inicializam por falha de configuração ou integridade de filesystem.
Uma falha que pode ocorrer também na inicialização do Linux está relacionada ao erro “Dracut”.
O que é o Dracut
Dracut é um utilitário utilizado para gerar imagens Initramfs. Esse, por sua vez, é um sub-system responsável pela inicialização do sistema operacional Linux.
A seguir, podemos ver como é ciclo de inicialização do Linux:
Logo, se há uma falha no Initramfs, o sistema não inicializa, dando erro de “Dracut”. O Dracut mesmo não falha, mas seu prompt é exibido no boot do sistema quando ocorre uma falha na inicialização, levanto as pessoas a falar que houve uma falha no Dracut.
O que causa o erro
Como informado, o erro de inicialização ocorre quando uma Initramfs mal formada é carregada, e essa mal formação do Initiramfs pode ocorrer por módulos ausentes e/ou inconsistências no sistema, principalmente após atualizações de pacotes.
No caso que apresento aqui, o erro de inicialização ocorreu por que o pacote LVM2 foi removido indevidamente em um processo de atualização, e pelo fato do sistema operacional usar volumes lógicos como discos do sistema.
Como resolver
Resolver esse problema requer a reinstalação do pacote LVM2 e a geração de novos Initramfs.
Para isso, é preciso bootar um Live CD como o Systemrescue. Tenho um artigo aqui no LinuxZilla falando sobre o Systemrescue.
Configurando a Rede no Live:
Feito isso, é preciso configurar a rede do sistema no Live CD/USB. Você pode configurar a rede em memória com os comandos abaixo:
ifconfig INTERFACEDEREDE IP netmask MASCARADEREDE
Exemplo:
ifconfig eth0 192.168.0.100 netmask 255.255.255.0
Agora é preciso testar a conectividade dessa rede com redes externas, pois nos próximos passos teremos que reinstalar o pacote lvm2.
Montando os volumes no Live:
Feitos os devidos testes de conectividade, deve-se montar as partições do sistema operacional do servidor.
Use os comandos abaixo como referência e adéque-os ao padrão existente no seu sistema:
01 – Ativar os volumes:
lvchange -ay
02 – Montar os volumes:
mount /dev/vg_system/lv_system /mnt/
03 – Agora é preciso fazer Bind dos 3 diretórios voláteis do filesystem Linux:
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
04 – A seguir, fazer chroot pra dentro do sistema:
chroot /mnt/ /bin/bash
Uma vez dentro do sistema, é preciso instalar o pacote lvm2 com o comando yum install lvm2.
Feito isso, vamos gerar novas imagens initramfs.
Gerando novos Initramfs:
Quando estiver pronto, execute o comando abaixo. Ele recriará o arquivo initramfs:
dracut -f
Sugiro também que dê uma conferida no grub.cfg. Se estiver inconsistente, o que não estará, execute o comando abaixo para recriá-lo:
grub2-mkconfig -o /boot/grub2/grub.cfg
Resumo
A vida é boa, é a falha no boot do Linux que atrapalha. Além do how-to acima, fica a sugestão de conferir seu sistema antes de rebootar a máquina. Algumas checagens simples como `cat /etc/fstab` já pode evitar alguns estresses.
Boa sorte e até a próxima.
Abraços.