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

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

Введение

Не секрет, что цель любого коммерческого производителя, в том числе и производителя системных плат — извлечение прибыли. Извлечение прибыли, в современном мире заключается сегодня, прежде всего, в умении продать фактически один и тот же продукт несколько раз, несущественно изменив его характеристики.
А вопрос качества?, — спросите Вы? Ведь есть именитые бренды, которые разрабатывают и продают исключительно надежные продукты — например материнские платы с твердотельными конденсаторами, пятилетней, а то и «пожизненной» гарантией и т.п. А тут все обстоит еще проще. Можно разработать отличный продукт со сроком эксплуатации, допустим, не менее 10 лет и ограничить срок его фактической поддержки пятью годами.

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

Итак, лично я столкнулся с ситуацией, когда у меня есть исключительно качественный продукт — системная плата ASUS Sabertooth R.1.01, поддерживающая практически все современные CPU AMD для сокета «AM3+». Ключевое слово тут — «практически», поскольку по факту эта системная плата официально не поддерживает новейшие, в том числе «энергоэффективные» центральные процессоры AMD FX — типа AMD FX-8370, AMD FX-8370E и AMD FX-8320E, не говоря о центральных процессорах 9 серии (AMD FX-9580, AMD FX-9370).

Сейчас у меня стоит AMD Phenom X6@3,7 Ghz (без поднятия напряжения на ядре), которого хватает на все с избытком. И я его не менял бы еще 5 лет.
Текущий CPU

Проблема в том, что начинает появляться софт, который требует наличие в CPU новейших инструкций — SSE4, SSE4.1, SSE4.2. SSSE3, которых в нем, увы, нет, но они есть в CPU серии FX.

Примером является новейшая игра «Мафия -3», официального патча к которой, позволяющего ей работать на «старых» Phenom и Athlon, без поддержки вышеуказанных инструкций нет и не предвидится. И дальше будет больше таких программ — прогресс не стоит на месте, а замена моего текущего CPU на более современный — продлит жизнь моему ПК и даже «осовременит» его.

Ну и что, скажете Вы, хочешь воткнуть FX — их для тебя и так куча, тем более покупка FX 9 серии — деньги на ветер, а тебе хватит и какого ни будь FX 8300 под разгон. Зачем заморачиваться?

Отвечаю, я бы и не заморачивался, если бы на дворе не был кризис (который как бы уже и преодолен, конечно, но пока это не всем заметно, в том числе и мне) и цены на компьютерные комплектующие были бы, как в 2013 г., а зарплаты росли. Однако увы и ах, в наших краях цены отнюдь не московские и по состоянию на 07.01.2017 покупка процессора AMD FX-8300/8320 самых дешевых 4-х модульников FX, к примеру, обойдется в 10 799 рублей, а последнего из официально поддерживаемых — AMD FX-8350 в 13 799 руб., при этом гораздо более холодный, а значит и потенциально «разгоняемый» процессор AMD FX-8320E стоит 7 499 руб. что составляет 69% стоимости FX 8300/8320 или 54% стоимости бывшего топа 8 серии — AMD FX-8350. Согласитесь, разница в стоимости существенна, и теоретическую разницу в цене между этими процессорами вполне себе можно вложить в покупку более производительной видеокарты, если Вы не чураетесь играть иногда, а таких людей много, сам на «танчиках» три года просидел...

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

Нет, когда-то в 11 классе в 1993 г. я что-то там на BASIC`е программировал — типа решение систем линейных уравнений методом Гаусса, но я тогда не понимал что такое «массивы» и как с ними работать, а верхом моего программерского искусства был какой-то психологический тест — где ума чтобы использовать простейшие команды по подсчету итоговых баллов и вывода результата на экран требовалось немного.

Однако — задача возникла и понадобилось ее решить с тем уровнем знаний, который есть. Приступим?

1. Поиск нужного раздела конференции сайта overclockers.ru получение инструкции и благодарности

Начнем с благодарностей. Я написал просьбу о помощи и оперативно получил ответ от DeathBringer, судя по дате регистрации — одному из старейших участников конференции, за что ему ОГРОМНАЯ благодарность!

Собственно говоря, я не стану утомлять Вас рассказом, как пользоваться поисковиками типа Yandex или Google. Забиваем запрос, читаем доступную информацию и в итоге находим искомое — ветку форума overclockers.ru — Модификация AMI Aptio UEFI биосов. Софт для работы. Обновление Option ROM и EFI модулей. Читаем, понимаем, мягко говоря не все.

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

Во всех случаях замена старого микрокода подразумевает его поиск в теле BIOS и замену новым.

В FAQ`е в первом сообщении ветки есть набор программ для модификации BIOS. Из них качаем «MC Extractor: Intel, AMD & VIA Microcode Extraction Tool», UEFITool.

Кроме того, нам понадобится 16-ричный редакторе, например HxD.

Теперь инструкции:

— по замене микрокода:

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

— по работе с 16-ричным редактором.

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

Дополнение к инструкции:

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

2. Приступаем к модификации UEFI BIOS

Итак, первым делом наша задача найти донора и реципиента BIOS. Для этого, ничтоже сумняшеся идем на официальный сайт ASUS, где качаем реципиента — последний немодифицированный BIOS на системную плату SABERTOOTH-990FX R.1.01, в моем случае — это версия 1604 от 16.10.2012.

Вторым делом качаем донора — BIOS, заведомо содержащий обновленный микрокод. В моем случае это BIOS к SABERTOOTH-990FX R.3.0, в моем случае это версия 0212 от 28.07.2016. Если у какого то из BIOS расширение не «.ROM», а иное («.CAP», в моем случае) — меняем его на «.ROM» переименовав файл.

Извлекаем микрокоды.

Теперь, с помощью программы MC Extractor извлекаем микрокод из BIOS`а реципиента (того, который будем модифицировать) и BIOS`а донора (того из которого будем брать микрокод).
Для этого закидываем оба BIOS`а в папку с программой, запускаем исполняемый файл MCE и получаем окно с командной строкой. В этом окне вбиваем название файла BIOS и жмем ENTER.
Извлекаем микрокоды

В итоге в папке с программой создается папка MC_Extract, внутри которой еще одна папка, в моем случае с названием AMD. Переименовываем ее сразу. Я ее переименовал в AMD 1604 (по названию реципиента).
Теперь, точно также извлекаем микрокод из BIOS`а донора. Также пишем его название, папку также надо будет переименовать, но можно и позже. Впоследствии я ее назвал AMD R.3 (по названию современной версии системной платы). А на момент модификации она так и называлась «AMD».
Итак, у нас появились две папки с микрокодами. Сравниваем их:
Сравниваем извлеченные из разных BIOS микрокоды

Невооруженным глазом видно, что разница в микрокодах заключается в двух файлах (все название писать не стану, укажу первые символы и версию):
— CPU00600_F12***09-07-2012 и CPU00600_F12***06-03-2013
— CPU00600_F20***11-07-2012 и CPU00600_F12***03-01-2013

Таким образом, в моем случае надо вшить в старый BIOS два файла с микрокодами — F12 и F20 версий 2013 года. Как это сделать?

Работаем с UEFITool и XEX редактором

Запускаем UEFITool. Открываем в нем BIOS-реципиент — в данном случае SABERTOOTH-990FX-ASUS-1604.ROM.
Теперь с помощью поиска находим то, что указано в инструкции — модуль с GUID равным DE3E049C-A218-4891-8658-5FC0FA84C788 — AmdProcessorInitPeim.
Почему именно этот модуль Я НЕ ЗНАЮ!!! Тот кто решится повторить мой эксперимент по модификации BIOS должен либо знать, какой модуль искать, либо обратиться в ветку форума с просьбой подсказать, что искать.

Далее правой кнопкой мыши на названии модуля DE3E049C-A218-4891-8658-5FC0FA84C788 щелкаем и выбираем Extract Body и сохраняем в выбранную папку. Расширение у файла выставляем «.BIN». Щелкаем именно на полном названии модуля! Именно в полном «теле» содержатся все микрокоды.
Сохраняем "тело" для дальнейшей модификации

Далее открываем в XEX редакторе извлеченное «тело». В нем же открываем для сравнения все (в данном случае 4 (четыре) файла с микрокодами. Сначала два F12 разных версий, потом F20.
Открываем в XeX редакторе "тело" и файлы с микрокодами старым и обновленным

Теперь ВЫДЕЛЯЕМ мышью или Shift + стрелки весь текст в устаревшей версии микрокода, копируем его и вставляем в поисковую строку (выбираем «шестнадцатиричные значения»). Жмем «найти».

В теле выделяется кусок кода. Этот кусок кода нам необходимо заменить на свежий микрокод, открытый в этой же программе. Для этого переходим на соответствующую вкладку, выделяем его, переходим в вкладку с «телом» и вставляем с заменой (замененный код становится красным).
Заменяем микрокод в "теле" BIOS

Теперь аналогично находим и заменяем второй микрокод — F20. Ранее открытые вкладки с микрокодами F12 можно закрыть, открыв F20.

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

Далее в меню выбираем «сохранить как» и сохраняем файл с иным названием — например body1.bin

Теперь сравниваем старое и новое «тело». Тела должны ПОЛНОСТЬЮ СОВПАДАТЬ ПО ОБЪЕМУ ДАННЫХ!!!
Сравниваем старое и модифицированное тела

Заменяем тело со старым микрокодом на тело новым микрокодом

Переходим в так и открытую UEFITool, щелкаем правой кнопкой на том же модуле DE3E049C-A218-4891-8658-5FC0FA84C788 и выбираем Replace Body, указываем модифицированное тело, он автоматически его заменяет, затем сохраняем модифицированный BIOS. Я его сохранил с названием «SABERTOOTH-990FX-ASUS-1604_modity1.ROM».

Меняем "тело" на модифицированное в BIOS

Заключительная проверка

Заключительная проверка у нас будет состоять из двух этапов. На первом этапе мы сравниваем объем немодифицированного и модифицированного файлов BIOS. На втором с помощью программы MC Extractor, «для успокоения совести», извлекаем микрокод из модифицированного BIOS. Если он совпадет с тем, что есть в донорском BIOS`е то у нас все удалось и осталось только прошить его в материнскую плату.

Сравниваем старый и модифицированный BIOS`ы

Сравниваем извлеченные из модифицированного BIOS с извлеченными из донорского BIOS

Заключение

Собственно говоря, теперь, модифицированный BIOS можно прошивать в материнскую плату. Чем я и займусь, после того, как куплю новый CPU, серии AMD FX. Все желающие же, могут самостоятельно попробовать прошить модифицированный мною BIOS, НА СВОЙ СТРАХ И РИСК.

Однако вопрос не в этом, многие ждут не дождутся анонса новейших центральных процессоров AMD — Ryzen и скажут — может есть просто есть смысл немного подождать и сменить платформу, купив новую материнскую плату, память стандарта DDR-4 и наслаждаться существенно возросшей производительностью (по крайней мере на это «намекают» представители AMD).
С учетом современных цен, апгрейд матплаты, оперативной памяти и видеокарты ПК обошелся бы мне примерно в 40-50 килорублей для реально быстрого ПК, близкого к топовому и в 30-35 для крепкого «середнячка», которого хватит спокойно еще на 3-4 года.

Отвечу. Был бы я молодым бессемейным человеком — классическим «задротом», живущим в ПК, так бы и сделал. Но жизнь, к счастью, не ограничивается исключительно компьютерами, да и деньги есть на что потратить, кроме них — одна коммуналка зимой больше 10к выходит, а еще надо есть, одеваться, учить детей и т.п.

Итого, просто заменив CPU мы продлим жизнь моего ПК еще на 2-3 года. Если при этом еще и заменим видеокарту на современную — срок его жизни вырастет до 3-5 лет и встанет это все в сумму примерно равную 20-25 килорублей.
А теперь, сравним расходы — в первом случае нам надо потратить 35 килорублей на апгрейд на 3 года, во втором — 25 килорублей. Как Вам кажется есть разница? На мой взгляд есть.

Ссылка на модифицированный мною биос.

Спасибо всем, кто прочитал статью, с уважением — Freevad!

P.S. Работа с Персональными страницами превратилась в тихий ужас. В Мозилле не смог войти, в опере — не работала вставка картинок и прочие мелочи. В итоге, вставил изображения из Яндекс-фоток. Они криво отображаются, но работают, более того — кликабельны.

P.P.S. — рискнул перепрошить свою материнскую плату (в запасе все равно есть еще однаGA-MA785GT UD3H), все получилось — все запустилось и работает, однако проверить поддержку новых ЦП не могу за отсутствием таковых.
1 комментарий
класс, молоток, по больше такого материала надо.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.