
Fichiers de données officiels du microcode Intel pour mettre à jour le firmware des processeurs afin d'atténuer les vulnérabilités de sécurité et de résoudre les problèmes fonctionnels sur les systèmes Linux.
Le package de mise à jour du microcode (MCU) des processeurs Intel fournit un mécanisme pour publier des mises à jour concernant les avis de sécurité et les problèmes fonctionnels, y compris les errata. En outre, les MCU sont responsables du démarrage de l'enclave SGX (sur les processeurs prenant en charge la fonctionnalité SGX), de l'implémentation de comportements complexes (tels que les assists), et plus encore. La méthode préférée pour appliquer les MCU consiste à utiliser le BIOS du système. Pour un sous-ensemble de processeurs Intel, le MCU peut également être mis à jour à l'exécution via le système d'exploitation. Le package de microcode Intel partagé ici contient des mises à jour pour ces processeurs qui prennent en charge le chargement des MCU par le système d'exploitation.
La mise à jour de votre microcode peut aider à atténuer certaines vulnérabilités de sécurité potentielles dans les CPU ainsi qu'à résoudre certains problèmes fonctionnels qui pourraient, par exemple, entraîner un comportement imprévisible du système tel que des blocages, des plantages, des redémarrages inattendus, des erreurs de données, etc. Pour en savoir plus sur l'application des MCU à un processeur Intel, consultez Microcode Update Guidance.
Ce package est fourni aux distributeurs Linux pour inclusion dans leurs versions de système d'exploitation. Intel recommande d'obtenir les MCU les plus récents via le mécanisme de mise à jour du fournisseur du système d'exploitation. Un bon point de départ est OS and Software Vendor. Les utilisateurs experts peuvent mettre à jour leur microcode directement en dehors du mécanisme du fournisseur du système d'exploitation. Cependant, cette méthode est complexe et pourrait entraîner des erreurs si elle est effectuée de manière incorrecte. Ces erreurs pourraient inclure, sans s'y limiter, le gel du système, l'impossibilité de démarrer, des impacts sur les performances, le chargement de mises à jour différentes par les processeurs logiques, et certaines mises à jour qui ne prennent pas effet. Par conséquent, cette méthode ne devrait être tentée que par des utilisateurs experts.
Les MCU sont mieux chargés depuis le BIOS. Certains MCU ne doivent être appliqués que depuis le BIOS. Ces MCU ne sont jamais inclus dans ce package car ils ne sont pas appropriés pour la distribution via le système d'exploitation. Un OEM peut recevoir des packages de mise à jour du microcode qui sont un sur-ensemble de ce qui est contenu dans ce package pour inclusion dans un BIOS.
Les fournisseurs de systèmes d'exploitation peuvent choisir de fournir un MCU que le noyau peut consommer pour un chargement précoce. Par exemple, Linux peut appliquer un MCU très tôt dans la séquence de démarrage du noyau. Dans les situations où une mise à jour du BIOS n'est pas disponible, le chargement précoce est la meilleure alternative suivante pour mettre à jour le microcode du processeur. Les états du microcode sont réinitialisés lors d'une réinitialisation de l'alimentation, il est donc nécessaire que le MCU soit chargé à chaque démarrage.
L'utilisation de la méthode initrd pour charger un MCU est recommandée car cette méthode chargera le MCU au plus tôt pour une couverture maximale. Les systèmes qui ne peuvent pas tolérer de temps d'arrêt peuvent utiliser la méthode de chargement tardif pour mettre à jour un système en cours d'exécution sans redémarrage.
La signature du processeur est un numéro identifiant le modèle et la version d'un processeur Intel. Elle peut être obtenue à l'aide de l'instruction CPUID, via la commande lscpu, ou à partir du contenu de /proc/cpuinfo. Elle est généralement présentée sous la forme de 3 champs : Famille, Modèle et Stepping.
Par exemple, si un processeur renvoie une valeur de "0x000906eb" à partir de l'instruction CPUID :
| Réservé | Famille étendue | Modèle étendu | Réservé | Type de processeur | Code de famille | Numéro de modèle | ID de stepping |
|---|---|---|---|---|---|---|---|
| 31:28 | 27:20 | 19:16 | 15:14 | 13:12 | 11:8 | 7:4 | 3:0 |
| xxxx | 00000000b | 1001b | xx | 00b | 0110b | 1110b | 1011b |
Le nom de fichier Linux correspondant sera "06-9e-0b", où :
Un processeur peut être implémenté pour plusieurs types de plateformes. Les processeurs Intel ont un champ d'identifiant de plateforme de 3 bits dans MSR(17H) qui spécifie le type de plateforme pour jusqu'à 8 types. Un fichier MCU pour un modèle de processeur spécifié peut prendre en charge plusieurs plateformes. Le(s) identifiant(s) de plateforme pris en charge par un MCU est un masque de 8 bits où chaque bit défini indique un type de plateforme que le MCU prend en charge. L'identifiant de plateforme d'un processeur peut être lu sous Linux à l'aide de rdmsr depuis msr-tools.
Le répertoire intel-ucode contient des fichiers MCU binaires nommés au format famille-modèle-stepping. Ce format de fichier est pris en charge par la plupart des distributions Linux modernes. Il est généralement situé dans le répertoire /lib/firmware et peut être mis à jour via l'interface de rechargement du microcode en suivant les instructions de chargement tardif ci-dessous.
Pour mettre à jour l'initrd de chargement précoce, consultez votre distribution Linux pour savoir comment empaqueter les fichiers MCU pour le chargement précoce. Certaines distributions utilisent update-initramfs ou dracut. Utilisez la méthode recommandée par le fournisseur du système d'exploitation pour vous assurer que le fichier MCU est mis à jour pour le chargement précoce avant de tenter la procédure de chargement tardif ci-dessous.
Pour mettre à jour le package intel-ucode sur le système :
/sys/devices/system/cpu/microcode/reload$ git clone https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git ou$ wget https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/main.zipintel-ucode vers /lib/firmware, en écrasant les fichiers dans /lib/firmware/intel-ucode/$ echo 1 > /sys/devices/system/cpu/microcode/reload$ sudo update-initramfs -u$ sudo reboot$ dmesg | grep microcode ou$ cat /proc/cpuinfo | grep microcode | sort | uniqSi vous utilisez la méthode du fournisseur du système d'exploitation pour appliquer un MCU, les étapes ci-dessus peuvent avoir été effectuées automatiquement pendant le processus de mise à jour.