
Wie wird die Binärdatei der Firmware von einem Gerät identifiziert, als wäre die Binärdatei für dieses Gerät bestimmt? Welche Rolle spielt der Kernel dabei?
Antwort1
Der Name der Firmware-Datei wird nicht vom Hardwaregerät angegeben. Dies übernimmt der Gerätetreiber.
Im Allgemeinen erkennt der Kernel die Hardware möglicherweise auf der Grundlage standardisierter Kennungen (wie Anbieter-/Produkt-IDs auf PCI/PCIe- oder USB-Bussen oder DMI-Informationen), oder er weiß möglicherweise bereits, dass das Gerät dort vorhanden sein soll (Plattformgeräte, basierend auf Gerätebauminformationen auf einigen Architekturen wie ARM), oder der Administrator oder Systemstartskripte weisen den Kernel möglicherweise ausdrücklich an, einen bestimmten Treiber zu laden (wird immer noch bei einigen älteren x86-Geräten verwendet, die auf der alten ISA-Architektur basieren und nicht vollständig automatisch erkannt werden).
Der Treiber versucht dann, die Existenz des Geräts zu bestätigen und den Status des Geräts zu ermitteln. Dabei verwendet er eine Methode, die entweder vom Hardwarehersteller dokumentiert oder durch Reverse Engineering ermittelt wurde. Wenn das Gerät Firmware benötigt, enthält der Treiber die erforderlichen Kernel-Aufrufe, um die entsprechende Firmware-Datei zu laden. Sobald die Firmware-Daten in den Speicher geladen sind, sendet der Treiber sie an das Hardwaregerät und verwendet dabei die für die jeweilige Hardware geeignete Methode.
Das Hardwaregerät selbst kann die Richtigkeit der Firmwaredaten überprüfen, muss dies aber nicht. Die einfachsten Hardwaredesigns vertrauen möglicherweise einfach darauf, dass die vom Treiber bereitgestellte Firmware korrekt ist, und bleiben möglicherweise hängen, wenn dies nicht der Fall ist. Möglicherweise ist eine gerätespezifische Reset-Sequenz oder sogar ein Ausschalten/Ausstecken des Geräts erforderlich, um das Gerät wieder nutzbar zu machen. Am anderen Extrem kann die Firmware kryptografisch signiert oder sogar verschlüsselt sein, wobei die entsprechenden Schlüssel und Funktionen zum Überprüfen/Entschlüsseln in die Gerätehardware eingebettet sind.
Das Hinzufügen einer Firmware-Verifizierungs-/Entschlüsselungslogik in der Hardware selbst erhöht den Preis und die Komplexität des Hardwaregeräts. Daher tun die Hersteller dies im Allgemeinen nur, wenn die Verwendung einer nicht standardmäßigen Firmware schwerwiegendere Folgen haben könnte als nur, dass das Gerät selbst nicht funktioniert: Beispielsweise kann die Firmware eines WiFi-Geräts die verwendeten Frequenzen und Leistungspegel regeln, sodass eine falsche Firmware dazu führen kann, dass das Gerät auf verbotenen Frequenzen sendet und möglicherweise Störungen der Radare der Flugsicherung (zivil oder militärisch) verursacht. Dies kann sehr schwerwiegende Folgen haben. Daher haben die Hardwarehersteller einen Anreiz sicherzustellen, dass nur Firmware-Versionen verwendet werden können, die als den entsprechenden Vorschriften entsprechend zertifiziert wurden.