O openrc do Gentoo fica suspenso para sempre em “dependências do serviço de armazenamento em cache…”

1

Sempre que eu inicializo meu laptop gentoo, o openrc trava para sempre no estágio "Dependências do serviço de armazenamento em cache ...". Isso faz com que meu computador não seja inicializado a menos que eu use uma chave sysrq para eliminá-lo e inicializar manualmente o sistema.

Usando ps como uma ferramenta de diagnóstico, descobri que os programas grep e cut (filhos de um script gendepends.sh ) estavam suspensos, 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 evitar esse problema, mas gostaria de saber a causa mais provável e corrigi-la corretamente.

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:]

Em gendepends.sh , esses comandos não são mencionados em nenhum lugar, então eu suponho que eles são invocados de outro script que foi originado por ele.

EDIT : resolvi o problema agora. Acabou sendo causado por um antigo script de init com dependências não resolvidas que ainda estavam em meu diretório de initscripts por algum motivo. A exclusão do script resolveu o problema. Obrigado pelas sugestões.

    
por sadljkfhalskdjfh 15.12.2017 / 12:44

1 resposta

1

Estes comandos não saem do nada; eles devem ter sido invocados por algum script de init, mas talvez com parâmetros errados ou esperando dados inexistentes. Eu 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 tentar pstree para uma melhor visão geral. 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á-la para o comando de suspensão e seus pais até PID 0) e o script de inicialização se houver envolvido.

    
por 15.12.2017 / 14:22