Совершенно альтернативный способ обновления микрокодов

Содержание
  1. Модификация UEFI BIOS для «чайников» — обновляем микрокод CPU AMD в MB ASUS SABERTOOTH-990FX R.1.XX
  2. Microcode (Русский)
  3. Contents
  4. Установка
  5. Включение раннего обновления микрокода
  6. Автоматический способ
  7. Ручной способ
  8. systemd-boot
  9. EFI boot stub / EFI handover
  10. rEFInd
  11. Syslinux
  12. Позднее обновление микрокода
  13. Включение позднего обновления микрокода
  14. Отключение позднего обновления микрокода
  15. Проверим, обновился ли microcode при загрузке
  16. Каким ЦП нужны обновления микрокода
  17. Обнаружение доступного обновления микрокода
  18. Применение ранней загрузки микрокода в кастомных ядрах
  19. Исправление ошибок в CPU. Совершенно альтернативный способ обновления микрокодов Полная конфигурация моего компьютера
  20. Исправление ошибок в CPU. Совершенно альтернативный способ обновления микрокодов Полная конфигурация моего компьютера
  21. 1. Центральные процессоры производства компании Intel
  22. 2. Центральные процессоры производства компании AMD

Модификация UEFI BIOS для «чайников» — обновляем микрокод CPU AMD в MB ASUS SABERTOOTH-990FX R.1.XX

Модификация UEFI BIOS для «чайников» — обновляем микрокод CPU AMD в MB ASUS SABERTOOTH-990FX R.1.XX

Введение

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

Просто в шестнадцатиричном редакторе замените один микрокод на другой.
А по умному так:
1. Открываете в UEFITool
2. Ищите модуль с GUID равным DE3E049C-A218-4891-8658-5FC0FA84C788. Это — AmdProcessorInitPeim
3. Извлекаете его тело.
4. В шестнадцатиричном редакторе в извлеченном теле заменяете один микрокод на другой.
5. Заменяете тело модуля в открытом UEFITool.
6. Сохраняете прошивку в UEFITool.

1. Открываете извлеченный старый микрокод 16-ричном редакторе, например в HxD,
2. Переписываете первые несколько байт.
3. Открываете в HxD извлеченное тело и ищете в нем поиском эти первые несколько байт.
4. Удостоверяетесь, что и последующие байты совпадают. В противном случае, ищете дальше.
5. Открываете извлеченный новый микрокод.
6. Выделяете всё, копируете в буфер.
7. Возвращаетесь к извлеченному телу и вставляете с заменой новый микрокод из буфера.
8. Сохраняете результат.

Главное, чтобы размер не изменился ни на байт!
Речь про размер извлеченного тела AmdProcessorInitPeim

— CPU00600_F12***09-07-2012 и CPU00600_F12***06-03-2013
— CPU00600_F20***11-07-2012 и CPU00600_F12***03-01-2013

Источник

Microcode (Русский)

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

Особенно пользователи процессоров семейства Intel Haswell и Broadwell должны установить эти обновления, чтобы обеспечить стабильность системы. Но, понятное дело, все пользователи должны устанавливать эти обновления.

Contents

Установка

Для процессоров AMD установите пакет amd-ucode .

Для процессоров Intel установите пакет intel-ucode .

Если Arch находится на съемном носителе, вы должны установить микрокод для обоих производителей процессоров.

Включение раннего обновления микрокода

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

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

Автоматический способ

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

Ручной способ

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

Повторите это для каждой записи в меню.

systemd-boot

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

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

EFI boot stub / EFI handover

Добавьте два параметра initrd= :

The factual accuracy of this article or section is disputed.

Для ядер, которые были сгенерированы как один файл, содержащий все initrd, cmdline и ядро, сначала сгенерируйте initrd для интеграции, создав новый, следующим образом:

rEFInd

Отредактируйте опции загрузки в /boot/refind_linux.conf также как в примере EFI boot stub выше, например:

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

Syslinux

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

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

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

Теперь отредактируйте /etc/lilo.conf для загрузки нового образа.

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

Позднее обновление микрокода

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

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

Для процессоров Intel ни один пакет не предоставляет файлы обновления микрокода (FS#59841). Чтобы использовать позднюю загрузку, вам необходимо вручную извлечь intel-ucode/ из предоставленного Intel архива.

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

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

Для ручного обновления микрокода на запущенной системе запустите:

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

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

Для систем AMD микрокод процессора будет обновляться, даже если пакет amd-ucode не установлен, так как файлы предоставлены linux-firmware (FS#59840). Чтобы отключить позднюю загрузку, вы должны переопределить временные файлы /usr/lib/tmpfiles.d/linux-firmware.conf . Это можно сделать, создав файл с тем же именем в /etc/tmpfiles.d/ :

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

Чтобы убедиться, что микрокод обновился, воспользуемся dmesg:

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

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

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

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

Каким ЦП нужны обновления микрокода

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

Обнаружение доступного обновления микрокода

Вы можете узнать, содержит ли intel-ucode.img образ микрокода для вашего процессора с помощью iucode-tool .

  1. Установите intel-ucode (для обнаружения обновления не требуется менять initrd)
  2. Установите iucode-tool
  3. Извлекает образ микрокода и ищет в нём ваш cpuid:
  4. Если обновление доступно, оно должно отобразиться под selected microcodes
  5. Микрокод может уже быть в вашем биосе и его загрузка может не отображаться в dmesg. Сравните с текущим запуском микрокода >

Применение ранней загрузки микрокода в кастомных ядрах

Для того, чтобы ранняя загрузка работала в кастомных ядрах, «CPU microcode loading support» должен быть вкомпилирован в ядро, а не скомпилирован как модуль. Это включает приглашение «Early load microcode», которое должно быть установлено в Y .

Источник

Исправление ошибок в CPU. Совершенно альтернативный способ обновления микрокодов Полная конфигурация моего компьютера

Исправление ошибок в CPU. Совершенно альтернативный способ обновления микрокодов Полная конфигурация моего компьютера

Не для кого не секрет, что процессор представляет собой автомат с микропрограммным управлением. И любая его инструкция является совокупностью микрокоманд, прошитых в ПЗУ процессора при его изготовлении. Ошибки микрокода и схемные погрешности (errata), допущенные при проектировании, могут вызывать отклонения от спецификаций процессора и ошибкам в его работе. При выпуске процессора обычно публикуются его спецификация и список обнаруженных errata.

Все процессоры Intel с архитектурой P6, а к ним относятся семейства Pentium Pro, Pentium II & III, Celeron, Pentium II & III Xeon и Pentium II Overdrive, обладают таким замечательным свойством, как «reprogrammable microcode». В этих процессорах имеется возможность изменения микрокода, т.е. имеется возможность исправления ошибок в программно-схемотехнической реализации конкретных процессоров семейства P6 и некоторых встроенных ошибок практически на уровне «железа». Ошибки могут появляться на этапе проектирования процессоров, а исправляются они именно с помощью изменения микрокода. Каждое из подсемейств (PII, Celeron, PPro, Xeon) имеет спецификацию. При выпуске каждого нового степпинга процессора (внутри него все приборы являются идентичными в рамках технологических отклонений), Intel публикует для него обновление спецификации, где указываются обнаруженные и исправленные errata (отклонения от спецификации).

Ошибки эти могут, в принципе, осложнить жизнь программному обеспечению, которое работает на этих «дефектных» процессорах (и пользователю;-)) .

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

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

Сами обновления микрокода — это 2-хкилобайтные блоки данных, прошитые в системном BIOS. Такой блок есть для каждого степпинга процессора из семейства P6. Intel поставляет свежие версии микрокода ведущим производителям BIOS. База данных с обновлениями пополняется и изменяется при появлении новых моделей и версий микрокода. Intel рекомендует выполнять обновление версий микрокода с помощью своей утилиты при установке нового процессора на материнскую плату или перепрограммирования флэш-памяти, чтобы быть уверенным, что в BIOS содержится самая свежая версия микрокода. Эта программа определяет используемый процессор (с помощью CPUID) и ищет соответствующее ему обновление в своей базе. Если найдена свежая версия микрокода, утилита локально перепрошивает код в BIOS, не затрагивая остальные участки. Т.о. отпадает необходимость перепрограммирования всего флэша для поддержки нового ЦПУ, как это было ранее. Обновление базы данных Intel периодически выкладывает на своем сайте.

Последняяи из доступных нам баз имеет ревизию 5.01 и содержит следующие версии микрокода:

Processor Processor Stepping Microcode Update Rev
Pentium III Processor 0x672 0x04
Pentium III Processor 0x673 0x02
Pentium III Xeon Processor 0x672 0x21
Pentium III Xeon Processor 0x673 0x22
Pentium II Processor 0x633 0x34
Pentium II Processor 0x634 0x35
Pentium II Processor 0x650 0x32
Pentium II Processor 0x651 0x30
Pentium II Processor 0x652 0x14
Pentium II Processor 0x653 0x01
Pentium II Xeon Processor 0x652 0x29
Pentium II Xeon Processor 0x653 0x04
Intel Celeron Processor 0x650 0x32
Intel Celeron Processor 0x651 0x30
Intel Celeron Processor 0x660 0x09
Intel Celeron Processor 0x665 0x02
Pentium II OverDrive Processor x1632 0x02
Pentium Pro Processor 0x612 0xC6
Pentium Pro Processor 0x616 0xC6
Pentium Pro Processor 0x617 0xC6
Pentium Pro Processor 0x619 0xD2

Загрузить последнюю версию утилиты, исправляющую микрокод можно прямо отсюда: pupdt501.exe (115 Kb)

Старую базу (PEP15.PDB) можно загрузить отсюда: pupdt461.exe (111 Кб)

После окончания работы утилиты, необходимо выключить питание компьютера. Загрузка обновления в процессор происходит во время выполнения POST при каждом запуске системы. Естественно для работы утилиты необходимо разрешить перезапись флэш-памяти перемычкой или в BIOS Setup. Программа должна запускаться из-под «голого» ДОСа.

Однако для такого идеального варианта необходима поддержка BIOS»ом специального API обновления микрокода процессора, позволяющего утилите обновления с помощью BIOS загрузить новый микрокод. Если используемая версия системного BIOS не поддерживает API, пользователю ничего не остается, кроме как добыть новую версию у производителя материнской платы. Однако бывает, что найти её не так уж просто, если не невозможно. Зачастую, после прекращения производства какой-либо модели системной платы, производитель перестает выпускать и обновления биосов для нее, но при этом новые процессоры могут появиться в продаже, а у пользователя может возникнуть желание установить в свою систему новый CPU.

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

Возникает вопрос, а чем чревато самостоятельное обновление прошивки? Ну, во-первых, сначала нужно удостовериться, что вам это действительно необходимо. Если версия прошивки старая, а новых версий BIOS производитель системной платы не предлагает, но, главное, вы столкнулись с нестабильной работой какого-то приложения, и рассчитываете, что изменение микрокода процессора вам поможет. Только в этом случае имеет смысл самостоятельно изменить прошивку. А насчет того, чем это чревато — по-моему, ничем опасным. Во-первых, не стоит забывать, что загрузка обновления микрокода в процессор применяется во всех BIOS на платах для P6 и уже давно (многие видели в Setup загадочную опцию Microcode Update: Enable/Disable). И ничего! Все работает.

Это еще раз подчеркивает необходимость его использования. Кто знает, как бы обстояло дело без этого обновления! Отличие лишь в том, что раньше микрокод обновлялся с установкой новой версии флэша, а теперь можно перепрограммировать не все содержимое BIOS, а лишь ограниченный кусок.

Мой личный опыт работы с этой программой пока был ограничен 7 случаями, из которых удалось обновить микрокод только на одной системной плате (Abit LX6 c PII 233). В остальных случаях BIOS уже содержал обновленные версии микрокода. Также не удалось встретить BIOS, не поддерживающий обновление микрокода.

Что касается аналогичной возможности обновления микрокода в процессорах других производителей (AMD, Cyrix), то никакой информации по этому вопросу мне найти не удалось. Но я почти уверен, что в этих CPU имеется аналогичная возможность изменения микрокода.

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

Сегодня первое апреля, но это просто совпадение. Способ работает и почти ничего не кирпичит.

В BIOS поколения «до UEFI» есть механизм обновления микрокодов без обновления самого BIOS. Работает этот механизм в силу тех или иных причин не всегда, но если он работает, то в общем процедура обновления сводится к загрузке системы со специального внешнего носителя и последующей перезагрузке.

Что важно понимать:

  • Происходит подмена одного микрокда на другой, а не добавление. Т.е. в ситуации с 771 модом мы зачастую получаем потерю поддержки аналогичного Core 2 Quad, т.е. его микрокод подменяется на микрокод Xeon.
  • Если система не стабильна, пользоваться данным способом не рекомендуется, а система с Xeon зачастую не стабильна без микрокодов.
  • Обновить микрокод на старом процессоре нельзя.
  • Программа не оперирует понятием платформы вообще. Т.е. к примеру микрокод для процессора 1067А, версии FA и платформы 0 будет заменен на микрокод для процессора 1067А, версии FС (более новой) и платформы 2. Но при этом микрокод версии FC и платформы 0 не будет заменен на микрокод FC и платформы 2. Программа сообщит что всё уже обновлено.

Так же надо добавить что этот способ практически идеален для обновления модов Feng’а (aka genius239239) до микрокодов версии 2010 года.

И так, для тех кому читать не интересно и у кого есть дисковод (флоппи), предлагается простое решение — пишем (IMA/ZIP, 305kb) на дискету, перезагружаемся и… всё. На экране наверняка будет написано о том что микрокод обновлён и всё хорошо.

Для тех, у кого дисковода нет, но есть флешка, тоже есть путь, но чуть более сложный:

После загрузки ПК с такой флешки, микрокод на любой 45/65нм процессор поколения Core/Core2 обновится. Конечно, если BIOS не UEFI и если плата не злой OEM и так далее… но шанс есть.

Примеры работы программы на одной и той же плате, но с разными версиями BIOS:

    Успешный пример. ASUS P5QVM DO, BIOS 0206:

The microcode update was successfully loaded permanently into the BIOS.
You do not need to run this utility again, unless a new
processor is installed or a new version of the utility is used.

НЕ успешный пример. ASUS P5QVM DO, BIOS 0403:

Database file being used is PEP.DAT
=========================================================================
| Processor Update Utility for Intel(R) P6 and Intel NetBurst(R) |
| Microarchitecture Family of Microprocessors |
| Version 7.14 , 09/ 23 / 2005 , Production |
| Copyright 1995 -2004 , Intel Corporation. |
=========================================================================
The system BIOS supports the microcode update API.
Searching database file for Processor Signature =0001067A Platform ID =1
Attempting to permanently install the microcode update(s) in your system BIOS.

Checking microcode update for processor signature 1067A and platform ID 01:
BIOS microcode update revision = A07
Database microcode update revision = A0B
This utility can load a newer microcode update into the BIOS.
ERROR: Update not permanently loaded into the BIOS. BIOS rejected

Database microcode update revision = A0B

Microcode updates can only be temporarily loaded into processors.
You will need run this utility again after each system power-up or reset.
Processor #2:
Pentium(R) III processor detected.
Processor Signature =0000067A
Processor microcode update revision = A07
Database microcode update revision = A0B
This utility can load a newer microcode update.

Update #1 Processor Signature=1067A Platform Revision=a0b
2 successful load(s) .
All Updates Loaded and Verified!

  1. Старые версии HPUSBFW не работают под Win10, но версия 2.2.3 и более новые без проблем создают загрузочную USB флешку.
  2. Данный способ отлично отрабатывает из-под USB флешки с FreeDOS, созданной средствами RUFUS.
  3. Да, RUFUS’ный FreeDOS не на всех системах загружается, но решение есть, см. п. 1.

Представляю донора BioStar A740G M2L+ (AMD 740G / SB710) и реципиента BioStar A740G M2+ (AMD 740G / SB700). Мат.плата, что с литерой «L», более свежая и поддерживает процессоры AM3 официально, в отличие от другой, что ограничена лишь поддержкой процессоров AM2+. Напрашиваются на сравнительный анализ БИОСы их.
С оф. сайта загружаем лишь последнее обновление прошивки БИОСа для каждой их этих мат.плат:
— для A740G M2+ последняя бэта A74GM916.BSS за сентябрь 2009г.
— для A740G M2L+ — файл 74GCU511.BSS — за май 2010г.

Далее вооружаемся утилитой MMTOOL (я использовал версии 3.22, 3.23 и 3.26 — различий в работе не обнаружил) . Для работы с MMTOOL расширения файлов прошивок БИОС необходимо переименовывать на *.rom.

Теперь запускаем две MMTOOL и в них подгружаем файлы прошивок от двух мат. плат. Обращаем внимание на разные размеры в столбце «Source size» (да и в «Size in Rom» тоже разумеется) модуля 11 «P6 Micro Code» в каждой из прошивок.

Переходим в раздел CPU PATCH для детального сравнения:

Файл донора 74GCU511.rom — cpu_list содержит 14 строк с поддержкой CPURev.ID + 1 пустая (рис.1).

Бэта-версия реципиента A74GM916.rom — cpu_list содержит 13 строк с поддержкой CPURev.ID + 1 пустая (рис.2).

После анализа списков этих двух БИОСов становится очевидно, что для более новой мат.платы разработчики использовали более свежие патчи для процессоров AMD, где подправлен микрокод двух строк с CPURev.ID 1043 и 1062 (датируются 2009/07/31) и одна строка с CPURev.ID 10A0 добавлена (датируется 2010/02/17).

Способ №1 — модификация отличительных строк.

Предварительно в в разделе CPU PATCH файла реципиента A74GM916.rom удаляются две строк с номерами CPURev.ID 1043 и 1062 (чей микрокод более старый чем мы будем далее вставлять) и последняя пустая строка — действия «Delete a Patch Data» + «Apply» (рис.3).

После этого поочерёдно вставляется более новый микрокод из четырёх уже ранее полученных файликов-патчей для CPURev.ID 1043, 1062, 10A0 и пустая строка (рис.4).

Обращаем внимание на размеры («Source size» и «Size in Rom») модуля 11 «P6 Micro Code» до и после применения данных изменений в файле реципиента.
После применения эти размеры у реципиента (рис.6) станут идентичны размерам такого же модуля в файле-доноре 74GCU511.rom (рис.5).
Стоит заметить, что несложно понять, как формируется размер модуля (каждая строка, что в разделе CPU PATCH, занимает по 2048 байт).

Сохранять изменения лучше под новым именем файла.
Далее этот файл проверяется, чтобы по новой без ошибок открывался MMTOOL.

Способ №2 — модификация заменой модуля целиком.

В MMTOOL подкружаем файл донора 74GCU511.rom, переходим во вкладку «Extract» и ищем строку «P6 Micro Code». Затем выделяем её, в поле «module file» задаем ему имя ncpucode.bin и выполняем Extract module «in uncompressed form».

Теперь в MMTOOL подгружаем файл реципиента A74GM916.rom, переходим во вкладку «Replace» и снова ищем строку «P6 Micro Code». Выделяем её, ждём Browse и выбираем наш донорский модуль ncpucode.bin. Жмём Replase и далее соглашаемся на замену данного модуля.

Снова обращаем внимание на размеры («Source size» и «Size in Rom») модуля 11 «P6 Micro Code» до и после замены данного модуля в файле реципиента.
После применения эти размеры у реципиента (рис.7) станут идентичны размерам такого же модуля в файле-доноре 74GCU511.rom (рис.5).

Если сравнить результаты обоих способов (рис.6 и рис.7), то заметна разница в 10байт в адресе RomLoc модуля «User Defined or Reserved», следующего за обновляемым модулем «P6 Micro Code» — возможно, это особенности работы MMTOOL.

Заключение и послесловие.

При комбинировании собственного ncpucode.bin импортированием необходимых патчей(микрокодов) для каждой необходимой ревизии процессоров в качестве лабораторного можно использовать абсолютно любую прошивку AMI биос с модулем «P6 Micro Code».

Однако при сохранении файла прошивки была замечена неприятная особенность MMTOOL — утилита почему-то прибавляла 8 нулевых байт в конец модуля «P6 Micro Code» — он получался размером 32776 байт. При извлечении тем же MMTOOL из лабораторной прошивки файл ncpucode.bin также становился на выходе размером 32776 байт.
Можно сие отредактировать простыми доступными всем редакторами. Но я также (случайно) обнаружил альтернативный способ: при извлечении универсальной утилитой BIOS_EXT.EXE всех модулей из лабораторной прошивки файл ncpucode.bin уже получался правильного размера 32768 байт — утилита BIOS_EXT.EXE сама правильно определила конец модуля «P6 Micro Code» при сохранении его в файл.

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

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

В качестве компромисного я выбрал следующее решение — берем последние версии микрокодов для всех процессоров поколения CORE во всех конструктивах (Celeron E, Pentium E, Core 2 Duo, Core 2 Quad, Xeon *3xxx/*5xxx) и подменяем ими всё что было до того. Набор микрокодов получился следующий:

Объём этого набора — всего 76 килобайт. Данный файл получился путём объединения этих файлов:

cpu00010676_plat00000001_ver0000060f_date20100929.bin
cpu00010676_plat00000004_ver0000060f_date20100929.bin
cpu00010676_plat00000010_ver0000060f_date20100929.bin
cpu00010676_plat00000040_ver0000060f_date20100929.bin
cpu00010677_plat00000010_ver0000070a_date20100929.bin
cpu0001067a_plat00000011_ver00000a0b_date20100928.bin
cpu0001067a_plat00000044_ver00000a0b_date20100928.bin
cpu000006f2_plat00000001_ver0000005d_date20101002.bin
cpu000006f6_plat00000001_ver000000d0_date20100930.bin
cpu000006f6_plat00000004_ver000000d2_date20101001.bin
cpu000006f7_plat00000010_ver0000006a_date20101002.bin
cpu000006f7_plat00000040_ver0000006b_date20101002.bin
cpu000006fb_plat00000001_ver000000ba_date20101003.bin
cpu000006fb_plat00000004_ver000000bc_date20101003.bin
cpu000006fb_plat00000010_ver000000ba_date20101003.bin
cpu000006fb_plat00000040_ver000000bc_date20101003.bin
cpu000006fd_plat00000001_ver000000a4_date20101002.bin

Сама процедура модификации тоже немного изменилась и стала если не проще, то быстрее:

Шаг 1 — открываем образ BIOS в программе MMTool:

Шаг 2 — для проверки переходим на последнюю вкладку (CPU PATCH) и смотрим количество микрокодов. Здесь их к примеру 31 штука:

Шаг 3 — переходим на вкладку Replace и ищем на ней пункт «P6 Micro Code»:

Шаг 4 — выбрав пункт «P6 Micro Code» жмём кнопку Икщцыу, выбираем файл ncpucode.bin, описанный выше и заменяем его кнопкой Replace:

Шаг 5 — для проверки переходим на последнюю вкладку (CPU PATCH) и смотрим количество микрокодов. После подмены микрокодов осталось 17, версия самая последняя:

Фундаментальной разницы с порядком модификации, описанным на delidded.com нет. В большинстве случаев на выходе получается конечно не то же самое, но процессор получает нужный микрокод. Из субъективных положительных моментов я хотел бы обратить внимание лишь на то, что гарантированно обновляются микрокоды на все актуальные процессоры, будь то «гражданские» или «серверные», а так же практически нет риска получить сообщение о нехватке места. Хотя, в моей практике даже на такой набор микрокодов пару раз места не хватало, это было с BIOS для плат ECS P4M900T-M и ECS P4M900T-M2, которые в общем совместимы с Xeon E5450.

По традиции публикую ссылку на архив с инструментами — (zip, 234KB). Архив содержит исполняемый файл MMTOL.exe (версия 3.22 BKMOD), файл с микрокодами на все 45/65nm процессоры поколения core/xeon ncpucode.bin , а так же два файла 45nm.bin и 65nm.bin с микрокодами только на 45nm процессоры и только на 65нм. Использование этих файлов может быть полезным в тех случаях когда необходимо освободить дополнительный объём в BIOS, например, для новой firmware какого-то контроллера, сетевого, дискового и пр.

!NB : Ни в файле ncpucode.bin, ни в файлах 45nm.bin/65nm.bin нет поддержки процессоров Pentium 4, Celeron (без буквенных индексов), Pentium D, Celeron D и Xeon W (Xeon 5080 например). Это процессоры поколения NetBrust.

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

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

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

  • Установка пакета программного обеспечения с микрокодами может привести к нестабильной работе компьютера. По этой причине следует устанавливать данный пакет лишь тогда, когда наблюдаются какие-либо проблемы, связанные с функционированием центрального процессора вашего компьютера!
  • Не устанавливайте пакет программного обеспечения с микрокодами центральных процессоров в том случае, если он выпущен раньше, чем прошивка BIOS/UEFI материнской платы вашего компьютера!

1. Центральные процессоры производства компании Intel

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

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

Менеджер пакетов Synaptic Software

Менеджер пакетов Synaptic «Поиск на компьютере» ), ввести запрос «Synaptic» «Менеджер пакетов Synaptic» Менеджера пакетов Synaptic «Поиск» «microcode» и нажать кнопку «Поиск» рядом с ним.

3.201501106.1 (в данном случае версия 3 пакета была создана 6 ноября 2015 года).

« intel-microcode» и нажать кнопку «Применить»

dmesg | grep microcode

2. Центральные процессоры производства компании AMD

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

Примечание: вам нужен пакет программного обеспечения с микрокодами центральных процессоров производства компании AMD, более новый, чем тот, что находится в официальном репозитории дистрибутива? В этом случае вы можете загрузить файл пакета программного обеспечения с расширением .deb из репозитория дистрибутива Debian , в который помещаются пакеты новейших версий. После окончания загрузки файла пакета следует найти его с помощью менеджера файлов и использовать двойной клик для установки микрокодов в систему. По окончании установки необходимо перезагрузить компьютер.

A. В случае использования дистрибутива Ubuntu вам придется установить Менеджер пакетов Synaptic (это можно сделать с помощью приложения Software ). В Linux Mint данный менеджер пакетов присутствует сразу же после установки.

B. В первую очередь следует запустить Менеджер пакетов Synaptic . В дистрибутиве Ubuntu для этой цели следует нажать на белый логотип Ubuntu в верхней части боковой панели («Поиск на компьютере» ), ввести запрос «Synaptic» и выбрать первый из предложенных вариантов приложений «Менеджер пакетов Synaptic» . Не нужно использовать поле быстрого поиска пакетов программного обеспечения главного окна Менеджера пакетов Synaptic , так как соответствующий механизм ненадежен; вместо этого следует нажать кнопку «Поиск» на панели инструментов, в поле поиска открывшегося диалогового окна ввести запрос «amd64-microcode» и нажать кнопку «Поиск» рядом с ним.

C. Теперь следует проверить дату создания пакета программного обеспечения с микрокодами центральных процессоров: этот пакет должен быть создан позднее, чем прошивка BIOS/UEFI материнской платы вашего компьютера! Дата создания рассматриваемого пакета отражена в его номере версии, например 2.20160316.1 (в данном случае версия 2 пакета была создана 2 марта 2016 года).

D. Пришло время установить флажок напротив названия пакета программного обеспечения «amd64-microcode» и нажать кнопку «Применить» на панели инструментов приложения.

E. После завершения установки пакета программного обеспечения нужно перезагрузить компьютер.

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

dmesg | grep microcode

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

Хотите узнать о других настройках и приемах работы с Linux-системами? На данном веб-сайте размещено большое количество подобных материалов.

Источник

Читайте также:  Способы защиты от увлажнения фундаментов
Оцените статью
Разные способы