Sempre que inicializo meu laptop gentoo, o openrc trava para sempre no estágio "Caching service dependencies...". Isso faz com que meu computador não inicialize, a menos que eu use uma chave sysrq para eliminá-lo e inicializar manualmente o sistema.
Usando ps
como ferramenta de diagnóstico, descobri que os programas grep
e cut
(filhos de um script gendepends.sh
) estavam travando, usando 0% de CPU. Matar esses programas permitiu que o processo de inicialização continuasse corretamente, depois de invocar openrc default
.
De qualquer forma, eu poderia usar muitos métodos para contornar esse problema, mas gostaria de saber a causa mais provável e corrigi-la adequadamente.
Aqui está a saída relevante do pstree quando tento resolver as dependências manualmente:
| | `-doas /lib/rc/bin/rc-depend -u
| | `-rc-depend -u
| | `-gendepends.sh /lib64/rc/sh/gendepends.sh
| | `-gendepends.sh /lib64/rc/sh/gendepends.sh
| | `-gendepends.sh /lib64/rc/sh/gendepends.sh
| | |-cut -d = -f 2
| | |-grep pid
| | |-tr -d \\"
| | `-tr -d [:space:]
No gendepends.sh
, esses comandos não são mencionados em nenhum lugar, então presumo que sejam invocados de outro script originado por ele.
EDIT : Já consertei o problema. Acabou sendo causado por um script init antigo com dependências insolúveis que ainda estava no meu diretório initscripts por algum motivo. Excluir o script resolveu o problema. Obrigado pelas sugestões.
Esses comandos não surgem do nada; eles devem ter sido invocados por algum script de inicialização, mas talvez com parâmetros errados ou esperando dados inexistentes. Posso imaginar que eles esperam por alguma entrada que simplesmente não é fornecida.
Na saída de
ps -ef
você encontra o ID do processo pai (PPID), que provavelmente é o culpado; você também pode tentarpstree
obter uma visão geral melhor. Tente descobrir a linha de script em que os comandos são invocados e talvez você possa descobrir o motivo pelo qual o processo e, como resultado, o processo de inicialização completo trava.Se você não conseguir apontar o problema, adicione a saída de
ps -ef
à sua pergunta (você pode encurtá-lo para o comando suspenso e seus pais até PID 0) e o script de inicialização, se houver algum envolvido.