Outils pour utilisateurs

Outils du site


linux:microcode

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

linux:microcode [04/09/2020 11:20] (Version actuelle)
daniel créée
Ligne 1: Ligne 1:
 +====== Microcode ======
 +
 +Suite à ce bug https://​youtrack.jetbrains.com/​issue/​JBR-2310 qui provoquait des crash violents du système en utilisant un IDE jetbrains, voici un moyen pour ajouter un microcode à l'​initrd.
 +
 +Sur https://​github.com/​intel/​Intel-Linux-Processor-Microcode-Data-Files/​issues/​39 le mainteneur indique que le microcode 150 est dispo sur https://​github.com/​platomav/​CPUMicrocodes/​blob/​master/​Intel/​cpu706E5_plat80_ver00000096_2020-06-16_PRD_4A457385.bin,​ mais ensuite on en fait quoi ?
 +
 +Je l'ai mis dans /boot, ma seule partition non chiffrée, et en lisant une doc intel je vois qu'​ajouter une ligne dans la conf grub devrait permettre de le charger avant l'​initrd,​ j'​essaie avec
 +
 +        linux   /​vmlinuz-5.7.0-0.bpo.2-amd64 root=/​dev/​mapper/​nvme-root ro  quiet
 +        initrd ​ /​cpu706E5_plat80_ver00000096_2020-06-16_PRD_4A457385.bin
 +        initrd ​ /​initrd.img-5.7.0-0.bpo.2-amd64
 +
 +mais ça marche pas… (le /cpu… désigne bien /​boot/​cpu…) probablement un pb du format du fichier.
 +
 +Voici une méthode pour l'​ajouter à l'init rd qui a fonctionné chez moi, mais **attention,​ ne pas copier / coller ça sans bien comprendre ce que ça fait ! Et assurez-vous d'​avoir un autre moyen de démarrer si cette procédure cassait le boot de votre machine**.
 +
 +<code bash>
 +# On regarde les microcodes installés
 +/​usr/​sbin/​iucode_tool -tb -lS /​lib/​firmware/​intel-ucode/​* /​boot/​cpu706E5_plat80_ver00000096_2020-06-16_PRD_4A457385.bin ​
 +/​usr/​sbin/​iucode_tool:​ system has processor(s) with signature 0x000706e5
 +[…]
 +selected microcodes:
 +  059/001: sig 0x000706e5, pf_mask 0x80, 2020-03-12, rev 0x0078, size 107520
 +
 +# ok, 78 c'est bien celui qu'on a déjà, cf `grep microcode /​proc/​cpuinfo`
 +# on regarde s'il détecte le 150 (0x96) dans le .bin qu'on a téléchargé
 +/​usr/​sbin/​iucode_tool -tb -lS /​lib/​firmware/​intel-ucode/​* /​boot/​cpu706E5_plat80_ver00000096_2020-06-16_PRD_4A457385.bin ​
 +/​usr/​sbin/​iucode_tool:​ system has processor(s) with signature 0x000706e5
 +[…]
 +selected microcodes:
 +  082/001: sig 0x000706e5, pf_mask 0x80, 2020-06-16, rev 0x0096, size 108544
 +
 +# il est bien sélectionné par défaut (0x0096 => 9×16+6 = 150), on l'​ajoute à la liste de /​lib/​firmware/​intel-ucode
 +iucode-tool -v --write-firmware /​boot/​cpu706E5_plat80_ver00000096_2020-06-16_PRD_4A457385.bin
 +iucode-tool:​ processed 1 valid microcode(s),​ 1 signature(s),​ 1 unique signature(s)
 +iucode-tool:​ selected 1 microcode(s),​ 1 signature(s)
 +iucode-tool:​ Writing microcode firmware file(s) into /​lib/​firmware/​intel-ucode
 +iucode-tool:​ 06-7e-05: cannot write to, or create file: File exists
 +iucode-tool:​ no files were written into /​lib/​firmware/​intel-ucode
 +
 +# le fichier 06-7e-05 existait déjà, on le renomme avec les conventions dpkg mais un autre nom marcherait aussi)
 +mv /​lib/​firmware/​intel-ucode/​06-7e-05 /​lib/​firmware/​intel-ucode/​06-7e-05.dpkg-dist
 +
 +# on recommence
 +iucode-tool -v --write-firmware /​boot/​cpu706E5_plat80_ver00000096_2020-06-16_PRD_4A457385.bin
 +iucode-tool:​ processed 1 valid microcode(s),​ 1 signature(s),​ 1 unique signature(s)
 +iucode-tool:​ selected 1 microcode(s),​ 1 signature(s)
 +iucode-tool:​ Writing microcode firmware file(s) into /​lib/​firmware/​intel-ucode
 +iucode-tool:​ 06-7e-05: 1 microcode entries written, 108544 bytes
 +iucode-tool:​ 1 file(s) were written into /​lib/​firmware/​intel-ucode
 +
 +# ok, on vérifie qu'il serait bien sélectionné
 +/​usr/​sbin/​iucode_tool -tb -lS /​lib/​firmware/​intel-ucode/​*
 +[…]
 +selected microcodes:
 +  059/001: sig 0x000706e5, pf_mask 0x80, 2020-06-16, rev 0x0096, size 108544
 +
 +# c'est tout bon, reste à l'​inclure dans l'​initrd
 +update-initramfs -u
 +</​code>​
 +
 +Et après un reboot, `grep microcode /​proc/​cpuinfo` sort bien `0x96`.
  
linux/microcode.txt · Dernière modification: 04/09/2020 11:20 par daniel