Existem erros comuns de inicalização de Linux, como aquele que aparece initramfs – veja o post Erro ao inicializar o Linux – initramfs. Ao ligar um computador com Linux, o sistema operacional realiza um teste rápido de integridade das partições. Em casos de problemas que não possam ser corrigidos automaticamente ou de erros inesperados ao tentar montar as partições, o boot é interrompido e você recebe uma mensagem. Ela pode começar com algo como:
- “Mount of filesystem failed. A maintenance shell will now be started. CONTROL-D will terminate this shell and re-try.“
- “Welcome to emergency mode! After logging in, type ‘journalctl -xb’ to view system logs, ‘systemctl reboot’ to reboot, ‘systemctl default’ or^D to try again to boot into default mode“
- “An error occurred during the file system check, dropping you to a shell; the system will reboot when you leave the shell.“
No entanto, o conteúdosempre finaliza com:
Give root password for maintenance
(or type Control-D for normal startup):
Essa mensagem indica que o sistema está inicializando em um modo de manutenção, também conhecido como single-user mode ou modo de recuperação. É necessário entrar com a senha de root (superusuário) para que você possa acessar o modo de manutenção e fazer correções no sistema.
Se você não souber a senha de root, pode tentar reiniciar o sistema (dar o comando CTRL+D) e ver se ele inicializa normalmente. Às vezes, esse erro é temporário e pode ser resolvido com uma simples reinicialização.
Se o problema persistir e souber a senha de root, pode digitá-la para acessar o modo de manutenção. Você pode tentar algumas soluções para corrigir problemas comuns de inicialização do Linux, como verificar a integridade do sistema de arquivos, reparar pacotes corrompidos, etc. Dependendo da distribuição do Linux que você está usando, as etapas específicas podem variar.
No prompt limitado do modo single-user, verifique nas linhas anteriors o resultado da verificação de disco (programa fsck) o nome da partição que deve ser verificada. Você pode também listar as partições existentes com o comando “fdisk -l” ou “cat /etc/fstab”. Supondo que o dispositivo com problema seja “/dev/sda1”, digite o comando:
# fsck /dev/sda1
O teste deverá indicar os erros que precisarão da sua confirmação antes de serem corrigidos – por isso a necessidade de usar o prompt de recuperação em vez da correção automática.
Conforme o sistema operacional, pode acontecer de ser necessário especificar o tipo de sistema de arquivos. Para isso, use o comando:
sudo file -sL /dev/sd*
Conforme o sistema de arquivos, são utilizados os comandos do pacote e2fsprogs: efsck (ou fsck) para ext, e2fsck (ou fsck.ext2) para ext2, fsck.ext3 ou fsck.ext4 para ext3 e ext4 respectivamente. O comando fsck.vfat (ou fsck.msdos) é um link simbólico para a ferramenta dosfsck, que pertence ao pacote dosfstools, utilizado para partições formatadas em FAT16 ou FAT32. No Windows, o equivalente é o comando chkdsk, a abreviação de Checkdisk, que também pode ser utilizado para realizar exames de superfície por “bad sectors” (setores ruins), tarefa antigamente feita pelo Scandisk. Erros em partições NTFS podem ser corrigidos utilizando o comando “ntfsfix”.
sudo fsck.vfat -pfv /dev/sdb1 # FAT32 sudo fsck.ext4 -pfv /dev/sdb1 # Ext4 sudo shutdown -r -F now # reinicia e executa fsck
Veja algumas opções do comando fsck (no geral, as três primeiras são recomendadas):
- -p: corrige automaticamente o sistema de arquivos sem perguntar;
- -f: força a verificação mesmo que o sistema de arquivos não esteja marcado como “sujo”;
- -v: ativa o modo verbose (exibe mais mensagens durante a execução do programa);
- -y: assume sim para todas as questões;
- -n: assume não para todas as questões (somente faz uma verificação de somente leitura no sistema de arquivos).
Em geral, o fsck é rodado na inicialização do sistema, quando é detectado que um sistema de arquivos está num estado inconsistente, indicando um desligamento anormal, como um travamento ou desligamento de energia. Pode-se também solicitar que o sistema efetue checagem de disco ao reiniciar usando a opção “-F” com o comando “shutdown -r” (vide acima) ou criar o arquivo forcefsck na raiz do sistema (“touch /forcefsck”) e editar o arquivo /etc/default/rcS, buscando a opção “FSCKFIX” e trocando o “no” por “yes”. Na inicialização seguinte, os discos serão então analisados e o arquivo /forcefsck destruído.
Caso esteja usando uma partição formatada em XFS, .Podem aparecer erros como “xfs internal error xfs_btree_check_sblock at line …” Nesse caso, comece com o comando:
sudo xfs_check /dev/sdb1
Ele vai indicar os problemas encontrados – caso não tenha, retorna para a linha de comando sem imprimir nada. Para realmente corrigi-los, rode o:
sudo xfs_repair /dev/sdb1
Todo o processo é automático. Se não tiver os programas, instale-os através do comando “sudo apt-get install xfsprogs xfsdump”. Veja um exemplo dois erros possíveis de aparecer:
agi unlinked bucket 0 is 5888 in ag 1 (inode=4200192) bad next unlinked 0x57663 for inode 4195171 link count mismatch for inode 20208090 (name ?), nlink 0, counted 1
Os sistemas de arquivos são dividido em grupos de alocação, AGs. Em cada AG, existe uma lista desvinculada que é uma matriz de tabelas cujos elementos pode apontar para uma lista vinculada de inodes. Há um ponteiro próximo desvinculado (bad next unlinked) em cada inode. A lista é usada para representar inodes não encadeados (inodes removidos de diretórios), mas ainda são referenciados por processos. Se não houve uma desmontagem limpa, em seguida, as listas não encadeadas podem não estarem vazias e deve-se remover esses inodes. No AG#0, o elemento 5888 da matriz está apontando para inode #4200192, que foi desvinculado, mas ainda tinha referências a ele no momento em que o sistema de arquivos não foi desmontados (perda de energia, falha etc ..).
Na última linha, parece que para o diretório raiz inode #128, que tem uma contagem de 335, está encontrando 336 entradas. É como se o inode fosse excluído mas o diretório não foi atualizado corretamente.
Boot com outra mídia
Caso não consiga realizar a checagem de disco devido ao fato dele estar montado e não conseguir desmontá-lo (umount /dev/sdX), pode-se usar um pendrive com uma distribuição Linux para rodar em “live” – veja como criar um no post Live pendrive – Como usar o Linux sem instalação.
Erro em arquivo de configuração
Pode acontecer de ter se modificado um arquivo de configuração e, somente ao reiniciar o sistema, é que essas informações sejam acessadas e o erro aconteça. Nesses casos, é necessário remontar a partição raiz em modo de leitura e escrita antes de poder fazer a edição. Isso é feito usando o seguinte comando:
# mount -o remount rw /
O próximo passo é editar o arquivo que deve ser arrumado. Supondo que seja o arquivo de configuração sobre a montagem automática inicial de discos e usando o nano como editor de texto, o comando fica:
# nano /etc/fstab
Ao terminar a edição, salve o arquivo, saia do editor e reinicie usando o comando “reboot”.