
私のチームは、組み込み Linux ソリューション用のソフトウェアを開発しています。私たちが直面している問題は、システムが目的のアプリの実行を開始する準備ができるまでに時間がかかりすぎることです (つまり、Linux カーネルのロードに時間がかかりすぎる)。通常、これには 38 ~ 43 秒かかります。不要なファイルを削除してカーネル構成を修正しましたが、それでもこれだけの時間がかかります。
質問です。カーネルの起動を高速化するには他に何ができるでしょうか (できればハードウェアを変更せずに)? 組み込み Linux の充電にこれほど時間がかかるのは普通ですか? カーネルが完全に充電される前に Linux カーネルにアプリを起動するように指示することは可能ですか?
このシステムはテキサスインスツルメンツのオマップL138。
以下は、カーネルの起動時にターミナルに表示される最も関連性の高いメッセージをすべて示した画像です。私の質問に対する (一般的な) 回答がなくても、カーネルの起動速度の向上に役立つ行について何か知っている場合は、遠慮なく回答してください。
答え1
出力では、カーネルが実際にロードされるポイントは次のようになります。
Init version 2.86 booting
23秒後です。その後、初期化ユーザー空間プロセスであるが引き継いでユーザー空間の構成を開始しますが、これにより必然的にさまざまなカーネル ドライバーがアクティブ化され、適切なモジュールがロードされる可能性があります。
どのプラットフォームかはわかりませんが、たとえば 700 Mhz シングル コアの Raspberry Pi では、約 4 秒です。つまり、これはまだ非常に遅く、問題があることを示しています。
0秒から19秒までのギャップを差し引くと、予想どおりの結果が得られました。このギャップはMII PHYに関するコメントで終わります。これはイーサネットデバイスドライバーですネットワークなしでシステムを起動できる場合は、カーネルからイーサネット ドライバーを構成して、速度が速くなるかどうかを確認してくださいinit
。
23 秒を過ぎると、おそらくルート ファイルシステムの I/O がボトルネックになります。何らかの理由で、25 秒から 30 秒の間に 5 秒のギャップがあり、最後に FAT ファイルシステム エラーに関するコメントが表示されます。実際、そこにはいくつかの fs エラーがあります。これは、init システムが存在しないファイルシステムをマウントしようとしていることを意味し、時間の無駄になります。
33秒から37秒の間には、ミスを示唆するエラーが多くなります。ファイルシステムがどのように配置されているか、および/またはそれに依存するソフトウェアがどのように構成されているかこれらの依存関係の1つかもしれないtmpfs ファイルシステムは、RAM に作成されるはずでしたが、失敗しました (そのため、および のファイルが欠落しています/var/
) /tmp
。ここでのポイントが明確でない場合は、 を投稿して別の質問をして/etc/fstab
、誰かに説明を求めることができます。