Что такое микрокод процессора

Обновлено: 03.07.2024

Микрокод процессора – это микропрограмма, управляющая внутренними компонентами процессора. В этом документе описываются различные способы обновления микрокода процессора в Gentoo.

В современных процессорах x86 микрокод часто обрабатывает выполнение сложных и узкоспециализированных инструкций. Части микрокода также действуют как встроенное ПО для встроенных контроллеров процессора, и он даже используется для исправления или смягчения опечаток/ошибок в конструкции/реализации процессора. Учитывая сложность современных процессоров, у ЦП может быть более сотни таких ошибок [1] ​​.

Последние процессоры имеют возможность исправлять свой микрокод с помощью обновлений микрокода. Активные обновления микрокода хранятся в энергозависимой памяти, поэтому их необходимо применять при каждой загрузке системы.

BIOS/EFI может выполнить обновление микрокода в начале процесса загрузки. Такое обновление микрокода обеспечивается BIOS/EFI, поэтому их версия зависит от установленной версии BIOS/EFI. Встроенное ПО BIOS/EFI можно обновить с помощью обновления BIOS, но версия поставляемого микрокода зависит от поставщика материнской платы/BIOS.

Ядро также может выполнять обновление микрокода [2] из бинарных двоичных объектов встроенного ПО во время загрузки. Этот способ позволяет исправить микрокод более новым обновлением, чем то, которое предоставляется BIOS/EFI.

Примечание
Серьезность ошибок процессора, исправляемых обновлениями микрокода, различается. Затрагиваемые проблемы варьируются от крайне редкой нестабильности системы до повреждения данных или серьезных уязвимостей оборудования [3] .

Поскольку Gentoo ориентирован на настройку, существует выбор способов обновления микрокода процессора. Выберите рабочий процесс, который лучше всего подходит для уязвимой системы.

Содержание

Предварительные условия

Убедитесь, что установлен правильный пакет для предоставления обновлений микрокода для текущего процессора: sys-kernel/linux-firmware и/или sys-firmware/intel-microcode.

Возможно, перед установкой этих пакетов необходимо указать Portage принять соответствующую лицензию:

Загрузить этот микрокод в ЦП можно только через ядро, поэтому необходимо включить необходимые параметры ядра. В зависимости от марки ЦП, установленного в системе, выберите поддержку загрузки микрокода AMD или Intel (не помешает выбрать оба):

Чертеж

Dracut — это инфраструктура initramfs, ее можно использовать для загрузки микрокода при загрузке.

Генеральное ядро

После установки правильных пакетов микрокода и genkernel вызовите genkernel с параметром --microcode:

Чтобы сгенерировать новый initramfs с включенным микрокодом, вызовите:

Обязательно дайте загрузчику указание загрузить только что созданные файлы initramfs.

Рекомендуется обновить genkernel.conf, чтобы он содержал следующий код, чтобы избежать передачи параметра --microcode каждый раз в командной строке:

Вручную

Ранняя загрузка микрокода

Для раннего запуска микрокода микрокод предоставляется в виде первых файлов initramfs (иначе initrd, в формате cpio) для ядра во время загрузки. Grub (как устаревший, так и grub2) позволяет указать несколько образов cpio, разделенных пробелом, в команде initrd.

GRUB2 поддерживает загрузку раннего микрокода. Если файл микрокода назван в честь одного из следующих: intel-uc.img , intel-ucode.img , amd-uc.img , amd-ucode.img , Early_ucode.cpio или microcode.cpio , он будет автоматически обнаружен при запуске grub-mkconfig . Чтобы объявить файл микрокода с другим именем, например. ucode.cpio, добавьте эту строку в /etc/default/grub:

Регенерируйте grub.cfg с помощью:

Вывод выше аналогичен тому, что должно быть видно, за исключением initramfs, если он не используется системой, когда микрокод загружается через GRUB.

Поздняя загрузка микрокода

Чтобы вручную указать ядру перезагрузить микрокоды, выполните

и следите за dmesg на наличие ошибок. Этот механизм загрузки ищет большие двоичные объекты микрокода в /lib/firmware/.

Особенности

Специфика AMD

Микрокоды AMD включены в пакет sys-kernel/linux-firmware. Более подробное руководство можно найти в статье о микрокоде AMD.

Специфика Intel

Микрокоды Intel включены в пакет sys-firmware/intel-microcode. Подробные инструкции можно найти в статье о микрокоде Intel.

Микрокод процессора похож на прошивку процессора. Ядро может обновлять прошивку процессора без необходимости обновлять ее через обновление BIOS. Обновление микрокода хранится в энергозависимой памяти, поэтому BIOS/UEFI или ядро ​​обновляют микрокод при каждой загрузке.

Для правильной работы процессоров Intel и AMD может потребоваться обновление их микрокода. Эти обновления исправляют ошибки/ошибки, которые могут привести к чему угодно: от неправильной обработки до повреждения кода и данных и зависания системы.

Очень сложно точно знать, нужно ли вам обновление микрокода или нет, но совсем небезопасно просто игнорировать их.Вы можете не заметить их эффект и незаметно повредить ценные данные, или важная программа будет тихо вести себя неправильно. Или вы можете столкнуться с одной из тех необъяснимых и нечастых проблем с программным обеспечением (таких как сбои ядра, сегментные сбои приложений) или проблемами с оборудованием (включая внезапные перезагрузки и зависания).

Выпуски новых обновлений микрокода чаще выпускаются для молодых процессоров, но выпуск новых обновлений микрокода для более старых процессоров случается.

BIOS (или UEFI) обновляет микрокод процессора во время загрузки, однако в большинстве случаев либо поставщик материнской платы не будет выпускать частые обновления BIOS/UEFI, либо пользователь не будет устанавливать такие обновления. По этим причинам системный процессор, скорее всего, будет работать с устаревшим микрокодом в огромном количестве систем.

Несвободный микрокод процессора

Система обновления микрокода ЦП состоит из программного обеспечения (драйверы ядра, утилиты пользовательского пространства) и «непрозрачных» данных обновления, предоставляемых поставщиком ЦП.

Драйверы ядра и утилиты пользовательского пространства, связанные с обновлениями микрокода ЦП, являются бесплатным программным обеспечением, соответствующим Руководству Debian по бесплатному программному обеспечению.

Однако сами «непрозрачные» данные обновления, предоставляемые поставщиком ЦП, не являются бесплатными, и их содержимое неизвестно Debian. Эти «непрозрачные» данные отправляются как есть на ЦП для обработки, но только тогда, когда утилиты ядра и пользовательского пространства сочтут это необходимым. Это означает, что обновление микрокода не отправляется системному процессору, если оно действительно не требуется.

Например, система никогда не отправит процессору данные обновления микрокода, если процессор сообщает, что он уже использует ту же или более новую версию микрокода (поскольку UEFI/BIOS уже обновил ее). Он также не будет отправлять данные обновления микрокода, которые не подходят для этого системного процессора.

Обновление микрокода процессора в Debian (Intel или AMD)

Примечание. Перед первой установкой пакетов обновлений микрокода на компьютер рекомендуется проверить наличие обновлений BIOS/UEFI для вашей системы на сайте поддержки поставщиков вашей системы и применить их. Убедившись, что BIOS/UEFI компьютера обновлены, вы снизите вероятность возникновения проблем с обновлением микрокода (которые очень малы, но не равны нулю), а также устраните другие ошибки встроенного ПО, не связанные с микрокодом.

Установите пакет amd64-microcode (для систем с процессорами AMD AMD64) или пакет intel-microcode (для систем с процессорами Intel). Вам нужно будет включить как contrib, так и non-free в /etc/apt/sources.list.

Обновления микрокода применяются только при загрузке, поэтому для их активации необходимо перезагрузить компьютер. Вам придется оставить пакеты установленными, как описано выше: обновления микрокода необходимо повторно применять при каждой загрузке.

Поддержка обновлений микрокода для текущих и более ранних выпусков Debian

Debian 11 "Яблочко" (стабильная версия)

Поддерживается Debian 11, кодовое название "Bullseye", и обновления будут получать как через официальный репозиторий bullseye-backports (быстрее, чем точечные выпуски), так и через стабильные точечные выпуски и систему безопасности Debian. обновления.

Чтобы установить пакеты обновлений микрокода из последнего точечного выпуска, включите contrib и non-free в /etc/apt/sources.list, если они еще не включены, например:

После изменения /etc/apt/sources.list обновите списки пакетов в диспетчере пакетов и установите пакет amd64-microcode (процессоры AMD) или пакет intel-microcode (процессоры Intel). . Например:

Выпуски Debian LTS

Выпуски LTS поддерживаются и будут получать обновления обычным способом для выпусков LTS. Для установки и/или получения обновлений необходимо включить contrib и платные репозитории.

Debian 10 "Buster" (старая стабильная версия)

Поддерживается Debian 10, кодовое имя "Buster", и обновления будут получаться как через официальный репозиторий бэкпортов buster-backports (быстрее, чем точечные выпуски), так и через стабильные точечные выпуски и безопасность Debian. обновления.

Чтобы установить пакеты обновлений микрокода из последнего точечного выпуска, включите contrib и non-free в /etc/apt/sources.list, если они еще не включены, например:

После изменения /etc/apt/sources.list обновите списки пакетов в диспетчере пакетов и установите пакет amd64-microcode (процессоры AMD) или пакет intel-microcode (процессоры Intel). . Например:

Debian 9 "Stretch" (поддержка только LTS)

Поддерживается Debian 9, кодовое название "Stretch", обновления будут получаться как через официальный репозиторий stretch-backports-sloppy (быстрее, чем точечные выпуски), так и через старые стабильные точечные выпуски Debian. и обновления безопасности.

Чтобы установить пакеты обновлений микрокода из последнего точечного выпуска, включите contrib и non-free в /etc/apt/sources.list, если они еще не включены, например:

После изменения /etc/apt/sources.list обновите списки пакетов в диспетчере пакетов и установите пакет amd64-microcode (процессоры AMD) или пакет intel-microcode (процессоры Intel). . Например:

Тестирование Debian и нестабильный Debian

Убедитесь, что contrib и non-free включены в /etc/apt/sources.list, и установите пакеты.

Пакеты микрокода сначала загружаются в несвободную версию unstable, а через одну-две недели, если не сообщается о проблемах, автоматически переносятся в несвободную версию testing.

Ускоренное получение обновлений микрокода с помощью бэкпортов Debian

Стабильные точечные выпуски и старые стабильные точечные выпуски выпускаются каждые 2–4 месяца. Ожидание обновления микрокода, которое устранит проблему, затрагивающую вашу конкретную систему, может занять много времени.

Примеры (сначала нужно включить получение бэкпортированных пакетов, не забывайте, что также нужны contrib и non-free):

или для oldstable-backports-sloppy:

Проверка версии микрокода вашего процессора

Вы можете проверить, какая версия микрокода работает на ваших процессорах, выполнив поиск строк "микрокод" в файле /proc/cpuinfo.

Вы можете проверить, обновляло ли ядро ​​микрокод при загрузке, выполнив поиск строк "микрокод обновлен до" в журнале ядра:

Устранение проблем с загрузкой, вызванных обновлениями микрокода

В очень редких случаях ошибка обновления ядра или микрокода может вызывать проблемы с загрузкой (зависания или сброс в самом начале процесса загрузки) на определенных моделях процессоров.

По этой причине можно передать параметр командной строки ядра, который полностью пропускает процесс обновления микрокода. Параметр отключения загрузки микрокода — dis_ucode_ldr.

Этот параметр dis_ucode_ldr должен быть установлен в загрузчике, обычно в Grub2.


Крис Хоффман

< бр />

Крис Хоффман
Главный редактор

Крис Хоффман – главный редактор How-To Geek. Он писал о технологиях более десяти лет и два года был обозревателем PCWorld. Крис писал для The New York Times, давал интервью в качестве эксперта по технологиям на телевизионных станциях, таких как NBC 6 в Майами, и освещал свою работу в таких новостных агентствах, как BBC. С 2011 года Крис написал более 2000 статей, которые были прочитаны почти миллиард раз — и это только здесь, в How-To Geek. Подробнее.


Прошивка – это тип программного обеспечения, которое запускается на аппаратном устройстве и выполняет низкоуровневые задачи. Например, все, от пульта дистанционного управления телевизором до жесткого диска компьютера и воздушного дрона, имеет собственную прошивку. А микрокод — это, по сути, прошивка для вашего процессора.

Что такое прошивка?

Программное обеспечение — это программы, приложения и другой компьютерный код, который работает на устройстве. Аппаратное обеспечение относится к фактическим физическим устройствам. Таким образом, если у вас есть ПК с Windows, операционная система Windows и все приложения, которые вы используете, являются программными средствами, а сам ПК и его компоненты, такие как жесткий диск, ЦП, материнская плата, мышь и дисплей, — аппаратными средствами.

«Прошивка», как следует из названия, представляет собой нечто среднее между программным и аппаратным обеспечением. Прошивка на самом деле представляет собой просто тип программного обеспечения, но обычно она записывается в память, встроенную в это оборудование, и работает на гораздо более низком уровне. В случае ПК ваша материнская плата, ЦП, графический процессор, жесткий диск, мышь и другие устройства имеют собственную прошивку.

Например, когда вы загружаете свой компьютер, микропрограмма на вашей материнской плате — либо UEFI, либо BIOS — запускается и инициализирует ваши устройства, прежде чем передать запуск на ваш жесткий диск, а затем на вашу операционную систему. Ваш твердотельный накопитель имеет микропрограмму, которая автоматически определяет, где данные должны храниться в ячейках физической флэш-памяти для обеспечения оптимальной производительности. Видео BIOS — это тип микропрограммы, которая переводит инструкции, связанные с видео, до того, как они будут отправлены графическому процессору вашего компьютера. Даже у вашей USB-мыши есть встроенное ПО, которое обрабатывает физический ввод мыши, связывается с вашим компьютером и включает все индикаторы, которые могут быть на вашей мыши.

Прошивка может представлять собой всю операционную систему простого устройства


Для некоторых простых устройств "прошивка" может относиться ко всей операционной системе устройства.Например, если у вас есть цифровая камера, «прошивка» камеры относится ко всему программному обеспечению, работающему на этой цифровой камере. Это включает в себя все, от низкоуровневых функций захвата фотографий до графической операционной системы камеры. Даже у воздушных дронов есть прошивка, которая представляет собой программное обеспечение, работающее на самом дроне.

Поэтому, чтобы обновить всю операционную систему устройства, например цифровой камеры, маршрутизатора, принтера, музыкального проигрывателя или устройства GPS-навигации, часто приходится выполнять "обновление прошивки" или загружать и устанавливать новый файл «прошивки» от производителя.

Похоже, что операционная система должна быть просто программным обеспечением, поэтому это может показаться немного непоследовательным. но это потому, что прошивка не является точным термином. В то время как программное и аппаратное обеспечение достаточно ясно, прошивка — это просто тип программного обеспечения низкого уровня.

Что такое микрокод?

Микрокод стал более важным из-за уязвимости Spectre. Процессорам Intel требуется новый «микрокод» от Intel для надлежащей защиты от атак Spectre.

Думайте о микрокоде как о прошивке для процессора вашего компьютера. Микрокод переводит инструкции, которые получает ЦП, в физические операции на уровне схемы, которые происходят внутри ЦП. Другими словами, обновленный микрокод может отправлять различные инструкции схемам внутри ЦП. Это может предотвратить определенные атаки Spectre, изменив способ работы ЦП. Обновления микрокода также могут исправлять ошибки и другие ошибки, не требуя полной замены оборудования ЦП.

Обновления микрокода обычно поставляются вместе с обновлениями микропрограммы UEFI или BIOS. Когда ваш компьютер загружается, микропрограмма UEFI или BIOS компьютера загружает микрокод в ЦП. Однако операционные системы, такие как Windows или Linux, также могут загружать новый микрокод во время загрузки.

Например, если вы хотите получить последнюю версию микрокода Intel для вашего ЦП для защиты от Spectre, а производитель вашего ПК не выпускает обновления UEFI для вашей системы, у Microsoft есть дополнительное обновление Windows, которое вы можете установить.

Нужно ли обновлять прошивку устройства?


Следует ли обновлять прошивку устройства, зависит от устройства и рекомендаций производителя.

Во многих случаях вам никогда не потребуется обновлять прошивку аппаратного устройства. Например, на пульте дистанционного управления вашего телевизора установлена ​​прошивка, и почти наверняка нет возможности ее обновить. В любом случае, нет причин, по которым вы хотели бы обновить его. С вашим пультом дистанционного управления все в порядке, и вам не нужно о нем беспокоиться.

Для многих других аппаратных устройств обновление прошивки иногда может быть полезно для исправления ошибок и внесения незначительных улучшений. Например, производитель вашего твердотельного накопителя может предложить более новую версию микропрограммы, повышающую надежность или производительность. Производитель вашей видеокарты может предложить новый видео BIOS, в котором исправлена ​​ошибка. Или производитель вашего маршрутизатора может предложить обновление микропрограммы, включающее новые административные функции.

Многие производители устройств рекомендуют устанавливать обновление микропрограммы только в том случае, если у вас есть проблема, которую необходимо устранить (или вам требуется определенная новая функция), или если производитель специально указывает вам установить ее.

Для других устройств обновление встроенного ПО почти всегда является отличной идеей. Вы, вероятно, хотите, чтобы последнее и самое лучшее обновление прошивки для вашей цифровой камеры, например, улучшить производительность и получить новые функции. Кроме того, Microsoft рекомендует обновлять прошивку вашего контроллера Xbox One, чтобы обеспечить его правильную работу с играми, в которые вы играете.

Следуйте рекомендациям производителя для каждого устройства. Многие производители рекомендуют обновлять прошивку своего устройства только в том случае, если у вас нет проблем. Если питание отключается или возникает ошибка при обновлении прошивки, часто нет возможности полностью восстановить. Другими словами, неудачное обновление прошивки может «заблокировать» устройство, сделав его непригодным для использования. Это зависит от устройства.

Как обновить прошивку вашего оборудования

Если вам нужно обновить прошивку устройства, вам помогут эти общие инструкции. Точный процесс обновления прошивки устройства зависит от самого устройства, и производитель устройства должен предоставить инструкции на своем веб-сайте.

Сначала перейдите на веб-сайт производителя и найдите страницу поддержки или загрузки для конкретного продукта, который вы используете. Например, если у вас есть твердотельный накопитель Samsung, перейдите на веб-сайт Samsung и найдите страницу поддержки для вашей конкретной модели твердотельного накопителя. Если вы хотите обновить прошивку материнской платы или BIOS, зайдите на веб-сайт производителя вашего ПК и найдите точный режим ПК или, если вы собрали свой собственный компьютер, зайдите на веб-сайт производителя материнской платы и найдите модель материнской платы, которая у вас есть. .

Поищите на сайте поддержки любые загрузки обновлений «прошивки». Если вы не можете найти его, вероятно, для вашего устройства нет обновленной прошивки. Загрузите последнюю версию, которую вы видите, и обязательно прочитайте все примечания к выпуску, которые появляются на веб-сайте.


Загрузив новую прошивку, откройте загрузку и найдите файл README. Если вы не можете его найти, поищите отдельные инструкции по установке прошивки на странице загрузки. В инструкциях производителя будет точно указано, что вам нужно сделать.

Для некоторых обновлений встроенного ПО вам может потребоваться просто запустить файл .exe из Windows, и он позаботится обо всем за вас. Для других вам может потребоваться создать загрузочный диск DOS с файлом прошивки на нем, загрузиться в среду DOS и запустить оттуда команду для обновления прошивки. Или, если вы хотите обновить отдельное устройство, вам может потребоваться поместить файл прошивки на USB-накопитель или SD-карту и перенести его на другое устройство.

Если загруженный файл встроенного ПО представляет собой просто файл .exe и вы не можете найти никаких инструкций, возможно, вам просто нужно дважды щелкнуть его и запустить из Windows.


Это общие инструкции, и вам может потребоваться выполнить разные действия для разных устройств. Например, чтобы обновить прошивку контроллера Xbox One, вы должны использовать Xbox One или приложение Xbox Accessories в Windows 10. Некоторые программы могут автоматически предлагать вам установить обновления прошивки для соответствующих аппаратных устройств, если они действительно необходимы.< /p>

  • › Является ли SSD Wear проблемой для PlayStation 5?
  • › Насколько безопасны камеры безопасности Wi-Fi?
  • › Как защитить свой умный дом от атак
  • › Процессоры Intel получают таинственные «критические» обновления безопасности
  • › Как обновить прошивку Philips Hue
  • › Что такое ботнет Mirai и как защитить свои устройства?
  • › Почему для прошивки UEFI вашего ПК требуются обновления безопасности
  • › Почему прозрачные чехлы для телефонов желтеют?

Современные процессоры — это сложные устройства, в которых могут быть ошибки. Кроме того, вместо непосредственного выполнения инструкций x86 современные процессоры x86 содержат внутренний код, реализующий поддержку набора инструкций x86. Внутренний код называется микрокодом. Микрокод можно обновить, чтобы исправить или смягчить ошибки процессора.

Некоторые ошибки процессора могут привести к сбою Firefox. Например, известно, что Firefox 57 и более поздние версии иногда аварийно завершают работу на процессорах Broadwell-U со старым микрокодом, чего не наблюдается в более новых версиях микрокода Broadwell-U.

Обновления микрокода могут быть загружены в ЦП микропрограммой (обычно называемой BIOS, даже на компьютерах, которые технически имеют микропрограмму UEFI вместо старой версии BIOS) или операционной системой. Обновления микрокода не сохраняются после перезагрузки, поэтому в случае системы с двойной загрузкой, если обновление микрокода не доставляется через BIOS, обе операционные системы должны предоставить обновление.

Чтобы обновить систему на Mac, примените все системные обновления OS X и обновления встроенного ПО Apple, предлагаемые на панели «Обновления» в приложении App Store.

Чтобы Windows могла загружать обновленный микрокод в ЦП, убедитесь, что Центр обновления Windows включен и настроен на установку обновлений.

Чтобы просмотреть микроархитектуру процессора и используемую версию микрокода, выполните команду reg query HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0 в командной строке Windows. (Вы можете открыть командную строку, нажав Windows + R , набрав cmd и нажав Return .) Строка с надписью «VendorIdentifier» показывает поставщика процессора (GenuineIntel для Intel или AuthenticAMD для AMD). Строка с надписью «Идентификатор» дает микроархитектуру в виде трех чисел: «Семейство», «Модель» и «Степпинг». Они важны для определения того, может ли конкретная ошибка ЦП быть связана с ЦП вашего компьютера. Строка с надписью «Обновление версии» показывает текущую версию микрокода (для конкретной микроархитектуры) с нулями с обеих сторон. Например, Update Revision REG_BINARY 000000001E000000 означает, что версия 1E (шестнадцатеричная). В строке «Предыдущая версия обновления» указана версия микрокода, загруженная из BIOS.

Если поставщик — GenuineIntel, семейство — 6, модель — 61, а степпинг — 4, во избежание сбоев в Firefox 57 или более поздней версии версия микрокода должна быть 1A или выше.

Используются ли обновления микрокода по умолчанию, зависит от дистрибутива Linux и может различаться для процессоров Intel и AMD.

  • В дистрибутивах на основе Debian, включая Ubuntu, обновления микрокода для процессоров Intel предоставляются в пакете intel-microcode, а обновления микрокода для процессоров AMD — в пакете amd64-microcode.
  • В Arch обновления микрокода AMD устанавливаются по умолчанию, но обновления микрокода Intel требуют особых действий.
  • В Fedora обновления микрокода устанавливаются по умолчанию.

Чтобы увидеть микроархитектуру процессора и используемую версию микрокода, запустите в терминале команду less /proc/cpuinfo. Строка с надписью «vendor_id» показывает поставщика процессора (GenuineIntel для Intel или AuthenticAMD для AMD). Микроархитектура задается тремя числами в строках с пометками «семейство процессоров», «модель» и «степпинг». Они важны для определения того, может ли конкретная ошибка ЦП быть связана с ЦП вашего компьютера. Строка с пометкой «микрокод» показывает номер версии микрокода (для конкретной микроархитектуры) в шестнадцатеричном формате.

Если поставщик — GenuineIntel, семейство — 6, модель — 61, а степпинг — 4, во избежание сбоев в Firefox 57 или более поздней версии версия микрокода должна быть 0x1A или выше.

Эти замечательные люди помогли написать эту статью:

Иллюстрация рук

Волонтер

Расширяйтесь и делитесь своим опытом с другими. Отвечайте на вопросы и улучшайте нашу базу знаний.

Производители процессоров выпускают обновления стабильности и безопасности для микрокода процессора. Эти обновления содержат исправления ошибок, которые могут иметь решающее значение для стабильности вашей системы. Без них вы можете столкнуться с ложными сбоями или неожиданными остановками системы, которые трудно отследить.

Все пользователи процессоров AMD или Intel должны установить обновления микрокода, чтобы обеспечить стабильность системы.

Обновления микрокода обычно поставляются с прошивкой материнской платы и применяются во время инициализации прошивки. Поскольку OEM-производители могут своевременно не выпускать обновления прошивки, а старые системы вообще не получают новых обновлений прошивки, в ядро ​​Linux была добавлена ​​возможность применять обновления микрокода ЦП во время загрузки. Загрузчик микрокода Linux поддерживает три метода загрузки:

  1. Ранняя загрузка обновляет микрокод очень рано во время загрузки, до этапа initramfs, поэтому этот метод является предпочтительным. Это обязательно для процессоров с серьезными аппаратными ошибками, таких как семейства процессоров Intel Haswell и Broadwell.
  2. Поздняя загрузка обновляет микрокод после загрузки, что может быть слишком поздно, поскольку ЦП, возможно, уже пытался использовать набор инструкций с ошибками. Даже если ранняя загрузка уже используется, позднюю загрузку все равно можно использовать для применения нового обновления микрокода без перезагрузки.
  3. Встроенный микрокод может быть скомпилирован в ядро, которое затем применяется ранним загрузчиком.

Содержание

Ранняя загрузка

Установка

В зависимости от процессора установите следующий пакет:

  • amd-ucode для процессоров AMD,
  • intel-ucode для процессоров Intel.

Микрокод должен быть загружен загрузчиком. Из-за большого разнообразия конфигурации ранней загрузки пользователей обновления микрокода могут не запускаться автоматически в конфигурации Arch по умолчанию. В этом отношении многие ядра AUR пошли по пути официальных ядер Arch.

Эти обновления необходимо включить, добавив /boot/amd-ucode.img или /boot/intel-ucode.img в качестве первого файла initrd в файле конфигурации загрузчика. Это перед обычным файлом initrd. Ниже приведены инструкции для распространенных загрузчиков.

В следующих разделах замените cpu_manufacturer на производителя вашего процессора, например amd или intel .

Совет: для Arch Linux на съемном диске, который может работать на любом из этих процессоров, установите оба пакета и добавьте оба файла микрокода как initrd в конфигурацию загрузчика. Их порядок не имеет значения, если они оба указаны перед образом initramfs.

Конфигурация

Включение ранней загрузки микрокода в пользовательском ядре

Для того, чтобы ранняя загрузка работала в пользовательских ядрах, "поддержка загрузки микрокода ЦП" должна быть скомпилирована в ядро, а не скомпилирована как модуль. Это активирует подсказку «Ранняя загрузка микрокода», для которой следует установить значение Y .

grub-mkconfig автоматически обнаружит обновление микрокода и соответствующим образом настроит GRUB. После установки пакета микрокода заново создайте конфигурацию GRUB, чтобы активировать загрузку обновления микрокода, выполнив:

Кроме того, пользователи, управляющие своим файлом конфигурации GRUB вручную, могут добавить /boot/cpu_manufacturer-ucode.img (или /cpu_manufacturer-ucode.img, если /boot является отдельный раздел) следующим образом:

Повторите это для каждого пункта меню.

системная загрузка

Используйте параметр initrd для загрузки микрокода перед начальным виртуальным диском следующим образом:

Последний микрокод cpu_manufacturer-ucode.img должен быть доступен во время загрузки в системном разделе EFI (ESP). ESP должен быть смонтирован как /boot, чтобы микрокод обновлялся каждый раз при обновлении amd-ucode или intel-ucode. В противном случае копируйте /boot/cpu_manufacturer-ucode.img в свой ESP при каждом обновлении пакета микрокода.

Унифицированные образы ядра

EFISTUB

Добавить две опции initrd=:

REFInd

Измените параметры загрузки в /boot/refind_linux.conf и добавьте initrd=boot\cpu_manufacturer-ucode.img (или initrd=cpu_manufacturer-ucode.img, если /boot это отдельный раздел) в качестве первого файла initramfs. Например:

Пользователи, использующие разделы вручную в esp/EFI/refind/refind.conf для определения ядер, должны просто добавить initrd=boot\cpu_manufacturer-ucode.img (или initrd =cpu_manufacturer-ucode.img, если /boot — это отдельный раздел) как требуется в строке параметров, а не в основной части строфы. Например:

Сислинукс

Примечание. Между файлами initrd cpu_manufacturer-ucode.img и initramfs-linux.img не должно быть пробелов. Строка INITRD должна быть именно такой, как показано ниже.

Несколько initrd могут быть разделены запятыми в файле /boot/syslinux/syslinux.cfg:

LILO и потенциально другие старые загрузчики не поддерживают несколько образов initrd. В этом случае файлы cpu_manufacturer-ucode.img и initramfs-linux.img необходимо будет объединить в один образ.

Примечание. Порядок важен. Исходный образ initramfs-linux.img должен быть помещен после cpu_manufacturer-ucode.img в результирующем образе.

Чтобы объединить оба изображения в одно изображение с именем initramfs-merged.img , можно использовать следующую команду:

Теперь отредактируйте /etc/lilo.conf, чтобы загрузить новое изображение.

И запустите lilo от имени пользователя root:

Поздняя загрузка

Поздняя загрузка обновлений микрокода происходит после загрузки системы. Он использует файлы в /usr/lib/firmware/amd-ucode/ и /usr/lib/firmware/intel-ucode/ .

Для процессоров AMD файлы обновления микрокода предоставляются linux-firmware .

Включение поздних обновлений микрокода

В отличие от ранней загрузки, поздняя загрузка обновлений микрокода в Arch Linux включена по умолчанию с помощью /usr/lib/tmpfiles.d/linux-firmware.conf . После загрузки файл анализируется systemd-tmpfiles-setup.service(8) и микрокод процессора обновляется.

Чтобы вручную перезагрузить микрокод, например. после обновления файлов микрокода в /usr/lib/firmware/amd-ucode/ или /usr/lib/firmware/intel-ucode/ запустите:

Это позволяет применять новые обновления микрокода без перезагрузки системы. Для linux-прошивки вы можете автоматизировать это с помощью хука pacman, например:

Отключение поздних обновлений микрокода

Микрокод, встроенный в initramfs

Эту статью или раздел необходимо расширить.

Фактическая точность этой статьи или раздела оспаривается.

Эту статью или раздел необходимо расширить.

Проверка обновления микрокода при загрузке

Проверьте сообщения ядра с помощью journalctl, чтобы узнать, был ли обновлен микрокод:

В системах Intel при каждой загрузке должно появляться что-то похожее на следующее, указывающее на то, что микрокод обновляется очень рано:

Примечание. Отображаемая дата не соответствует версии установленного пакета intel-ucode. Он показывает, когда корпорация Intel в последний раз обновляла микрокод, соответствующий конкретному обновляемому оборудованию.

Вполне возможно, особенно на более новом оборудовании, что обновление микрокода для ЦП отсутствует. В этом случае вывод может выглядеть следующим образом:

В системах AMD, использующих раннюю загрузку, вывод будет выглядеть примерно так:

В системах AMD, использующих позднюю загрузку, в выводе будет показана версия старого микрокода до перезагрузки микрокода и новая версия после перезагрузки. Это будет выглядеть примерно так:

Какие ЦП принимают обновления микрокода

Пользователи могут посетить собственный веб-сайт Intel или вики Gentoo на AMD по следующим ссылкам, чтобы узнать, поддерживается ли конкретная модель:

Читайте также: