カーネルのコンパイル時にどのカーネルソースファイルが使用されているかを確認する

カーネルのコンパイル時にどのカーネルソースファイルが使用されているかを確認する

私は特定のハードウェア用のLinuxカーネルをコンパイルしており、実際に必要なドライバ/オプションのみを選択しています。これは、可能な限り多くのハードウェア構成と互換性があるように、ほぼすべてをコンパイルする一般的な展開カーネルとは完全に対照的です。

私のカーネルの場合、カーネルコード全体の1%しか使用しないと思います(サイズ推定値)。

カーネルをビルドするときに実際に使用するカーネルソースのファイルを見つける方法はありますか?

これは学問的な質問ではありません。私はカーネル3.18.1をコンパイルしたとしましょう。これでセキュリティアップデートが登場し、3.18.2がリリースされました。私はすでに私の中にいます。その他の問題バージョン間で変更されたファイルを見つける方法。使用中のファイルが変更されたかどうかがわかったら、カーネルを新しいバージョンに再コンパイルします。一方、変更が未使用のファイルにのみ影響する場合は、現在のカーネルバージョンを維持できます。

ベストアンサー1

私の意見を答えとしてまとめる:

  1. シェルで次のコマンドを実行します。シェルスクリプトを作成するか、この-dオプションを使用して悪魔化することができます。

    inotifywait -m -r -e open --format '%f' /kernel_sources/directory/in_use/ -o /home/user/kernel_build.log
    
  2. 別のシェルで実行make

  3. ログファイルには、/home/user/kernel_build.logビルドプロセス中に開かれた(読み取り操作)ファイルのリストが含まれています。

おすすめ記事