Linuxカーネルで使用されているファームウェアブロブを確認する方法はありますか?

Linuxカーネルで使用されているファームウェアブロブを確認する方法はありますか?

私のラップトップが実際にどのファームウェアを使用しているかを確認する方法を探しています(たとえば、ハードウェアをサポートするバイナリブロブ)。

私のディストリビューションarchlinuxでバイナリブロブをバンドルするパッケージは次のとおりです。

core/linux-firmware(パッケージサイズ〜180MiB、〜2500 Blobファイルにインストールされている〜730MiB)

とにかく、私のラップトップはこれらのファイルのほんの一部しか使用していないようです。問題は、これを決定する方法を見つけることです。一部のオンライン検索では、単に針のみをgrep交換することを提案しています(dmesgfirmwarehttps://wiki.gentoo.org/wiki/Linux_firmware#Searching_for_loaded_firmware)。これはいくつかの洞察を提供しているようですが、これが最善/唯一/正しいアプローチであるかどうかはわかりません。私の考えでは

  1. 「ファームウェア」という単語は、dmesg実際のバイナリブロブとは無関係のコンテキストで出力に表示されます。
  2. ファームウェアのロード情報を表示するとき、さまざまなカーネルソースコードセクションの統合出力はありません(わかりません)。
[root@thinkbox ~]# dmesg -iファームウェア|
[0.111955] Spectre V2: ファームウェア呼び出しに対して制限付き推測を有効にする
[0.161877] ACPI:[ファームウェアエラー]:BIOS_OSI(Linux)クエリが無視されました。
[10.440450]プラットフォームRegulator.0:Regulatory.dbの直接ファームウェアロードがエラー-2のために失敗しました。
[10.493359]i915 0000:00:02.0:[drm] DMC ファームウェアのロード完了 i915/skl_dmc_ver1_27.bin(v1.27)
[10.581810] iwlwifi 0000:04:00.0: ロードされたファームウェアバージョン 36.ca7b901d.0 8000C-36.ucode op_mode iwlmvm
[10.766097] Bluetooth:hci0:ファームウェアリビジョン0.0ビルド10週41 2018
[11.947004] psmouse serio2:トラックポイント:IBM TrackPointファームウェア:0x0e、ボタン:3/3
[4855.262357] Bluetooth:hci0:最小ファームウェアバージョン2014年10月1週
[4855.268828] Bluetooth: hci0: デバイスファームウェア発見: intel/ibt-11-5.sfi
[4857.277466] Bluetooth:hci0:ファームウェアのダウンロードが完了するのを待っています
[4857.278204] bluetooth: hci0: 1962276 usecsにロードされたファームウェア
[4857.297293] Bluetooth:hci0:ファームウェアリビジョン0.0ビルド10週41 2018
[20995.531309] Bluetooth:hci0:最小ファームウェアバージョン1 2014年10月10日
[20995.531314] Bluetooth: hci0: デバイスファームウェア発見: intel/ibt-11-5.sfi
[20997.352132] Bluetooth:hci0:ファームウェアのダウンロードが完了するのを待っています
[20997.352924] Bluetooth: hci0: 1778914 usecsにロードされたファームウェア
[20997.370079] Bluetooth:hci0:ファームウェアリビジョン0.0バージョン2018-10-41
[22827.736960] Bluetooth:hci0:最小ファームウェアバージョン1 2014年10月1日
[22827.737757] Bluetooth: hci0: デバイスファームウェア発見: intel/ibt-11-5.sfi
[22829.202536] Bluetooth:hci0:ファームウェアのダウンロードが完了するのを待っています
[22829.202753] Bluetooth: hci0: ファームウェアがロードされました 1430656 usecs
[22829.219920] Bluetooth:hci0:ファームウェアリビジョン0.0バージョン10 2018年41駐車

編集:出力スクリーンショットをテキストコピーに置き換えました。

ベストアンサー1

これはおそらくそれを見つける最も最悪の方法であり、最も簡単な方法です:

  1. sudo mv /lib/firmware /lib/firmware.bak
  2. 再起動
  3. dmesg見つからないファームウェアファイルを確認してください。
  4. sudo mv /lib/firmware.bak /lib/firmware
  5. egを作成し/lib/firmware.needed、そのディレクトリにファイルをコピーします/lib/firmware(必要なディレクトリ構造を維持しながら)。
  6. その後、パッケージを削除してmv /lib/firmware.needed /lib/firmware

これで準備ができました。

この操作を自動的に実行する魔法のコマンドはありません。ちょうど使用を考えることができますinotifywait -r /lib/firmware 初期開始して出力を記録する間、これははるかに複雑になります。使用している場合initrd(そしてほとんどの人が使用している場合)、より複雑です。


@MarcusMüllerは、試してみるとてもきれいなアイデアを提供します。ルートファイルシステムのオプションを有効にして再起動し、atime次のコマンドを実行します。

find /lib/firmware -atime -1

理論的には、これは過去24時間にアクセスされたすべてのファイルを表示し、必要な/lib/firmwareすべてのファームウェアファイルを含める必要があります。

おすすめ記事