
File dati ufficiali del microcodice Intel per l'aggiornamento del firmware del processore, al fine di mitigare le vulnerabilità di sicurezza e risolvere problemi funzionali sui sistemi Linux.
Il pacchetto Intel Processor Microcode Update (MCU) fornisce un meccanismo per rilasciare aggiornamenti per advisory di sicurezza e problemi funzionali, inclusi gli errata. Inoltre, gli MCU sono responsabili dell'avvio dell'enclave SGX (sui processori che supportano la funzionalità SGX), dell'implementazione di comportamenti complessi (come gli assist) e altro ancora. Il metodo preferito per applicare gli MCU è l'uso del BIOS di sistema. Per un sottoinsieme dei processori Intel, l'MCU può anche essere aggiornato a runtime utilizzando il sistema operativo. Il pacchetto Intel Microcode condiviso qui contiene aggiornamenti per quei processori che supportano il caricamento degli MCU tramite il sistema operativo.
Aggiornare il microcode può contribuire a mitigare alcune potenziali vulnerabilità di sicurezza nelle CPU e a risolvere alcuni problemi funzionali che potrebbero, ad esempio, causare comportamenti imprevedibili del sistema come blocchi, arresti anomali, riavvii imprevisti, errori di dati, ecc. Per saperne di più sull'applicazione degli MCU a un processore Intel, consulta la Guida all'aggiornamento del microcode.
Questo pacchetto è fornito ai distributori Linux per l'inclusione nelle loro versioni del sistema operativo. Intel consiglia di ottenere gli MCU più recenti tramite il meccanismo di aggiornamento del fornitore del sistema operativo. Un buon punto di partenza è Fornitore del sistema operativo e del software. Gli utenti esperti possono aggiornare il microcode direttamente al di fuori del meccanismo del fornitore del sistema operativo. Tuttavia, questo metodo è complesso e potrebbe causare errori se eseguito in modo errato. Tali errori potrebbero includere, ma non solo, blocchi del sistema, impossibilità di avvio, impatti sulle prestazioni, caricamento di aggiornamenti diversi sui processori logici e alcune mancate applicazioni degli aggiornamenti. Di conseguenza, questo metodo dovrebbe essere tentato solo da utenti esperti.
Gli MCU vengono caricati al meglio dal BIOS. Alcuni MCU devono essere applicati solo dal BIOS. Questi MCU non vengono mai inclusi in questo pacchetto poiché non sono adatti alla distribuzione tramite sistema operativo. Un OEM può ricevere pacchetti di aggiornamento del microcode che sono un sovrainsieme di ciò che è contenuto in questo pacchetto, per l'inclusione in un BIOS.
I fornitori di sistemi operativi possono scegliere di fornire un MCU che il kernel possa utilizzare per il caricamento anticipato. Ad esempio, Linux può applicare un MCU molto presto nella sequenza di avvio del kernel. Nelle situazioni in cui un aggiornamento del BIOS non è disponibile, il caricamento anticipato è la migliore alternativa successiva all'aggiornamento del microcode del processore. Gli stati del microcode vengono azzerati a ogni reset di alimentazione, quindi è necessario che l'MCU venga caricato ogni volta durante il processo di avvio.
L'uso del metodo initrd per caricare un MCU è consigliato poiché questo metodo caricherà l'MCU nel momento più precoce per la massima copertura. I sistemi che non possono tollerare tempi di inattività possono utilizzare il metodo late-load per aggiornare un sistema in esecuzione senza riavvio.
La firma del processore è un numero che identifica il modello e la versione di un processore Intel. Può essere ottenuta tramite l'istruzione CPUID, tramite il comando lscpu o dal contenuto di /proc/cpuinfo. Di solito viene presentata come 3 campi: Famiglia, Modello e Stepping.
Ad esempio, se un processore restituisce un valore di "0x000906eb" dall'istruzione CPUID:
Il nome file corrispondente formattato per Linux sarà "06-9e-0b", dove:
Un processore può essere implementato per più tipi di piattaforma. I processori Intel hanno un campo Platform ID a 3 bit nel MSR(17H) che specifica il tipo di piattaforma per un massimo di 8 tipi. Un file MCU per un determinato modello di processore può supportare più piattaforme. I Platform ID supportati da un MCU sono una maschera a 8 bit in cui ogni bit impostato indica un tipo di piattaforma supportato dall'MCU. Il Platform ID di un processore può essere letto in Linux usando rdmsr da msr-tools.
La directory intel-ucode contiene file MCU binari denominati nel formato family-model-stepping. Questo formato di file è supportato dalla maggior parte delle distribuzioni Linux moderne. Si trova generalmente nella directory /lib/firmware e può essere aggiornato tramite l'interfaccia di ricaricamento del microcode seguendo le istruzioni per l'aggiornamento late-load riportate di seguito.
Per aggiornare l'initrd con caricamento anticipato, consulta la tua distribuzione Linux su come impacchettare i file MCU per il caricamento anticipato. Alcune distribuzioni usano update-initramfs o dracut. Usa il metodo consigliato dal fornitore del sistema operativo per contribuire a garantire che il file MCU sia aggiornato per il caricamento anticipato prima di tentare la procedura late-load riportata di seguito.
Per aggiornare il pacchetto intel-ucode sul sistema:
/sys/devices/system/cpu/microcode/reload$ git clone https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git oppure$ wget https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/main.zipintel-ucode in /lib/firmware, sovrascrivendo i file in /lib/firmware/intel-ucode/$ echo 1 > /sys/devices/system/cpu/microcode/reload$ sudo update-initramfs -u$ sudo reboot$ dmesg | grep microcode oppure$ cat /proc/cpuinfo | grep microcode | sort | uniqSe stai usando il metodo del fornitore del sistema operativo per applicare un MCU, i passaggi precedenti potrebbero essere stati eseguiti automaticamente durante il processo di aggiornamento.
La directory intel-ucode-with-caveats contiene MCU che richiedono una gestione speciale. L'MCU BDX-ML è fornito in questa directory perché richiede commit speciali nel kernel Linux, altrimenti l'aggiornamento potrebbe comportare un comportamento imprevisto del sistema. I fornitori di sistemi operativi devono garantire che le patch del late loader (fornite in linux-kernel-patches) siano incluse nella distribuzione prima di impacchettare l'MCU BDX-ML per il caricamento tardivo.
La directory linux-kernel-patches contiene patch del kernel che risolvono vari problemi relativi all'applicazione degli MCU.
$ printf "%x\n" <number_to_convert_to_hex>$ iucode_tool -l intel-ucode | grep -wF sig (è richiesto il pacchetto iucode_tool)$ od -t x4 <Family-Model-Stepping> leggerà i primi 16 byte dell'header binario del microcode specificato in <Family-Model-Stepping>. Il terzo blocco è la versione del microcode. Per esempio:
$ od -t x4 06-55-040000000 00000001 *02000065* 09052019 00050654Vedi il file license per i dettagli.
Vedi il file security.md per i dettagli.
Vedi il file releasenote.md per i dettagli.
Le caratteristiche e i vantaggi delle tecnologie Intel dipendono dalla configurazione di sistema e potrebbero richiedere hardware, software o attivazione del servizio abilitati. Le prestazioni variano a seconda della configurazione di sistema. Controlla con il produttore del tuo sistema o il rivenditore o scopri di più su www.intel.com.
Nessun prodotto o componente può essere assolutamente sicuro.
Tutte le informazioni fornite qui sono soggette a modifica senza preavviso. Contatta il tuo rappresentante Intel per ottenere le specifiche e le roadmap più recenti dei prodotti Intel.
I prodotti e i servizi descritti possono contenere difetti o errori noti come errata che possono causare deviazioni dalle specifiche pubblicate. Le errata caratterizzate correnti sono disponibili su richiesta.
Intel fornisce questi materiali così come sono, senza garanzie esplicite o implicite.
© Intel Corporation. Intel, il logo Intel e altri marchi Intel sono marchi di fabbrica di Intel Corporation o delle sue controllate.
*Altri nomi e marchi possono essere rivendicati come proprietà di terzi.
| Riservato | Famiglia estesa | Modello esteso | Riservato | Tipo di processore | Codice famiglia | Numero modello | ID 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 |