私のCentOSでは、aはyum update
次のように表示します。
(6/38): iwl1000-firmware-39.31.5.1-62.el7_39.31.5.1-62.2.el7_5.noarch.drpm
(7/38): iwl105-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(8/38): iwl135-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(9/38): iwl2000-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(10/38): iwl2030-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(11/38): iwl3160-firmware-22.0.7.0-62.el7_22.0.7.0-62.2.el7_5.noarch.drpm
など。
これはいわゆる「ファームウェアパッケージ」です。たとえば、インストールされている項目のいくつかを見つけてみましょう。
rpm --query --all | grep firmware
次に、その情報を照会します。
rpm --query --info iwl105-firmware-18.168.6.1-62.2.el7_5.noarch
私達は次を得ました:
Summary : Firmware for Intel(R) Centrino Wireless-N 105 Series Adapters
Description :
This package contains the firmware required by the iwlagn driver
for Linux to support the iwl105 hardware. Usage of the firmware
is subject to the terms and conditions contained inside the provided
LICENSE file. Please read it carefully.
わかりました。
これは仮想マシンなので、対応するハードウェアもありません。
したがって、質問は次のようになります。
ファームウェアパッケージは実際に何をしますか?
不透明な実行可能ファイルを実行し(次回起動時にすぐに?)、ハードウェアがあることを確認し、そうであれば、バイナリコードをハードウェアのフラッシュメモリにポンピングする「ワンタイム」インストールです(おそらくユーザーに依頼して)。 ;少なくともWindowsでは、パッケージを「インストール済み」とマークする前に、ハードウェアのリフレッシュが常にポップアップされるDOSウィンドウ、クリックする必要があるEULA、耐えられる進行状況バーがいっぱいです。
カーネルモジュールがバイナリブロブをロードするか、次の起動時に何が起こるようにinitramfsを変更しますか?
答え1
〜のようにアンソニー・ゲガン 言及する、Linuxの用語で「ファームウェア」とは何ですか?そして一部のドライバがまだファームウェアを必要とするのはなぜですか?便利な背景を提供してください。
ファームウェアパッケージは、ファームウェアファイルを含むパッケージです。つまりシステムまたはシステムに接続されているデバイスで実行するように設計されたコードを含むファイル。一般的な例は、あなたの場合のようなWiFiチップセットです。ワンタイムインストーラではなく、ハードウェアが利用可能かどうかには興味がありません。それらが提供するファイルは、対応するカーネルドライバで使用されます。もし関連ハードウェアがある:ドライバがターゲットハードウェアに接続されているメモリにファームウェアをロードした後、ファームウェアを実行して動作します。
これらのファームウェアパッケージは、ファームウェアアップデートをフラッシュメモリにロードする(アップデートが必要な場合にのみ必要です)、考慮しているファームウェアインストーラとは関係ありません。このプロセスは実際には時間がかかり、しばしば複雑で危険が逃げているように見えます(少なくとも製造元の警告による印象であれば)。 Linuxディストリビューションに含まれるファームウェアパッケージには、システムが揮発性メモリにロードされたときに起動するたびに必要なファームウェアが含まれています。
答え2
ロード可能なファームウェアは通常、デバイスのフラッシュメモリに書き込まれる「ワンタイム」インストールではありません。ファームウェアはデバイスの揮発性メモリにロードされ、コンソールの電源を入れるたびに実行する必要があります。ファームウェアがロードされるまで、デバイスは機能しません。ファームウェアはデバイスのRAMに書き込むことができます。この場合、デバイスのプロセッサのコードとデータが含まれていますが、FPGA(Field-Programmable Logic Array)またはいくつかのロジックを定義するビットストリームです。 。両方の組み合わせ。
一方、フラッシュメモリのファームウェアは通常デバイスに事前にプログラムされており、製造元がファームウェアを更新したときにのみ書き換えることができます。これは通常、ユーザーが実行する別の実行可能ファイルなどの他のメカニズムを介して行われます。
メーカーがフラッシュメモリの代わりにRAMを使用しようとする理由はいくつかあります。まず、単一バージョンのハードウェアを設計すると同時に、複数のバージョンの製品を提供できます(たとえば、さまざまな市場セグメントを対象としています)。製品に頻繁な現場アップグレードが必要な場合は、デバイスのフラッシュメモリをアップグレードするためのプログラムを困難にするよりも、この方法でファームウェアアップグレードを処理する方が簡単になる可能性があります。プログラムは素晴らしいユーザーインターフェースを持っている必要があり、通常は製品のエンドユーザーが実行するので、できるだけユーザーフレンドリーに設計する必要があります。フラッシュストレージを持つ一部のデバイスはしばしばRAM上でコードを実行し、デバイスが起動するとフラッシュの内容をRAMにコピーします。この場合、フラッシュチップはほとんどの時間アイドル状態であるため、追加費用が発生する。
答え3
すでに素晴らしい答えを追加します。
ファームウェアファイル(独自のバイナリブロブとも呼ばれます)は、少なくともデバイスがコールド(再)起動時にファームウェアにロードされます。
このデバイスは、生産コストを削減するためにROM + RAMを使用するのではなく、RAMにファームウェアを持つように設計されています。たとえば、このように動作する一部のBroadcom WiFiチップセットと内部スイッチチップセットがあります。
仮想マシンでファームウェアファイルを使用する問題を解決するためのもう一つのポイントです。
仮想マシンを扱うときは、ファームウェアファイルは必要ありません。イーサネットまたはWiFi「ファームウェア」ファイルは言うまでもなく、どこにもロードされません。
また、VM環境ではファームウェアが不要であることを考慮すると、Debianの大きな特徴は、Linuxカーネルの共通ファームウェアパッケージに依存することです。
答え4
他の人の回答を参考にして、
Linuxユーザーがよく見ている関連コンテンツとオンライン文書を比較してください。
//完全に正確ではない可能性があります。改善を歓迎します。
Linuxファームウェア
説明:Linuxカーネルドライバ用のファームウェアこのパッケージは、Linuxカーネルドライバで使用されるファームウェアを提供します。
//カーネルは(おそらく)すべてのシステム起動時にバイナリを別のSoCのRAM(WiFi、グラフィックカード...)にプッシュします。
//他(おそらく周辺機器)CPU / MCU(RAM)で実行
https://wiki.gentoo.org/wiki/Linux_firmware
Linuxイメージ一般
依存項目: linux-image-5.4.0-110-generic, linux-modules-extra-5.4.0-110-generic, linux-firmware, intel-microcode, amd64-microcode
説明:一般的なLinuxカーネルイメージこのパッケージは常に利用可能な最新の一般的なカーネルイメージを使用します。
//カーネルとドライバ、注:カーネル/ドライバは、指定されたLinuxファームウェアのバージョンと一致することがあります。
//CPUで実行
デバイスファームウェア
$ fwupdmgr get-devices
...
├─Prometheus:
│ │ Device ID: d432baa2162a...
│ │ Summary: Fingerprint reader
│ │ Current version: 10.01.3273255
│ │ Vendor: Synaptics (USB:0x06CB)
│ │ Install Duration: 2 seconds
│ │ Device Flags: • Updatable
│ │ • Supported on remote server
│ │ • Cryptographic hash verification is available
...
// BIOSアップデートなどの周辺フラッシュメモリ(ROM)でフラッシュします。
ユーザー空間のフラッシュメモリ、
fwupdmgr
またはsnap-store
(「Ubuntuソフトウェア」と呼ばれる)アップデートタブ
一般化する
- CPU:
// CPUで実行中:カーネル、ドライバ - システムオンチップ
- RAMにロード:linux-firmwareバイナリ
- ROMによるフラッシュ:デバイスファームウェア