Firmware-Pakete: Was machen sie eigentlich?


8

Auf meinem CentOS wird a yum updateFolgendes angezeigt :

(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                                                                                                                                             

usw.

Dies sind sogenannte "Firmware-Pakete". Lassen Sie uns zum Beispiel einige davon finden, die installiert sind:

rpm --query --all | grep firmware

und fragen Sie dann seine Informationen ab:

rpm --query --info iwl105-firmware-18.168.6.1-62.2.el7_5.noarch

und wir bekommen:

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 gut.

Ich habe nicht einmal diese Art von Hardware, da dies eine VM ist.

Also, Frage:

Was machen die Firmware-Pakete eigentlich?

Handelt es sich um "One-Shot" -Installationen, bei denen eine undurchsichtige ausführbare Datei ausgeführt wird (sofort? Beim nächsten Start?), Die prüft, ob die Hardware vorhanden ist, Binärcode in den Flash der Hardware pumpt, wenn die Hardware vorhanden ist (möglicherweise auf Anfrage des Benutzers; unter Windows unter Zumindest ist das Flashen der Hardware immer mit DOS-Fenstern behaftet, die angezeigt werden, EULAs, durch die geklickt werden muss, und Fortschrittsbalken, die ausgehalten werden müssen, und markiert das Paket dann als "installiert".

Ändern sie die initramfs so, dass ein binärer Blob von einem Kernelmodul geladen wird oder beim nächsten Start etwas passiert?



In Was ist "Firmware" in der Linux-Terminologie? Stephen Kitt schreibt: Firmware-Dateien werden also nicht vom Kernel verwendet, sondern vom Kernel auf andere Hardwareteile geladen. Dies macht es auch vage akzeptabel, Software ohne Quellcode in FLOSS-Systemen zu haben: Es wird argumentiert, dass sie nicht auf der Haupt-CPU, sondern auf einem anderen Gerät ausgeführt wird. Kichern, kichern.
David Tonhofer

Antworten:


4

Bei der ladbaren Firmware handelt es sich normalerweise nicht um "One-Shot" -Installationen, die zum Flashen auf dem Gerät geschrieben wurden. Die Firmware wird in den flüchtigen Speicher des Geräts geladen und muss jedes Mal ausgeführt werden, wenn der Host-Computer eingeschaltet wird. Das Gerät funktioniert nicht, bevor die Firmware geladen wurde. Die Firmware kann in den Arbeitsspeicher des Geräts geschrieben werden. In diesem Fall enthält sie Code und Daten für den Prozessor des Geräts. Es kann sich jedoch auch um einen Bitstrom handeln, der die Logik eines feldprogrammierbaren Logikarrays (FPGA) oder eines anderen definiert Kombination von beiden.

Andererseits ist die Firmware im Flash-Speicher normalerweise auf den Geräten vorprogrammiert und muss nur neu geschrieben werden, wenn die Firmware vom Hersteller aktualisiert wurde. Dies erfolgt normalerweise über andere Mechanismen, z. B. eine separate ausführbare Datei, die vom Benutzer ausgeführt wird.

Es gibt einige Gründe, warum Hersteller RAM anstelle von Flash-Speicher verwenden möchten. Erstens ist es möglich, eine einzelne Version der Hardware zu entwerfen und gleichzeitig mehrere Versionen des Produkts zu liefern (z. B. für verschiedene Marktbereiche). Wenn erwartet wird, dass das Produkt häufig vor Ort aktualisiert wird, ist es möglicherweise einfacher, die Firmware-Aktualisierungen auf diese Weise durchzuführen, als ein Programm zum Aktualisieren des Flash-Speichers auf dem Gerät zu erstellen. Dieses Programm sollte eine schöne Benutzeroberfläche haben und so benutzerfreundlich wie möglich gestaltet sein, da es normalerweise vom Endbenutzer des Produkts ausgeführt werden soll. Einige Geräte mit Flash-Speicher führen häufig ohnehin Code aus dem RAM aus und kopieren den Inhalt des Flashs nur in den RAM, wenn das Gerät gestartet wird.


Wenn die Firmware nicht von Flash in den RAM geladen wird, wie wird die Firmware nach dem Einschalten des Geräts in den RAM geladen?
Codebling

Wenn das Gerät die Firmware nicht autonom laden kann, kann der Host sie über den Bus, mit dem das Gerät mit dem Host verbunden ist, im RAM des Geräts speichern. Typische Busse sind PCI und USB. Es liegt in der Verantwortung des Gerätetreibers, dies zu tun. Das Gerät kann nach dem Einschalten nicht vollständig "tot" sein. Es muss eine Logik enthalten, um das Laden der Firmware zu erleichtern.
Johan Myréen

Ich habe irgendwie vergessen, dass wir hier über Peripheriegeräte gesprochen haben, daher wird es immer an einen Bus angeschlossen. Macht Sinn!
Codebling

5

Wie Anthony Geoghegan erwähnt , was ist "Firmware" in der Linux-Terminologie? und warum benötigen einige Treiber noch Firmware? bieten nützliche Hintergrundinformationen.

Firmware-Pakete sind Pakete, die Firmware-Dateien enthalten, dh Dateien, die Code enthalten, der auf Geräten ausgeführt oder mit Ihrem System verbunden werden soll. Zu den gängigen Beispielen gehören wie in Ihrem Fall WLAN-Chipsätze. Sie sind keine One-Shot-Installer und es ist ihnen egal, ob die Hardware verfügbar ist. Die von ihnen zur Verfügung gestellten Dateien werden von den entsprechenden Kerneltreibern verwendet, sofern die entsprechende Hardware vorhanden ist: Die Treiber laden die Firmware in den an die Zielhardware angeschlossenen Speicher, in dem die Firmware ausgeführt wird.

Diese Firmware-Pakete beziehen sich nicht auf die Firmware-Installationsprogramme, über die Sie nachdenken und die Firmware-Updates in den Flash-Speicher laden (was nur durchgeführt werden muss, wenn ein Update erforderlich ist). Dieser Prozess ist in der Tat langwierig, oft komplex und scheinbar mit Gefahren behaftet (zumindest, wenn Sie Ihre Eindrücke auf die Warnungen des Herstellers stützen). In Linux-Distributionen enthaltene Firmware-Pakete enthalten Firmware, die bei jedem Systemstart benötigt wird, da sie in den flüchtigen Speicher geladen wird.


2

Hinzu kommen die bereits hervorragenden Antworten.

Firmware-Dateien, auch proprietäre Binär-Blobs genannt, werden mindestens zum Zeitpunkt des Kaltstarts des Geräts in Ihre Firmware geladen.

Das Gerät wurde so konzipiert, dass Firmware im RAM gespeichert wird, anstatt über ein ROM + RAM zu verfügen, um die Produktionskosten zu senken. Als Beispiel haben Sie einige Broadcom-WLAN-Chipsätze und interne Switch-Chipsätze, die auf diese Weise funktionieren.

Adressierung des anderen Punkts Ihrer Frage zur Verwendung von Firmware-Dateien in einer VM.

Da Sie mit einer VM arbeiten, benötigen Sie keine Firmware-Dateien. Sie werden nirgendwo geladen; viel weniger Ethernet- oder WLAN-Firmware-Dateien.

Da Firmware in einer VM-Umgebung nicht benötigt wird, ist es eine große Besonderheit, in Debian die Abhängigkeiten von einem generischen Firmware-Dateipaket im Linux-Kernel zu haben.


"Es ist eine große Eigenart, in Debian die Abhängigkeiten von einem generischen Firmware-Dateipaket im Linux-Kernel zu haben" - zumindest die vom Kernel-Paket empfohlene Firmware ist wirklich DFSG-frei ;-). (Aber Sie haben Recht, beide Empfehlungen - firmware-linux-freeund irqbalance- sind heutzutage in den meisten Bereitstellungen nutzlos.)
Stephen Kitt

Ich führe immer ein Playbook aus, um diese Cruft nach einer Runde Kernel-Upgrades zu deinstallieren
Rui F Ribeiro

1
Sie können auch konfigurieren, aptdamit Empfehlungen nicht standardmäßig installiert werden ...
Stephen Kitt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.