Qu'est-ce que le «firmware» dans la terminologie Linux?

15

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?

wopwop
la source
1
De manière générale: le logiciel est un programme. Le matériel est un appareil physique. Le micrologiciel est un programme intégré au matériel; généralement dans le but de configurer le fonctionnement du matériel (il est donc en quelque sorte entre le logiciel et le matériel, tout comme «ferme» est entre «doux» et «dur» sur une échelle sans contours). Généralement, le firmware est indépendant du système d'exploitation (par exemple, la configuration RAID sur un contrôleur RAID SCSI).
DopeGhoti
Juste pour ajouter au commentaire de DopeGhoti, de nombreux appareils permettent désormais le chargement de firmware en direct, ce qui les rend plus flexibles / évolutifs que les implémentations fixes.
Julie Pelletier
1
@DopeGhoti ne se contente pas de configurer le matériel, il s'exécute sur le matériel. Certains micrologiciels sont en effet très complexes et exécutent essentiellement un mini-OS.
Stephen Kitt
Je suis d'accord, bien que j'affirme que le «logiciel intégré au matériel» implique que le matériel est celui sur lequel ledit logiciel fonctionne. (:
DopeGhoti

Réponses:

22

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.

Stephen Kitt
la source
1
Vous êtes très bienveillant avec votre utilisation de "vaguement acceptable".
Rui F Ribeiro
2
Tout le monde ne peut pas être RMS.
DopeGhoti
Ce n'est pas seulement dans le contexte du noyau Linux, c'est une définition assez générale de «firmware» dans le contexte d'un système multiprocesseur.
Gilles 'SO- arrête d'être méchant'
Alors / etc / lib / firmwares contient-il réellement des firmwares et non des pilotes chargés par le noyau au démarrage? Mais le contrôleur sans fil et les cartes graphiques ont leur propre ROM avec un firmware gravé par le fabricant.
defalt
3
@defalt yes, /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.
Stephen Kitt