web-dev-qa-db-ja.com

Gentooのopenrcは「サービスの依存関係をキャッシュする...」で永遠にハングします。

Gentooラップトップを起動するたびに、openrcは「サービスの依存関係をキャッシュしています...」の段階で永久にハングします。これにより、sysrqキーを使用してコンピューターを強制終了し、手動でシステムを起動しない限り、コンピューターを起動できなくなります。

診断ツールとしてpsを使用すると、grepおよびcutプログラム(スクリプトgendepends.shの子)が0%のCPUを使用してハングしていることがわかりました。これらのプログラムを強制終了すると、openrc defaultを呼び出した後、ブートプロセスを適切に続行できました。

とにかく、私はこの問題を回避するために多くの方法を使用することができましたが、最も可能性の高い原因を知り、それを適切に修正したいと思います。

依存関係を手動で解決しようとしたときのpstreeの関連する出力は次のとおりです。

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

gendepends.shでは、これらのコマンドはどこにも言及されていないので、それらがソースとなった別のスクリプトから呼び出されていると思います。

[〜#〜] edit [〜#〜]:問題を修正しました。それは、解決できない依存関係を持つ古いinitスクリプトが原因であることが判明しましたが、それは何らかの理由で私のinitscriptsディレクトリにまだ存在していました。スクリプトを削除すると問題が解決しました。提案をありがとう。

1

これらのコマンドはどこからともなくぶら下がることはありません。それらはいくつかのinitスクリプトによって呼び出されたに違いありませんが、おそらく間違ったパラメーターを使用しているか、存在しないデータを予期しています。提供されていない入力を待っていると想像できます。

ps -efの出力には、おそらく原因である親プロセスのID(PPID)があります。 pstreeを試して概要を確認することもできます。コマンドが呼び出されるスクリプト行を把握してみてください。おそらく、プロセスとその結果として完全なブートプロセスがハングする理由を把握できます。

問題を指摘できない場合は、ps -efの出力を質問に追加し(Hangingコマンドとその親をPID 0まで短縮できます)、関与している場合はinitスクリプトを追加します。 。

1
Murphy