web-dev-qa-db-ja.com

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

私のCentOSでは、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を変更しますか、それとも次回の起動時に何かが起こりますか?

8
David Tonhofer

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

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

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

4
Johan Myréen

Anthony GeogheganmentionsLinuxの用語で「ファームウェア」とは何ですか? および なぜ一部のドライバはまだファームウェアを必要とするのですか? =有用な背景を提供します。

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

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

5
Stephen Kitt

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

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

デバイスは、生産コストを削減するためにROM + RAMを使用する代わりに、RAMでファームウェアを取得するように考案されました。例として、仕方。

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

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

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

2
Rui F Ribeiro