私のハードウェアに必要な最小ファームウェアファイルセットは何ですか?

私のハードウェアに必要な最小ファームウェアファイルセットは何ですか?

今日私は私の配布linux-unfree-firmwareパッケージのサイズが491MBであることを知りました。私は私のハードウェアにこれらのファイルがすべて必要ないと確信しています。そのため、どのファイルを除外できるかを知ることで、ディスク使用量を減らすことができると思いました。

どのファイルのソースを正確に指定する公式文書はありますか?https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/すべてのデバイス/コンピュータモデルに必要ですか?私のコンピュータハードウェアの公式文書にこれについての情報がありますか?一つある最初からLinux Webページこれはいくつかの一般的なハードウェアに関する情報を提供しますが、より多くの「公式」情報があるかどうかを知りたいです。

答え1

残念ながら、すべてのハードウェアとそれに必要なファームウェアファイルの「公式」文書はありません。ただし、Linuxカーネルビルドシステムをいくつか変更すると、ハードウェアに必要なファームウェアファイルが何であるかが正確にわかります。

さらに、ハードウェアで使用されているファームウェアファイルが見つかったとしても、ほとんどすべてのバージョン以降に頻繁に更新する必要のある短くないファイルのリストが残ります(gitタグ)。https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/。これは、すぐに作成する方法を学ぶリストから直接ファームウェアファイルを確実にフィルタリングできないことを意味します。

それでも興味がある場合は、次の手順に従ってください。

  1. 以下から最新バージョンのカーネルをダウンロードしてください。https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
  2. ランニング: make localmodconfig
    • .configこれにより、現在のカーネルに基づくビルドパラメータのリストを含むファイルが生成されます。
  3. ランニングmake
    • カーネルが構築されるので、時間がかかることがあります。
    • ビルドを完了するには、いくつかの依存関係をインストールする必要があります。
    • 完了すると、カーネルモジュールファイルであるmake複数のファイルが作成されます。.ko
  4. 次のコマンドを実行します。
find -name '*.ko' -exec modinfo {} \; | awk '$1 == "firmware:" { print $2}'

最後のコマンドは、ディストリビューションlinux-unfree-firmwareパッケージにあるファームウェアファイルの一覧を印刷します。これはハードウェアに必要なファイルです。

クレジット取引:https://lists.kernelnewbies.org/pipermail/kernelnewbies/2020-May/020818.html

答え2

この作業については、次に説明する徹底した/内部アプローチが好きです。この方法
ただし、すでに汎用およびモジュラーカーネルを実行している場合は、インストールされている
ファームウェアブロブリストの範囲を絞り込むための迅速で
汚い方法は、提案されているようにmodinfoを使用することです。

lsmod | cut -d ' ' -f 1 | tr '_' '?' | xargs -I % find /lib/modules/ -name "%.*" | xargs -I % modinfo % | awk '$1 == "firmware:" { print $2}'

これ:

  1. ロードされたモジュールのリスト
    (ここではファームウェアが必要な組み込みカーネルモジュールが省略されていることを覚えておいてください)

  2. ファイル名には「-」が頻繁に使用されるため、最初の列を抽出し、名前の「_」を単一文字のワイルドカードに置き換えます。
  3. 適切なモジュールファイルを見つけてmodinfoに提供し、提案されている
    ようにファームウェアブロブのリストを入手してください。

関連情報