組み込みLinuxブートを高速化するには?

組み込みLinuxブートを高速化するには?

私たちのチームは、組み込みLinuxソリューション用のソフトウェアを開発しています。私たちが直面する問題は、システムが私たちが望むアプリケーションの実行を開始する準備をするのに時間がかかりすぎるということです(つまり、Linuxカーネルをロードするのに時間がかかりすぎます)。通常は完了するのに38〜43秒かかります。カーネル構成を変更し、不要なファイルを削除しましたが、それでも時間がかかります。

私の質問:カーネルの起動を高速化する別の方法はありますか(可能であればハードウェアを変更せずに)?組み込みLinuxの充電に時間がかかるのは普通ですか?カーネルが完全に充電される前に、Linuxカーネルにアプリケーションを起動するように依頼できますか?

システムはテキサスインスツルメンツOMAP L138

以下は、カーネルの起動時に端末に表示される最も関連性の高いすべてのメッセージを含むイメージです。私の質問に対する(一般的な)答えを持っていませんが、カーネルの起動速度を向上させるのに役立つものの1つを知っている人がいる場合は、その質問にも自由に答えてください!

最初の部分 第二部 第三者 第4部 第五部

答え1

出力でカーネルが実際にロードされるポイントは次のとおりです。

Init version 2.86 booting

23秒後です。以来、内部にユーザースペースプロセスであるユーザースペース構成が引き継がれ始めます。ただし、これは必然的に適切なモジュールロードを含むさまざまなカーネルドライバをアクティブにします。

これがどのプラットフォームであるかは明らかではありませんが、例えば700MHzのシングルコアRaspberry Piでは約4秒です。したがって、これはまだ非常に遅く、これは何かが間違っていることを示しています。

0秒と19秒の差を引くと、期待した結果が得られます。このギャップはMII PHYの説明で終わります。イーサネットデバイスドライバです。。ネットワークなしでシステムを起動できる場合は、カーネルの外側にイーサネットドライバを設定して確認し、速度が速いかどうかを確認できますinit

23秒後、主なボトルネックはおそらくルートファイルシステムのI / Oです。何らかの理由で、25秒から30秒の間に5秒の間隔があり、最後にFATファイルシステムエラーに関するメモがあります。実際にはそこにいくつかのFSバグがあります。これは、initシステムが存在しないファイルシステムをマウントしようとしていることを意味し、これは時間の無駄です。

33〜37秒の間に関連するバグを示すより多くのエラーが発生します。ファイルシステムの配置方法および/またはそれに依存するソフトウェアの構成方法。これらの依存関係の1つ可能RAM上に作成する必要があったが失敗したtmpfsファイルシステム(したがって/var/ファイルが見つからない/tmp)。/etc/fstabここで要点が不明な場合は、別の質問をして他の人に説明を求めることができます。

関連情報