
Arquivos oficiais de dados de microcódigo da Intel para atualizar o firmware do processador, mitigando vulnerabilidades de segurança e corrigindo problemas funcionais em sistemas Linux.
O Pacote de Atualização de Microcódigo do Processador Intel (MCU) fornece um mecanismo para liberar atualizações para avisos de segurança e problemas funcionais, incluindo erratas. Além disso, os MCUs são responsáveis por iniciar o enclave SGX (em processadores que suportam o recurso SGX), implementar comportamentos complexos (como assists) e muito mais. O método preferido para aplicar MCUs é usar o BIOS do sistema. Para um subconjunto dos processadores da Intel, o MCU também pode ser atualizado em tempo de execução usando o sistema operacional. O Pacote de Microcódigo Intel compartilhado aqui contém atualizações para os processadores que suportam o carregamento de MCUs pelo SO.
Atualizar o microcódigo pode ajudar a mitigar certas vulnerabilidades de segurança potenciais em CPUs, bem como resolver certos problemas funcionais que poderiam, por exemplo, resultar em comportamento imprevisível do sistema, como travamentos, quedas, reinicializações inesperadas, erros de dados, etc. Para saber mais sobre a aplicação de MCUs a um processador Intel, consulte Microcode Update Guidance.
Este pacote é fornecido para distribuidores Linux para inclusão em suas versões de SO. A Intel recomenda obter os MCUs mais recentes usando o mecanismo de atualização do fornecedor do SO. Um bom ponto de partida é Fornecedor de SO e Software. Usuários especialistas podem atualizar seu microcódigo diretamente, fora do mecanismo do fornecedor do SO. No entanto, esse método é complexo e pode resultar em erros se executado incorretamente. Tais erros podem incluir, mas não se limitam a, travamentos do sistema, incapacidade de inicializar, impactos no desempenho, processadores lógicos carregando atualizações diferentes e algumas atualizações não surtindo efeito. Como resultado, esse método deve ser tentado somente por usuários especialistas.
Os MCUs são melhor carregados a partir do BIOS. Certos MCUs devem ser aplicados somente a partir do BIOS. Esses MCUs nunca são incluídos neste pacote, pois não são apropriados para distribuição via SO. Um OEM pode receber pacotes de atualização de microcódigo que são um superconjunto do que está contido neste pacote para inclusão em um BIOS.
Os fornecedores de SO podem optar por fornecer um MCU que o kernel possa consumir para carregamento antecipado. Por exemplo, o Linux pode aplicar um MCU bem no início da sequência de inicialização do kernel. Em situações em que uma atualização de BIOS não está disponível, o carregamento antecipado é a próxima melhor alternativa para atualizar o microcódigo do processador. Os estados do microcódigo são redefinidos em um reset de energia; portanto, é necessário que o MCU seja carregado todas as vezes durante o processo de inicialização.
Recomenda-se usar o método initrd para carregar um MCU, pois esse método carregará o MCU no momento mais inicial possível para a melhor cobertura. Sistemas que não podem tolerar indisponibilidade podem usar o método de carregamento tardio (late-load) para atualizar um sistema em execução sem reinicializar.
A assinatura do processador é um número que identifica o modelo e a versão de um processador Intel. Ela pode ser obtida usando a instrução CPUID, por meio do comando lscpu ou a partir do conteúdo de /proc/cpuinfo. Geralmente é apresentada como 3 campos: Família, Modelo e Stepping.
Por exemplo, se um processador retornar um valor de "0x000906eb" a partir da instrução CPUID:
O nome de arquivo formatado correspondente no Linux será "06-9e-0b", onde:
Um processador pode ser implementado para vários tipos de plataforma. Os processadores Intel têm um campo Platform ID de 3 bits no MSR(17H) que especifica o tipo de plataforma para até 8 tipos. Um arquivo MCU para um modelo de processador especificado pode suportar várias plataformas. Os Platform IDs suportados por um MCU são uma máscara de 8 bits em que cada bit definido indica um tipo de plataforma que o MCU suporta. O Platform ID de um processador pode ser lido no Linux usando rdmsr do msr-tools.
O diretório intel-ucode contém arquivos MCU binários nomeados no formato family-model-stepping. Esse formato de arquivo é suportado pela maioria das distribuições Linux modernas. Geralmente está localizado no diretório /lib/firmware e pode ser atualizado por meio da interface de recarga de microcódigo seguindo as instruções de atualização de carregamento tardio abaixo.
Para atualizar o initrd de carregamento antecipado, consulte sua distribuição Linux sobre como empacotar arquivos MCU para carregamento antecipado. Algumas distribuições usam update-initramfs ou dracut. Use o método recomendado pelo fornecedor do SO para ajudar a garantir que o arquivo MCU seja atualizado para carregamento antecipado antes de tentar o procedimento de carregamento tardio abaixo.
Para atualizar o pacote intel-ucode no sistema:
/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 para /lib/firmware, sobrescrevendo os arquivos em /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 | uniqSe você estiver usando o método do fornecedor do SO para aplicar um MCU, as etapas acima podem ter sido feitas automaticamente durante o processo de atualização.
O diretório intel-ucode-with-caveats contém MCUs que precisam de tratamento especial. O MCU BDX-ML é fornecido neste diretório porque requer commits especiais no kernel Linux; caso contrário, atualizá-lo pode resultar em comportamento inesperado do sistema. Os fornecedores de SO devem garantir que os patches do carregador tardio (fornecidos em linux-kernel-patches) estejam incluídos na distribuição antes de empacotar o MCU BDX-ML para carregamento tardio.
O diretório linux-kernel-patches consiste em patches de kernel que abordam vários problemas relacionados à aplicação de MCUs.
$ printf "%x\n" <number_to_convert_to_hex>$ iucode_tool -l intel-ucode | grep -wF sig (o pacote iucode_tool é necessário)$ od -t x4 <Family-Model-Stepping> lerá os primeiros 16 bytes do cabeçalho binário do microcódigo especificado em <Family-Model-Stepping>. O terceiro bloco é a versão do microcódigo. Por exemplo:
$ od -t x4 06-55-040000000 00000001 *02000065* 09052019 00050654Consulte o arquivo license para obter detalhes.
Consulte o arquivo security.md para obter detalhes.
Consulte o arquivo releasenote.md para obter detalhes.
Os recursos e benefícios das tecnologias da Intel dependem da configuração do sistema e podem exigir ativação de hardware, software ou serviço. O desempenho varia de acordo com a configuração do sistema. Verifique com o fabricante ou revendedor do seu sistema ou saiba mais em www.intel.com.
Nenhum produto ou componente pode ser absolutamente seguro.
Todas as informações fornecidas aqui estão sujeitas a alterações sem aviso prévio. Entre em contato com seu representante da Intel para obter as especificações e os roteiros mais recentes dos produtos Intel.
Os produtos e serviços descritos podem conter defeitos ou erros conhecidos como erratas, que podem causar desvios das especificações publicadas. As erratas caracterizadas atuais estão disponíveis mediante solicitação.
A Intel fornece estes materiais no estado em que se encontram, sem garantias expressas ou implícitas.
© Intel Corporation. Intel, o logotipo da Intel e outras marcas da Intel são marcas registradas da Intel Corporation ou de suas subsidiárias.
*Outros nomes e marcas podem ser reivindicados como propriedade de terceiros.
| Reservado | Família Estendida | Modelo Estendido | Reservado | Tipo de Processador | Código de Família | Número do Modelo | ID do 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 |