Je suis confus par l'utilisation du firmware dans le contexte de Linux.
Ma compréhension du micrologiciel et du pilote est que le micrologiciel est le code qui s'exécute sur le métal nu d'un appareil tel qu'un CI Bluetooth, un contrôleur de clavier ou une carte vidéo ou un microcontrôleur à usage unique. Le micrologiciel expose une interface permettant au système d'exploitation d'utiliser ses services.
Le pilote, en comparaison, est le logiciel que le noyau utilise pour communiquer avec les interfaces mentionnées précédemment fournies par le firmware. Ainsi, un pilote vidéo, un pilote de clavier, un pilote radio bluetooth.
Alors pourquoi est-ce que je continue à lire sur les fichiers de firmware Linux devant être installés (par exemple ici ). Ces éléments sont-ils téléchargés dans le matériel? Ces fichiers sont-ils utilisés par le noyau? Quelle est la signification du firmware dans ce contexte?
Réponses:
Dans le contexte du noyau Linux, le firmware est un logiciel qui s'exécute sur un autre processeur du système, par exemple un contrôleur sans fil, un GPU, un contrôleur SCSI ... Ce logiciel était auparavant stocké dans une ROM (de différents types) attachée au contrôleur concerné , mais pour réduire les coûts et simplifier les mises à niveau, les contrôleurs ont désormais tendance à s'appuyer sur le système d'exploitation hôte pour charger leur micrologiciel à leur place.
Les fichiers du micrologiciel ne sont donc pas utilisés par le noyau, ils sont chargés par le noyau sur d'autres éléments matériels. C'est aussi ce qui rend vaguement acceptable d'avoir un logiciel sans code source dans les systèmes FLOSS: l'argument veut qu'il ne fonctionne pas sur le processeur principal mais sur un autre appareil.
la source
/lib/firmware
(singulier, non/etc
) contient le firmware utilisé par d'autres appareils. De nombreux appareils (y compris les contrôleurs sans fil et les GPU) nécessitent un micrologiciel fourni par le système hôte, même s'ils peuvent avoir leur propre ROM (ou flash) contenant le micrologiciel.