ファームウェアパッケージ:実際には何をしますか?


8

私の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.

よくOK。

これはVMなので、私はそのようなハードウェアさえ持っていません。

だから、質問:

ファームウェアパッケージは実際には何をしますか?

それらは、ハードウェアが存在するかどうかを確認する不透明な実行可能ファイルを実行する「ワンショット」インストールですか?少なくとも、ハードウェアのフラッシュは常に、ポップアップするDOSウィンドウ、クリックする必要のあるEULA、および耐えなければならないプログレスバー)に満ちており、パッケージを「インストール済み」としてマークします。

カーネルモジュールによってバイナリblobが読み込まれるようにinitramfsを変更しますか、それとも次回の起動時に何かが起こりますか?



では、Linuxの用語では「ファームウェア」とは?、Stephen Kittはこう書いています: ファームウェアファイルはカーネルでは使用されず、カーネルによって他のハードウェアにロードされます。これは、FLOSSシステムでソースコードなしのソフトウェアを使用することを漠然と許容する理由でもあります。メインのCPUではなく別のデバイスで実行されているという議論があります。スニッカー、スニッカー。
デビッドトンホーファー2018

回答:


4

ロード可能なファームウェアは、通常、デバイスのフラッシュに書き込まれる「ワンショット」インストールではありません。ファームウェアはデバイスの揮発性ストレージにロードされ、ホストコンピューターの電源がオンになるたびに実行する必要があります。ファームウェアがロードされるまで、デバイスは機能しません。ファームウェアは、デバイスのRAMに書き込むことができます。この場合、デバイスのプロセッサのコードとデータが含まれますが、フィールドプログラマブルロジックアレイ(FPGA)のロジックを定義するビットストリームや、両方の組み合わせ。

一方、フラッシュメモリのファームウェアは通常、デバイスに事前にプログラムされており、製造元からファームウェアの更新がある場合にのみ、書き換える必要があります。これは通常、ユーザーが実行する個別の実行可能ファイルなど、他のメカニズムを介して行われます。

メーカーがフラッシュメモリの代わりにRAMを使用する理由はいくつかあります。まず、ハードウェアの単一のバージョンを設計することを可能にしますが、同時に(たとえば、さまざまな市場分野向けに)製品の複数のバージョンを提供します。製品が頻繁にフィールドアップグレードされることが予想される場合は、デバイスのフラッシュメモリをアップグレードするプログラムを作成するよりも、ファームウェアのアップグレードをこの方法で処理する方が簡単な場合があります。このプログラムは通常、製品のエンドユーザーが実行することを目的としているため、優れたユーザーインターフェイスを備え、できるだけユーザーフレンドリーになるように設計する必要があります。フラッシュストレージを備えた一部のデバイスは、とにかくRAMからコードを実行することが多く、デバイスの起動時にフラッシュの内容をRAMにコピーするだけです。


ファームウェアがフラッシュからRAMに読み込まれていない場合、デバイスの電源がオンになった後、ファームウェアはどのようにRAMに読み込まれますか?
コード化

デバイスが自律的にファームウェアをロードできない場合、ホストは、デバイスがホストに接続されているバスを使用して、ファームウェアをデバイスのRAMに保存できます。典型的なバスはPCIとUSBです。それを行うのはデバイスドライバの責任です。電源投入後、デバイスを完全に「停止」させることはできません。ファームウェアのロードを容易にするロジックが含まれている必要があります。
JohanMyréen19年

ここで周辺機器について話していることを忘れていたので、常にバスに接続されます。理にかなっています!
コーディング

5

以下のようアンソニーGeogheganが 言及しLinuxの用語では「ファームウェア」とは?そして、なぜ一部のドライバはまだファームウェアを必要としていますか?有用な背景を提供します。

ファームウェアパッケージは、ファームウェアファイル、つまり、システム内またはシステムに接続されたデバイスで実行することを目的としたコードを含むファイルを含むパッケージです。一般的な例には、あなたの場合のようにwifiチップセットが含まれます。これらはワンショットインストーラーではなく、ハードウェアが利用可能かどうかは関係ありません。それらが利用可能にするファイルは、関連するハードウェアが存在する場合、対応するカーネルドライバーによって使用されます。ドライバーは、ターゲットハードウェアに接続されたメモリにファームウェアをロードし、ファームウェアを実行して動作します。

これらのファームウェアパッケージは、ファームウェアのアップデートをフラッシュメモリにロードする、考えているファームウェアインストーラーとは関係ありません(アップデートが必要な場合にのみ実行する必要があります)。そのプロセスは確かに長く、多くの場合複雑で、一見すると危険に満ちているように見えます(少なくとも、メーカーの警告に基づいて印象を付けた場合)。Linuxディストリビューションに含まれるファームウェアパッケージには、揮発性メモリにロードされるため、システムが起動するたびに必要となるファームウェアが含まれています。


2

すでに優れた答えに追加します。

ファームウェアファイル(別名、プロプライエタリバイナリブロブ)は、少なくともデバイスのコールド(再)ブート時にファームウェアに読み込まれます。

このデバイスは、ROM + RAMの代わりにRAMでファームウェアを取得するように考案されており、生産コストを削減します。例として、Broadcom wifiチップセットとそのように機能する内部スイッチチップセットがあります。

VMでファームウェアファイルを使用するという疑問の別の点に対処します。

VMを扱っているので、ファームウェアファイルは必要ありません。それらはどこにもロードされません。イーサネットまたはwifiの「ファームウェア」ファイルがはるかに少ない。

同様に、VM環境ではファームウェアが必要ないことを考えると、それはDebianでLinuxカーネルの汎用ファームウェアファイルパッケージへの依存関係を持っているという大きな特異性です。


「DebianでLinuxカーネルの汎用ファームウェアファイルパッケージに依存しているのは大きな特異性です」—少なくとも、カーネルパッケージで推奨されているファームウェアは、DFSGフリーです;-)。(しかし、あなたが正しい、両方の推奨事項- firmware-linux-freeirqbalance-現在のほとんどの展開では役に立たない。)
Stephen Kitt

私は常にカーネルをアップグレードした後、プレイブックを実行してその残骸をアンインストールします
Rui F Ribeiro

1
aptデフォルトで推奨事項をインストールしないように構成することもできます...
Stephen Kitt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.