rootwait/rootdelayのポイントは何ですか?

rootwait/rootdelayのポイントは何ですか?

rootwaitrootdelay非同期的に検出された場合やUSB経由でマウントされている場合など、ファイルシステムがすぐに利用できない場合に使用されます。問題は、rootこれが真であるかどうかがbootargに応じて明確でなければならないことです。しかし、カーネルがファイルシステムが表示されるのを待つ必要があることを自動的に認識しないのはなぜですか?この種の自動化を実装するのを妨げるいくつかの技術的制限がありますか?

答え1

時々、オペレーティングシステムは、応答が遅いペリフェラルと存在しないか、完全に接続されていないペリフェラルを区別できません。最も明確な例はネットワーク(TFTP、NFS)のルートファイルシステムで、遅いネットワークリンクや過負荷のサーバーを壊れたネットワークリンクやクラッシュしたサーバーと区別するのが困難です。タイムアウトは、放棄すべき時期をカーネルに伝えます。

これは、回転が遅いディスク、確認が必要なRAIDアレイなどでも発生する可能性があります。rootdelayデバイスが使用できなくなってもすぐに放棄しないようにカーネルに指示します。カーネルは、SCSIドライブがローカルディスクであるか、または一種のRAIDベイであるかを知る方法はありません。

rootwait無期限待つことを提案してください。これが常に望ましいとは限りません。たとえば、通常のルートファイルシステムが応答するのに時間がかかりすぎると、システムは別のルートファイルシステムにフォールバックすることがあります。

答え2

このような古い質問を再度申し訳ありませんが、最近私が直接調査してこの記事を見るようになりました。

~から私は何を見つけることができますか?rootdelay実際に行うことは、カーネルが遅いデバイスでrootfsを見つけることができるように、指定された時間カーネルの起動を遅らせることです。したがって、これを設定すると、rootdelay=10システムはrootfsが見つかったかどうかにかかわらず、カーネルの起動を試みる前に10秒待ちます。

一方、rootwait(@ Gillesが指摘したように)rootfsが利用可能になるまで無期限に待ってからカーネルを起動します。

システム全体がrootfsを見つけるのに5秒かかり、このように設定すると、rootdelay=10 rootwaitシステムは10秒待ってすぐに起動します。システムがrootfsを見つけるのに15秒かかると、rootdelay=10最初の10秒を強制的に待機し、最後にrootwait必要な5秒を処理します。最後に最後の場合に設定しないと、rootwaitシステムはrootfsを見つけることができないため、10秒後に起動しません。

関連情報