
Официальные файлы данных микрокода Intel для обновления прошивки процессора, позволяющие устранять уязвимости безопасности и решать функциональные проблемы в системах Linux.
Пакет обновлений микрокода (MCU) процессоров Intel предоставляет механизм для выпуска обновлений, связанных с бюллетенями по безопасности и функциональными проблемами, включая эрратумы. Кроме того, MCU отвечают за запуск анклавов SGX (на процессорах, поддерживающих технологию SGX), реализацию сложного поведения (например, ассистов) и многое другое. Предпочтительный способ применения MCU — использование системного BIOS. Для подмножества процессоров Intel MCU также может быть обновлён во время выполнения с помощью операционной системы. Размещённый здесь пакет Intel Microcode Package содержит обновления для тех процессоров, которые поддерживают загрузку MCU через ОС.
Обновление микрокода может помочь снизить риски, связанные с определёнными потенциальными уязвимостями безопасности в процессорах, а также устранить некоторые функциональные проблемы, которые могут, например, приводить к непредсказуемому поведению системы, такому как зависания, сбои, неожиданные перезагрузки, ошибки данных и т. д. Чтобы узнать больше о применении MCU к процессорам Intel, см. Microcode Update Guidance.
Этот пакет предоставляется дистрибьюторам Linux для включения в их релизы ОС. Intel рекомендует получать последние MCU с помощью механизма обновления от вендора ОС. Хорошей отправной точкой является OS and Software Vendor. Опытные пользователи могут обновить микрокод напрямую, вне механизма вендора ОС. Однако этот метод сложен и может привести к ошибкам при неправильном выполнении. Такие ошибки могут включать, помимо прочего, замораживание системы, невозможность загрузки, влияние на производительность, загрузку разных обновлений логическими процессорами и отсутствие эффекта от некоторых обновлений. Поэтому использовать этот метод следует только опытным пользователям.
MCU лучше всего загружать из BIOS. Некоторые MCU должны применяться только из BIOS. Такие MCU никогда не включаются в этот пакет, поскольку они не подходят для распространения через ОС. OEM-производители могут получать пакеты обновлений микрокода, которые являются надмножеством того, что содержится в этом пакете, для включения в BIOS.
Вендоры ОС могут предоставлять MCU, который ядро может использовать для ранней загрузки. Например, Linux может применить MCU очень рано в последовательности загрузки ядра. В ситуациях, когда обновление BIOS недоступно, ранняя загрузка является следующей лучшей альтернативой обновлению микрокода процессора. Состояние микрокода сбрасывается при перезагрузке питания, поэтому MCU необходимо загружать каждый раз во время загрузки.
Рекомендуется использовать метод initrd для загрузки MCU, поскольку этот метод загружает MCU на самом раннем этапе, обеспечивая максимальное покрытие. Системы, которые не могут допустить простоев, могут использовать метод late-load для обновления работающей системы без перезагрузки.
Сигнатура процессора — это число, идентифицирующее модель и версию процессора Intel. Его можно получить с помощью инструкции CPUID, команды lscpu или из содержимого /proc/cpuinfo. Обычно она представлена тремя полями: Family (семейство), Model (модель) и Stepping (степпинг).
Например, если процессор возвращает значение "0x000906eb" в результате инструкции CPUID:
Соответствующее имя файла в формате Linux будет "06-9e-0b", где:
Процессор может быть реализован для нескольких типов платформ. Процессоры Intel имеют 3-битное поле Platform ID в MSR(17H), которое задаёт тип платформы для до 8 типов. Файл MCU для указанной модели процессора может поддерживать несколько платформ. Platform ID, поддерживаемые MCU, представляют собой 8-битную маску, где каждый установленный бит указывает тип платформы, который поддерживает MCU. Platform ID процессора можно прочитать в Linux с помощью rdmsr из msr-tools.
Каталог intel-ucode содержит двоичные файлы MCU, названные в формате family-model-stepping. Этот формат файлов поддерживается большинством современных дистрибутивов Linux. Обычно он расположен в каталоге /lib/firmware и может быть обновлён через интерфейс перезагрузки микрокода, следуя инструкциям по обновлению late-load ниже.
Чтобы обновить initrd для ранней загрузки, обратитесь к своему дистрибутиву Linux за информацией о том, как упаковать файлы MCU для ранней загрузки. Некоторые дистрибутивы используют update-initramfs или dracut. Используйте рекомендованный вендором ОС метод, чтобы гарантировать, что файл MCU обновлён для ранней загрузки, прежде чем приступать к процедуре late-load, описанной ниже.
Чтобы обновить пакет intel-ucode в системе:
/sys/devices/system/cpu/microcode/reload$ git clone https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git или$ wget https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/main.zipintel-ucode в /lib/firmware, перезаписав файлы в /lib/firmware/intel-ucode/$ echo 1 > /sys/devices/system/cpu/microcode/reload$ sudo update-initramfs -u$ sudo reboot$ dmesg | grep microcode или$ cat /proc/cpuinfo | grep microcode | sort | uniqЕсли вы используете метод вендора ОС для применения MCU, указанные выше шаги могли быть выполнены автоматически в процессе обновления.
Каталог intel-ucode-with-caveats содержит MCU, требующие особой обработки. MCU BDX-ML предоставлен в этом каталоге, поскольку он требует специальных коммитов в ядре Linux, иначе его обновление может привести к непредсказуемому поведению системы. Вендоры ОС должны убедиться, что патчи для late-загрузчика (предоставленные в linux-kernel-patches) включены в дистрибутив перед упаковкой MCU BDX-ML для late-loading.
Каталог linux-kernel-patches состоит из патчей ядра, которые решают различные проблемы, связанные с применением MCU.
$ printf "%x\n" <число_для_преобразования_в_шестнадцатеричный_формат>$ iucode_tool -l intel-ucode | grep -wF sig (требуется пакет iucode_tool)$ od -t x4 <Family-Model-Stepping> прочитает первые 16 байт двоичного заголовка микрокода, указанного в <Family-Model-Stepping>. Третий блок — это версия микрокода. Например:
$ od -t x4 06-55-040000000 00000001 *02000065* 09052019 00050654Подробнее см. в файле license.
Подробнее см. в файле security.md.
Подробнее см. в файле releasenote.md.
Возможности и преимущества технологий Intel зависят от конфигурации системы и могут требовать включённого оборудования, программного обеспечения или активации сервиса. Производительность зависит от конфигурации системы. Обратитесь к производителю системы или продавцу либо узнайте больше на www.intel.com.
Ни один продукт или компонент не может быть абсолютно безопасным.
Вся информация, представленная здесь, может быть изменена без уведомления. Обратитесь к своему представителю Intel для получения последних спецификаций и дорожных карт продуктов Intel.
Описанные продукты и услуги могут содержать дефекты или ошибки, известные как эрратумы, которые могут вызывать отклонения от опубликованных спецификаций. Текущие охарактеризованные эрратумы предоставляются по запросу.
Intel предоставляет эти материалы как есть, без каких-либо явных или подразумеваемых гарантий.
© Intel Corporation. Intel, логотип Intel и другие товарные знаки Intel являются товарными знаками Intel Corporation или её дочерних компаний.
*Другие наименования и бренды могут являться собственностью соответствующих владельцев.
| Reserved | Extended Family | Extended Model | Reserved | Processor Type | Family Code | Model Number | Stepping ID |
|---|
| 31:28 | 27:20 | 19:16 | 15:14 | 13:12 | 11:8 | 7:4 | 3:0 |
| xxxx | 00000000b | 1001b | xx | 00b | 0110b | 1110b | 1011b |