Linuxカーネルを構築する前に、どのファイルがLinuxカーネルに含まれているかをどうやって知ることができますか?

Linuxカーネルを構築する前に、どのファイルがLinuxカーネルに含まれているかをどうやって知ることができますか?

私は以前のLinuxカーネルバージョンの構築に関連するプロジェクトを進めています。大丈夫です。ただし、CVEに応じて、以前に検出されたすべてのセキュリティ脆弱性に対してカーネルをパッチする必要があります。私はCVEを持ち、そこに記載されている脆弱なファイルの名前と影響を受けたカーネルバージョンを抽出しました。

これまで約150個を見つけました。潜在的な私のビルドに影響を与える可能性がある脆弱性がありますが、その一部は私が使用していないグラフィックドライバに関連するファイルに影響を与えるようです。これまでは、make menuconfigファイルがKconfig関連フォルダに含まれていることを確認するために、およびを使用して手動でリストを調べました。これまではうまくいきますが、これらの方法では実際のファイル名(ipc / sem.cなど)が表示されないため、追加の作業が必要です。

理想的には、私のビルドに含まれるすべてのファイルのリストを印刷してから、脆弱なファイルが含まれていることを確認するスクリプトを作成したいと思います。

ビルドに含めるソースファイル(ipc / sem.cなど)の名前をどのように見つけますか?

ベストアンサー1

ビルドし、.oファイルを一覧表示します。.cビルドに関連する各ファイルまたはファイルは、その名前のファイルにコンパイルされると思います。セキュリティ上の問題により、ビルドに含まれるヘッダーファイルを変更する必要があるかどうかは不明です。.S.o

make vmlinux modules
find -name '*.o' -exec sh -c '
    for f; do for x in c S; do [ -e "${f%.o}.$x" ] && echo "${f%.o}.$x"; done; done
' _ {} +

より正確なアプローチは、アクセス時間が保存されるファイルシステムにソースを配置してから構築することです。ビルドによって更新されなかったアクセス時間を持つファイルは、このビルドでは使用されません。

touch start.stamp
make vmlinux modules
find -type f -anewer start.stamp

おすすめ記事