Auteur Sujet: Serveurs Skylake : il est indispensable d'installer le package Intel-microcode  (Lu 5293 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
Serveurs Skylake : il est indispensable d'installer le package Intel-microcode ou de désactiver l'Hyper-Threading

Un bug affecte en effet les deux dernières génération de CPU Intel : « Ce défaut peut, lorsqu’il est déclenché, provoquer un comportement imprévisible du système: il pourrait causer des erreurs parasites, engendrer un comportement imprévisibles des applications et de l’OS,  conduire à une corruption de données et à la perte de données »

C'est détaillé en Anglais dans le mail du développeur Debian Henrique de Moraes Holschuh, posté hier.
Ce bug affecte tous les systèmes d’exploitation, y compris Windows.

Pour les PC avec interface graphique, il faut activer l’utilisation du microcode Intel dans les pilotes additionnels :


A priori c'est activé par défaut sur les derrières versions (j'ai réalisé une clan install d'Ubuntu 17.04 et c'était activé).
Il faut par contre l'activer manuellement sur la grande majorité de versions Linux.




Sur un serveur Ubuntu server comment faire ?

C'est simple :
sudo apt install intel-microcode


Il faut ensuite redémarrer le serveur.

intel-microcode est un paquet qui installe iucode-tool




Sur un serveur Debian, comment faire ?

La documentation est sur https://wiki.debian.org/Microcode

Il faut activer les dépôts "contrib" et "non-free"  dans /etc/apt/sources.list

Par exemple :
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free
deb  http://deb.debian.org/debian stretch main contrib non-free
deb-src  http://deb.debian.org/debian stretch main contrib non-free

Puis :
sudo apt update
sudo apt install intel-microcode


Il faut ensuite redémarrer le serveur.




Comment vérifier la version microcode de votre processeur ?

  • dmesg | grep "microcode"
  • journalctl -b -k | grep "microcode"
  • zgrep "microcode" /var/log/kern.log*

A noter qu'une mise à jour du BIOS devrait être réalisée les prochaines semaines par les fabricants de carte-mère / serveur, pour intégrer le microcode à jour.

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
Serveurs Skylake : il est imposant d'installer le package Intel-microcode
« Réponse #1 le: 26 juin 2017 à 14:51:40 »
Exemples :

$ dmesg | grep "microcode"
[    0.000000] microcode: microcode updated early to revision 0x29, date = 2013-06-12
[    0.813556] microcode: sig=0x206a7, pf=0x2, revision=0x29
[    0.814228] microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba


$ dmesg | grep "microcode"
[    0.000000] microcode: microcode updated early to revision 0x60f, date = 2010-09-29
[    3.784422] microcode: sig=0x10676, pf=0x40, revision=0x60f
[    3.813959] microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba


# dmesg | grep "microcode"
[    1.901521] microcode: CPU0 sig=0x206d7, pf=0x8, revision=0x710
[    1.906896] microcode: CPU1 sig=0x206d7, pf=0x8, revision=0x710
[    1.912120] microcode: CPU2 sig=0x206d7, pf=0x8, revision=0x710
[    1.917271] microcode: CPU3 sig=0x206d7, pf=0x8, revision=0x710
[    1.922281] microcode: CPU4 sig=0x206d7, pf=0x8, revision=0x710
[    1.927245] microcode: CPU5 sig=0x206d7, pf=0x8, revision=0x710
[    1.932050] microcode: CPU6 sig=0x206d7, pf=0x8, revision=0x710
[    1.936716] microcode: CPU7 sig=0x206d7, pf=0x8, revision=0x710
[    1.941175] microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba

thenico

  • Expert.
  • Abonné OVH
  • *
  • Messages: 1 009
  • FTTH >500 Mb/s (13)
Serveurs Skylake : il est imposant d'installer le package Intel-microcode
« Réponse #2 le: 26 juin 2017 à 23:59:15 »
On dirait que l'hibernation réinitialise le microcode:

[37406.098071] microcode: sig=0x306c3, pf=0x10, revision=0x1c
[37406.103835] microcode: sig=0x306c3, pf=0x10, revision=0x22
[49501.902168] microcode: sig=0x306c3, pf=0x10, revision=0x1c
[49501.907901] microcode: sig=0x306c3, pf=0x10, revision=0x22
[55037.749048] microcode: sig=0x306c3, pf=0x10, revision=0x1c
[55037.754766] microcode: sig=0x306c3, pf=0x10, revision=0x22
[56685.902561] microcode: sig=0x306c3, pf=0x10, revision=0x1c
[56685.908282] microcode: sig=0x306c3, pf=0x10, revision=0x22

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Serveurs Skylake : il est imposant d'installer le package Intel-microcode
« Réponse #3 le: 27 juin 2017 à 01:42:42 »
Il y a d'autres bugs, par exemple https://github.com/torvalds/linux/commit/5bae156241e05d25171b18ee43e49f103c3f8097, https://github.com/torvalds/linux/commit/8c9b9d87b855226a823b41a77a05f42324497603.
Ce bug semble assez rare, et est contourné.
Mais il semble que côté kernel ils veulent enlever le contournement (https://lkml.org/lkml/2017/5/31/602), et le remplacer par une désactivation pure et simple de la fonctionnalité (et donc régression dans la précision des timers) si le microcode n'est pas à jour (https://lkml.org/lkml/2017/6/4/199).

A noter que les microcodes téléchargeables sur le site d'Intel (dernière version 20170511) ne contiennent bizarrement pas ceux des Kaby Lake (affectés par les deux bugs). Donc à moins d'avoir un BIOS qui comporte un microcode récent (ce qui est loin d'être automatique), pour l'instant il n'y a rien.

Sur Ubuntu, en dehors de la 17.10, le package intel-microcode n'est pas à jour, donc ne corrige rien sur Skylake (mais je suppose que ça va changer avec la "médiatisation" de ce bug).

TroniQ89

  • @TroniQ89
  • Abonné Free adsl
  • *
  • Messages: 743
Serveurs Skylake : il est imposant d'installer le package Intel-microcode
« Réponse #4 le: 27 juin 2017 à 03:14:05 »
Je l'avais évoqué sur IRC, mais avec certains CPUs basés sur les dernières générations de l'architecture Atom (notamment tous les nouveaux Celerons et certains nouveaux Pentiums), mais il faut ajouter l'option intel_idle.max_cstate et la définir à 1 dans la cmdline de démarrage du noyau Linux. Cela permet de "fixer" un bug faisant freeze le PC, lorsqu'il tente d'utiliser une fréquence Turbo Boost non supportée par le CPU.

Pour cela, ouvrez le fichier de configuration GRUB en tant que root (fonctionne sur toutes les distributions où le microcode Intel est installable):
sudo nano /etc/default/grub ou sudo vi /etc/default/grub ou passez par l'interface graphique gksudo gedit /etc/default/grub (si vous utilisez gedit)
Trouvez la ligne débutant par CMDLINE_LINUX_DEFAULT, et ajoutez intel_idle.max_cstate=1 avant les dernières guillemets, à la fin de la ligne.
Enregistrez puis fermez.

Enfin, il faut rafraîchir la configuration de GRUB. Pour cela, tapez sudo update-grub.
La configuration sera prise en compte au prochain redémarrage.


Tout ça pour dire que Linux ça déconne pas mal sur les CPUs Intel grand publics (après, peut-on considérer des CPUs tels que les i7 Skylake comme "grand public" ?)... 

butler_fr

  • Client Bbox adsl
  • Modérateur
  • *
  • Messages: 3 605
  • FTTH orange
Serveurs Skylake : il est imposant d'installer le package Intel-microcode
« Réponse #5 le: 27 juin 2017 à 08:04:54 »
Linux a généralement du mal sur les nouveaux équipement
aussi bien cpu / gpu / imprimante...

Il faut quelques versions pour que tout soit a peu près stable

jack

  • Professionnel des télécoms
  • *
  • Messages: 1 674
  • La Madeleine (59)
Serveurs Skylake : il est imposant d'installer le package Intel-microcode
« Réponse #6 le: 27 juin 2017 à 12:03:09 »
C'est simple :
sudo apt install microcode.ctl[/size]

Il faut ensuite redémarrer le serveur.

microcode.ctl est un paquet qui installe intel-microcode et iucode-tool

Il est conseillé de l'installer, plutôt que d'installer directement  intel-microcode et iucode-tool : microcode.ctl is a transitional package to help migrate systems to the new version of intel-microcode and to iucode-tool, which superseded microcode.ctl.


Attention, c'est l'inverse : la fonctionnalité était jadis hébergé dans le paquet microcode.ctl, qui n'est désormais plus qu'un paquet "bidon", ayant pour dépendance intel-microcode

microcode.ctl n'est donc présent que pour préserver l'historique

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
Serveurs Skylake : il est imposant d'installer le package Intel-microcode
« Réponse #7 le: 27 juin 2017 à 17:36:55 »
Merci jack, c'est corrigé.

Sur Ubuntu, en dehors de la 17.10, le package intel-microcode n'est pas à jour, donc ne corrige rien sur Skylake (mais je suppose que ça va changer avec la "médiatisation" de ce bug).

Voici le bug : https://bugs.launchpad.net/ubuntu/+source/intel-microcode/+bug/1700373
"Please update microcode to version 20170511 on all supported platforms"

Il y a de grandes discussions sur la mailling liste security pour savoir si, outre ce pb, il faut mettre à jour les microcode systématiquement depuis Intel après la sorte d'une version stable, car il n'y a aucun moyen de distinguer les changements de chaque microcode et que Intel ne suivent pas les process de sécurité Linux CVE pour indiqué les vulnérabilités.

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
Serveurs Skylake : il est imposant d'installer le package Intel-microcode
« Réponse #8 le: 11 août 2017 à 12:16:21 »
La mise à jour du microcode  Intel a été mis en place coté Debian.
Coté Ubuntu 16.04, le paquet est crée et il est en période de vieillissement pour s'assurer l'absence de régression.

Pour connaître la version du Microcode : dpkg-query -W intel-microcode

Microcode qui date du 06/11/2015 - dans le BIOS et donc pas mis à jour par l'OS :

$ dpkg-query -W intel-microcode
intel-microcode 3.20151106.1

Microcode qui date du 11/05/2017 après mis à jour par Ubuntu 17.04 :
$ dpkg-query -W intel-microcode
intel-microcode 3.20170511.1~ubuntu17.04.0

Le paquet en cours de vieillissement fournira un microcode qui date du 07/07/2017 :
$ dpkg-query -W intel-microcode
intel-microcode 3.20170707.1~ubuntu16.04.0

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
Serveurs Skylake : il est imposant d'installer le package Intel-microcode
« Réponse #9 le: 24 août 2017 à 12:22:01 »
La mise à jour pour Ubuntu es enfin poussée vers tous (Ubuntu 16.04 LTS et Ubuntu 17.04) :



Pour tous ceux qui ont installé le paquet intel-microcode

La date du microcode Intel dans le paquet poussé est le 7 juillet 2017 :

$ dpkg-query -W intel-microcode
intel-microcode 3.20170707.1~ubuntu16.04.0

La mise à jour du paquet n'apporte un changement que sur les CPU récents.

journalctl -k | grep microcode permet de voir la version réellement poussée sur votre CPU.

Avec un Intel Xeon E3-1240 v5 @ 3.50GHz, processeur Skylake, lancé au 4ème trimestre 2015 et impacté par le bug :

Avant :

$ journalctl -k | grep microcode
août 21 16:25:56 kernel: microcode: sig=0x506e3, pf=0x2, revision=0xa0
août 21 16:25:56 kernel: microcode: Microcode Update Driver: v2.2.
Aprés :
$ journalctl -k | grep microcode
août 24 10:37:36 kernel: microcode: microcode updated early to revision 0xba, date = 2017-04-09
août 24 10:37:36 kernel: microcode: sig=0x506e3, pf=0x2, revision=0xba
août 24 10:37:36 kernel: microcode: Microcode Update Driver: v2.2.

Avec un Intel Core i5-5300U @ 2.30GHz, CPU mobile lancé au 1er trimestre 2015 :
$ journalctl -k | grep microcode
août 24 18:14:28 kernel: microcode: microcode updated early to revision 0x25, date = 2017-01-27
août 24 18:14:28 kernel: microcode: sig=0x306d4, pf=0x40, revision=0x25
août 24 18:14:28 kernel: microcode: Microcode Update Driver: v2.2.

Avec un Intel Celeron N2840 @ 2.16GHz, CPU pc portable base Atom, lancé au 3ème trimestre 2014 : Aucune mise à jour n'est proposée
$ journalctl -k | grep microcode
sept. 16 17:21:21 brigitte-portable kernel: microcode: sig=0x30678, pf=0x8, revision=0x831
sept. 16 17:21:21 brigitte-portable kernel: microcode: Microcode Update Driver: v2.2.

Avec un Intel Core i3-4150 @ 3.50GHz, CPU pc fixe lancé au 2ème trimestre 2014 :
$ journalctl -k | grep microcode
août 24 21:59:24 kernel: microcode: microcode updated early to revision 0x22, date = 2017-01-27
août 24 21:59:24 kernel: microcode: sig=0x306c3, pf=0x2, revision=0x22
août 24 21:59:24 kernel: microcode: Microcode Update Driver: v2.2.

Avec un  Celeron N2820 @ 2.13GHz, CPU pour NUK Intel, a base d'Atom lancé en au 4ème trimestre 2013, il n'y a pas de mise à jour :
$ journalctl -k | grep microcode
sept. 25 17:05:56 kernel: microcode: sig=0x30673, pf=0x8, revision=0x325
sept. 25 17:05:56 kernel: microcode: Microcode Update Driver: v2.2.

Avec un Intel Xeon E3-1230 V2 @ 3.30GHz, CPU serveur entrée de gamme lancé au 2ème trimestre 2012, il n'y a aucune nouvelle version du microcode :
# journalctl -k | grep microcode
août 25 19:00:38 kernel: microcode: microcode updated early to revision 0x1c, date = 2015-02-26
août 25 19:00:38 kernel: microcode: sig=0x306a9, pf=0x2, revision=0x1c
août 25 19:00:38 kernel: microcode: Microcode Update Driver: v2.2.

Avec un Intel Core i3-2120 @ 3.30GHz ou un Intel Core i5-2400 @ 3.10GHz, CPUs lancés au 1er trimestre 2011, il n'y a aucune nouvelle version du microcode : (les deux CPU donnent exactement les mêmes retours)
$ journalctl -k | grep microcode
août 24 10:31:20 kernel: microcode: microcode updated early to revision 0x29, date = 2013-06-12
août 24 10:31:20 kernel: microcode: sig=0x206a7, pf=0x2, revision=0x29
août 24 10:31:20 kernel: microcode: Microcode Update Driver: v2.2.

Avec un Intel Core i5 M 560 @ 2.67GHz, CPU pc portable lancé au 3ème trimestre 2010, la mise à jour du microcode date de juin 2013  :
$ journalctl -k | grep microcode
sept. 19 15:14:41 default kernel: microcode: microcode updated early to revision 0x4, date = 2013-06-28
sept. 19 15:14:41 default kernel: microcode: sig=0x20655, pf=0x10, revision=0x4
sept. 19 15:14:41 default kernel: microcode: Microcode Update Driver: v2.2.

Avec un Atom D525 @1.80GHz, CPU lancé au 2ème trimestre 2010, il n'y a pas de mise à jour du microcode. Je suppose que ce CPU n'est pas compatible avec une mise à jour du microcode par le système d'exploitation.
$ journalctl -k | grep microcode
sept. 08 14:37:43 kernel: microcode: sig=0x106ca, pf=0x8, revision=0x107
sept. 08 14:37:43 kernel: microcode: Microcode Update Driver: v2.2.

A noter que avec un Intel Xeon E5620 @ 2.40GHz, CPU lancé au 1er trimestre 2010. Pourtant le BIOS n'a pas été mis à jour et comporte donc un microcode de 2010. Je suppose que ce CPU n'est pas compatible avec une mise à jour du microcode par le système d'exploitation.
$ journalctl -k | grep microcode
août 28 22:25:35 kernel: microcode: sig=0x206c2, pf=0x1, revision=0x15
août 28 22:25:35 kernel: microcode: Microcode Update Driver: v2.2.

Sur un Intel Core2 Duo E7200 @ 2.53GHz, CPU pour PC fixe 2 cœurs lancé au second trimestre 2008, la mise a jour du microcode date de septembre 2010, mais surtout, Linux est capable de lire un microcode dans chaque cœur, comme si c'était deux CPU distincts.
$ journalctl -k | grep microcode
sept. 10 16:59:51 kernel: microcode: CPU0 microcode updated early to revision 0x60f, date = 2010-09-29
sept. 10 16:59:51 kernel: microcode: CPU1 microcode updated early to revision 0x60f, date = 2010-09-29
sept. 10 16:59:51 kernel: microcode: CPU0 sig=0x10676, pf=0x1, revision=0x60f
sept. 10 16:59:51 kernel: microcode: CPU1 sig=0x10676, pf=0x1, revision=0x60f
sept. 10 16:59:51 kernel: microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba

Sur un Intel Core2 Duo T8100 @ 2.10GHz, CPU pour PC portable 2 cœurs lancé au premier trimestre 2008, pas de mise à jour du microcode, mais surtout, Linux est capable de lire un microcode dans chaque cœur, comme si c'était deux CPU distincts. Ce n'est pas la même version du "Microcode Update Driver" alors que c'est Ubuntu 16.04 LTS comme les autres !
$ journalctl -k | grep microcode
août 31 21:22:48 kernel: microcode: CPU0 sig=0x10676, pf=0x80, revision=0x60f
août 31 21:22:48 kernel: microcode: CPU1 sig=0x10676, pf=0x80, revision=0x60f
août 31 21:22:48 kernel: microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba

Bi Intel(R) Xeon(R) CPU           E5410  @ 2.33GHz : avant installation maj microcode dans Lubuntu (bios 2.5.0)
$ journalctl -k | grep microcode
nov. 10 19:53:19 vivien-PowerEdge-2950 kernel: microcode: sig=0x10676, pf=0x40, revision=0x60c
nov. 10 19:53:19 vivien-PowerEdge-2950 kernel: microcode: Microcode Update Driver: v2.2.
Aprés installation : (toujours en bios 2.5.0)
$ journalctl -k | grep microcode
nov. 10 20:00:51 vivien-PowerEdge-2950 kernel: microcode: microcode updated early to revision 0x60f, date = 2010-09-29
nov. 10 20:00:51 vivien-PowerEdge-2950 kernel: microcode: sig=0x10676, pf=0x40, revision=0x60f
nov. 10 20:00:51 vivien-PowerEdge-2950 kernel: microcode: Microcode Update Driver: v2.2.


Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
$ journalctl -k | grep microcode
nov. 17 17:30:13 Asus kernel: microcode: microcode updated early to revision 0x62, date = 2017-04-27
nov. 17 17:30:13 Asus kernel: microcode: sig=0x806e9, pf=0x80, revision=0x62
nov. 17 17:30:13 Asus kernel: microcode: Microcode Update Driver: v2.2.

Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
dmesg |grep microcode
[    0.000000] microcode: microcode updated early to revision 0x2d, date = 2018-02-07
[    1.312594] microcode: sig=0x206a7, pf=0x2, revision=0x2d
[    1.312761] microcode: Microcode Update Driver: v2.2.