Ich bin durch die Verwendung von Firmware im Kontext von Linux verwirrt .
Unter Firmware und Treibern verstehe ich, dass Firmware der Code ist, der auf einem Gerät wie einem Bluetooth-IC, einem Tastaturcontroller, einer Grafikkarte oder einem Mehrzweck-Mikrocontroller ausgeführt wird. Die Firmware stellt eine Schnittstelle zur Verfügung, über die das Betriebssystem seine Dienste nutzen kann.
Der Treiber ist im Vergleich dazu die Software, die der Kernel verwendet, um mit zuvor erwähnten Schnittstellen zu kommunizieren, die von der Firmware bereitgestellt werden. So ein Videotreiber, ein Tastaturtreiber, ein Bluetooth-Funktreiber.
Warum lese ich immer wieder, dass Linux-Firmware-Dateien installiert werden müssen (z . B. hier )? Werden diese in die Hardware hochgeladen? Werden diese Dateien vom Kernel verwendet? Was bedeutet Firmware in diesem Zusammenhang?
Antworten:
Im Linux-Kernel-Kontext ist Firmware eine Software, die auf einem anderen Prozessor im System ausgeführt wird, z. B. einem drahtlosen Controller, einer GPU oder einem SCSI-Controller. Diese Software wurde in einem ROM (verschiedener Typen) gespeichert, das mit dem entsprechenden Controller verbunden war Um die Kosten zu senken und Upgrades zu vereinfachen, verlassen sich die Controller heute in der Regel darauf, dass das Host-Betriebssystem ihre Firmware für sie lädt.
Damit Firmware-Dateien vom Kernel nicht verwendet werden, werden sie vom Kernel auf andere Hardwareteile geladen. Dies ist auch der Grund, warum es vage akzeptabel ist, 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.
quelle
/lib/firmware
(singular, no/etc
) enthält Firmware, die von anderen Geräten verwendet wird. Viele Geräte (einschließlich drahtloser Controller und GPUs) benötigen vom Host-System bereitgestellte Firmware, obwohl sie möglicherweise über ein eigenes ROM (oder Flash) mit Firmware verfügen.