Перепрошивка BIOS на картах AMD (для новичков к изучению!). Модифицируем BIOS

  • Tutorial

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

Вступление, отказ от ответственности

Прошивка UEFI BIOS на современных платах, несмотря на наличие различных технологий вроде USB BIOS Flashback, Dual BIOS, Flash Recovery и т.п. - все равно лотерея. Прошивка же модифицированных образов - лотерея вдвойне.
Именно поэтому я прошу до начала любых экспериментов с прошивкой сделать при помощи аппаратного SPI-программатора полный дамп содержимого микросхемы, иначе восстановление после неудачной прошивки (а она рано или поздно случится) будет долгим, дорогим и болезненным.
SPI-программатор в данный момент может быть собран в домашних условиях из чего угодно, от пары резисторов и конденсаторов (SPIPGM) до Arduino или Raspberry Pi . Мой вариант дешевого и быстрого SPI-программатора описан . Любителям вытравить пару-тройку плат советую обратить внимание на этот проект , а почитателям устройств «все-в-одном» - на этот .
Далее по тексту я полагаю, что у вас есть программатор, возможность восстановления после сбоя прошивки и готовность к экспериментам. Безумству храбрых, конечно, тоже можно петь песни, но не говорите потом, что я не предупреждал.
Традиционно, все, что вы тут сейчас прочитаете, написано в образовательных целях, автор не несет ответственности за возможную порчу вашего оборудования, недополученную прибыль, потерю времени и веры в человечество, вы пользуетесь предоставленным софтом на свой страх и риск и так далее.

UEFITool

Устав от ограничений существующих утилит для работы с образами UEFI (ну и пораженный синдромом NIH в самое сердце), я написал кроссплатформенную утилиту с открытым исходным кодом - UEFITool .
Это редактор образов UEFI, написан на C++\Qt, распространяется под лицензией BSD, готовые сборки выкладываются сюда .
Проект находится в активной разработке, поэтому код не блещет красотой и баги нет-нет, да попадаются. Если вдруг наткнетесь - буду рад репортам.
Для нормальной работы с утилитой стоит прочитать предыдущие статьи о структуре образа UEFI, иначе непонятно будет, что вообще происходит, но я постараюсь все же пояснить некоторые моменты. Будем считать, что это заготовка для будущей документации.
В качестве примеров в обеих частях статьи я буду использовать полные дампы с Zotac Z77-ITX WiFi (AMI Aptio4) и Dell Vostro 3360 (Phoenix SCT 2.3). К сожалению, у меня нет тестового стенда на платформе Insyde H2O, поэтому рассказать о ней мне нечего. Возможно, знает о них немного больше.
С точки зрения UEFITool"а разницы между образами UEFI разных производителей практически нет, поэтому я остановлюсь на ней при описании патчей.
Итак, запускаем UEFITool, открываем образ (Ctrl+O) и видим примерно такое:

В левой части окна отображается структура открытого образа в виде дерева, справа - информация о выбранном элементе дерева, снизу - сообщения, указывающие на ошибки в формате файла, в данном случае - использование разработчиками Phoenix секций с типом 0xF0, назначение которых не описано в спецификации UEFI PI . Двойной щелчок по сообщению раскроет дерево так, чтобы был виден либо на сам элемент, который это сообщение вызвал, либо его родительский элемент. В это же окно выводятся результаты поиска, который можно вызвать нажатием Ctrl+F (оба варианта одной картинкой):



Здесь следует немного пояснить терминологию. Практически все структурные элементы в образе UEFI имеют заголовок, в котором хранятся служебные данные вроде GUID, атрибутов, контрольных сумм и т.п., и тело - в нем хранятся собственно данные. Текст же в заголовках не хранится, поэтому для него такой выбор не нужен.
На первом уровне дерева находятся Flash-регионы, в данном случае это Descriptor, ME и BIOS:



При выборе региона Descriptor можно узнать настройки доступа к регионам, в данном случае доступ полный, но такие настройки встречаются очень редко. Intel рекомендует производителям оборудования закрывать доступ к региону МЕ на чтение/запись и региону Descriptor на запись, именно поэтому на большинстве плат встроенными средствами полный дамп снять без «танцев с бубном» практически невозможно. При выборе региона ME можно узнать версию ME firmware, если же она не отображается - это не к добру и такой образ лучше не шить.
Перейдем еще на уровень ниже, к содержимому региона BIOS:



На этом уровне могут встречаться два типа элементов: тома и свободное место. Свободное в данном случае - не обязательно пустое, к примеру, в этом образе в самом начале Padding"а хранится прошивка EC .
Тома делятся на обыкновенные (формат файловой системы известен), загрузочные (формат ФС известен, содержат Security Core, изменять стоит с особой осторожностью) и неизвестные (либо неизвестен формат ФС, либо разбор еще не реализован). В нашем случае первый том после свободного пространства в начале - обычный, затем два неизвестных (на самом деле, в первом хранится NVRAM, а во втором - ключи и БД для SecureBoot, но программе я это пока еще не объяснил), последний том является загрузочным.
Откроем теперь обычный том, в данном случае в нем хранятся файлы, загружаемые в фазе DXE.



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



Все данные в нем хранятся внутри GUID-defined-секции (в заголовке таких секций обычно хранится ЭЦП или контрольная сумма, в данном случае - 4 байта, похожие на КС, которую, однако, никто не проверяет), и делятся на 4 секции: образ PE32 - собственно исполняемый файл в формате PE/COFF, секция зависимостей DXE - определяет порядок загрузки DXE-драйверов, секция UI - в ней хранится текст «SystemCapsuleRt.efi» в формате Unicode и неизвестная секция типа 0xF0 (скорее всего, её содержимое каким-то образом связано с вышеупомянутой КС).
Все это хорошо, конечно, но редактирования пока не видно. Не беда, вызываем для любого элемента контекстное меню, в котором видно, что с этим элементом можно сделать.



А сделать можно следующее:

  • сохранить элемент в файл либо целиком (Extract as is), либо только данные, без заголовков (Extract body)
  • пересобрать элемент (Rebuild), в этом случае при сохранении измененного образа для него (и всех его родительских элементов) будут пересчитаны размеры, контрольные суммы, исправлено выравнивание, т.е. структура образа будет приведена в соответствие со спецификацией UEFI PI
  • вставить элемент из файла, либо перед выбранным (Insert before), либо после (Insert after), либо внутрь него (Insert into, в данном случае внутрь PE32-секции ничего вставить не получится)
  • заменить элемент на другой элемент из файла, либо целиком (Replace as is), либо только его тело (Replace body)
Последнее действие является наиболее полезным, т.к. позволяет произвести модификацию какой-либо части UEFI, не затрагивая при этом структуры всего образа.

Пример использования

Рассмотрим в качестве примера полезную для пользователей MacOS X на ПК модификацию: обход установки бита LOCK (0x0F) в регистре MSR_PMG_CST_CONFIG_CONTROL (0xE2). Бит этот устанавливается DXE-драйвером PowerManagement, чтобы ОС не могла управлять множителем CPU путем записи в этот регистр. Для Windows и Linux это не большая проблема, а вот MacOS X не может стерпеть от UEFI такой наглости. Можно, конечно, пропатчить драйвер AICPM.kext (в 10.8) или ядро (в 10.9), но лучше пропатчить DXE-драйвер и не бояться, что очередное автоматическое обновление сломает загрузку. Патч этот нужен только системам на базе процессоров Intel SandyBridge, IvyBridge и Haswell и их *-E вариантов и делается так:



Прошиваем полученный образ тем же SPI-программатором, которым он был сделан, и получаем отсутствие паники ядра при загрузке MacOS X.

Подробности, другие модификации, заключение

Если вам интересно, откуда взялся магический паттерн «75080FBAE80F» и на какие еще патчи стоит обратить внимание - читайте вторую часть этой статьи, которая будет опубликована немного позже. В ней я постараюсь подготовить побольше примеров в формате «что за модификация, зачем нужна, как сделать, кем и как была найдена», не углубляясь каждый раз в то, как именно вынуть подлежащий модификации элемент и как вставить его обратно.
Надеюсь, что статья не показалась слишком скучной и нудной. Если у вас есть вопросы и предложения - буду рад выслушать и ответить по мере сил. Баг-репортам буду рад еще больше. Спасибо заранее и удачных прошивок.

P.S. Уважаемая администрация и лично НЛО, сделайте для таких вот постов хаб UEFI, пожалуйста.

Сказано уже многократно, а совет до сих пор не теряет актуальность: «Десять раз подумай, прежде чем обновлять BIOS». Но психология бессильна против жажды к новому. Особенно в тех ситуациях, когда требуется получить скры­тый по­тен­ци­ал , заложенный производителем в компьютер.

Преграды и препятствия на пути к поставленной цели не помеха! Если не получается «по науке », на помощь придет выдумка. Так, в ситуации, когда AMIBCP не справляется с редактированием образа BIOS, с помощью обходных ма­нев­ров можно достичь ус­пеш­но­го результата.

Flash Images Tool

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

На первую часть вопроса следует заранее приготовленый упреждающий ответ: сегодня мы поговорим о Flash Images Tool - программном продукте для работы с образом, хранящимся во Flash ROM системной платы. Здесь и далее мы будем ользоваться следующими терминами:

  • Образ Flash ROM - бинарный файл, который может быть записан в или считан из запоминающего устройства (сегодня это, как правило, микросхемы SPI) на борту персональной платформы. Его содержимое гарантирует полноценную работу компьютера, в первую очередь потому что в составе образа флешки имеется регион, где хранится BIOS системной платы. Подробное описание ркгионов Flash Image доступно в документе «System Tools User Guide for Intel® Management Engine Firmware 6.0 ».
  • Образ BIOS для микросхемы Flash ROM - бинарный код, входящий в состав образа Flash ROM. Будучи из него извлеченным, этот двоичный код может быть сохранен в файл, который следует называть файлом BIOS, с которым в свою очередь возможны манипуляции с помощью утилиты AMIBCP. Из этого следует, что утилита AMIBCP работу с образом флешки не поддерживает, а позволяет манипулировать только образом AMIBIOS , в чем можно убедиться прочитав статью «AMIBCP и современные версии AMIBIOS ».

Теперь совершенно очевидно, что преимущество Flash Images Tool перед AMIBCP состоит в "умении" работать с образом флешки. Это - заслуга разработчика, компании .

Запуск утилиты FTool

Рабочей директорией для утилиты Flash Images Tool, сокращенно и в дальнейшем - FTool, выберем каталог d:/amibcp. Запуская утилиту впервые без сопровождающего ее, как обычно, файла untitled.xml , пользователь предупреждается сообщением LoadX ml Config : Fail to load the XML configuration file “untitled.xml” , а в протокол ftool.log вносится сообщение Loaded default configuration .


После установки конфигурационных параметров по умолчанию утилита готова к работе, и мы можем убедиться в этом, обратившись за справкой к опции About Flash Image Tool…


Прежде, чем приступать к редактированию образа BIOS для микросхемы Flash ROM, необходимо установить параметры окружения утилиты:


Если требуется разместить результаты работы утилиты FTtool не в директории d:\amibcp\Build, следует откорректировать поле $DestDir в меню Environment Variables надлежащим образом.

Следующим шагом на пути к достижению результата должна быть загрузка файла с исходным образом BIOS. В нашем случае - это файл amibios.rom , размером в четыре мегабайта.


Попытка загрузить первый попавшийся файл (например, любимую мелодию в MP3-м формате) не увенчается успехом, потому что FTool анализирует структуру Flash-образа. В случае ошибки выполнение утилиты прекращается сообщением Unrecognized binary format!

Успешная загрузка приводит к тому, что утилита FTool создает директорию amibios (с тем же именем, что и образ для чипа флеш-памяти) и помещает туда результаты его декомпозиции:


Содержимое amibios.rom в виде отдельных файлов с расширением *.bin , одноименных регионам, хранящимся во Flash Images, помещается в директорию Decomp , расположенную внутри директории amibios .

Итоги декомпозиции образа BIOS для Flash ROM можно посмотреть в файле amibios_MAP.txt :


Доступ к содержимому, т.е. ко всем регионам и партициям (разделам) файла amibios.rom , перечисленным в столбце Area Name, предоставляет интерфейс FTool. Нас для дальнейшей работы с кодом BIOS будет интересовать его распакованный образ, который доступен по адресу d:\amibcp\amibios\Decomp\ в виде файла BIOS Region.bin . Именно этот файл требуется утилите AMIBCP для модификации параметров CMOS Setup и управления некоторыми другими функциями BIOS.

P.S.

Сайт «Новые технологии»,
специально для Компостера.

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

Вступление и подготовка
В этой статье пойдет речь о том, как перепрошить BIOS в видеокартах от AMD. Для процедуры перепрошивки видеокарты вам понадобится утилита ATI Winflash.

Рекомендуется перед прошивкой BIOS"a видеокарты отключить её в Windows. Для этого нужно открыть "Диспетчер устройств ", и в пункте "Видеоадаптеры " выбрать нужный, нажать на нем правой кнопкой мыши и выбрать пункт "Отключить ".

Перепрошивка через графический интерфейс
Запускаем с правами администратора ATIWinflash. Убеждаемся, что выбран нужный вам видеоадаптер.

Вот так программа ATIWinflash показывает одну единственную видеокарту.

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

Если в системе четыре видеокарты и больше, то в программе ATIWinflash видно их только три, четвертая попросту не помещается в экран программы ATIWinflash.

Выбрав нужную видеокарту, нажимаем на кнопку "Load image", и выбираем файл BIOS"a, которым хотим прошить видеокарту.

И после этого нажимаем на кнопку "Program".

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

И затем уже появится предложение о перезагрузке, необходимое для работы видеокарты с новым BIOS"ом.

Если после перезагрузки ваша видеокарта определяется в Диспетчере устройств, но отказывается работать, то это может быть из-за блокировки пользовательских BIOS"ов драйверами AMD.

Перепрошивка через командную строку
Наиболее полезные команды ATIFlash:

  • atiflash.exe -i - покажет список установленных в системе AMD видеокарт. Полезно для того, чтобы перепрошить BIOS на какой-то определенной видеокарте.
  • atiflash.exe -p <номер видеокарты> <имя файла> - перепрошить видеокарту с указанным номером BIOS"ом из указанного файла.
  • atiflash.exe -pa <имя файла> - перепрошить на ВСЕ видеокарты указанным файлом BIOS"a.
Примеры использования:

После ввода команды для прошивки BIOS"a терпеливо ждем завершения процедуры. По её завершению программа выдаст следующее сообщение в командной строке:

Restart System To Complete VBIOS Update.

Что подразумевает, что для окончания обновления BIOS"a видеокарты нужно перезагрузить компьютер. После перезагрузки можно считать процедуру перепрошивки BIOS"a завершенной.

Известные проблемы и ошибки

  • При обновлении BIOS"a видеокарты компьютер или система зависают.
    При обновлении BIOS"a видеокарты рекомендуется отключать видеокарту через "Диспетчер устройств". О том, как это сделать написано в самом начале статьи.
  • После обновления BIOS"a и перезагрузки, видеокарта отображается в системе, но не работает, (код 43)
    Скорее всего проблема в том, что установлены новые драйвера AMD, которые блокируют работу видеокарт с не подписанным BIOS"ом.

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

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

Что такое BIOS

BIOS (Basic Input/Output System) - это базовая система ввода­вывода. Точнее, BIOS представляет собой систему настройки и управления памятью, процессором, чипсетом, интегрированными на плате контроллерами и подключенными к плате устройствами. В отличие от большинства других программ, BIOS располагается не на жестком диске, а на специальной микросхеме с автономным питанием на системной плате.

От BIOS в компьютере зависит очень многое. Фактически BIOS определяет настройку системы, которой определяются функциональность и производительность ПК. Зачастую первые версии BIOS, с которыми появляются материнские платы, изобилуют «багами», исчезающими лишь в последующих версиях.

Система BIOS есть в любой системной плате (за исключением плат для компьютеров Apple), предназначена ли она для настольного ПК или для ноутбука. Впрочем, традиционно сложилось так, что BIOS для ноутбука имеет минимум настроек и носит скорее информационный характер. Что касается BIOS материнской платы для настольного ПК, то она позволяет выполнить достаточно большое количество настроек, которые влияют как на производительность работы системы, так и на ее функциональность. В частности, традиционный разгон системы, подразумевающий увеличение тактовой частоты процессора, изменение напряжения питания процессора, изменение тактовой частоты, таймингов и напряжения питания памяти производятся именно в настройках BIOS. Кроме того, в некоторых случаях BIOS позволяет настраивать скоростной режим работы вентилятора, установленного в кулере процессора, и дополнительных вентиляторов, установленных в системе, реализовывать настройку RAID-массива жестких дисков в случае, если этот массив создан на базе интегрированного в чипсет контроллера, а также выполнять массу других тонких настроек компьютера.

BIOS размещается в микросхеме ROM-памяти (Read Only Memory), что обеспечивает постоянную доступность BIOS независимо от работоспособности внешних по отношению к материнской плате компонентов (например, загрузочных дисков). Поскольку доступ к RAM (оперативной памяти) осуществляется гораздо быстрее, чем к ROM, многие изготовители предусматривают при включении питания автоматическое копирование BIOS из ROM в оперативную память. Задействованная при этом область оперативной памяти называется Shadow ROM.

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

Производителей ядра BIOS не так уж и много. Наиболее распространены BIOS от компаний AMI (American Megatrends, Inc.), AWARD и Phoenics Technologies. Другие BIOS (от компаний FirmWorks, Micro Firmware и др.) встречаются гораздо реже. А доминирует в настоящее время на рынке AMI BIOS, поэтому в дальнейшем мы сконцентрируемся на способах перепрошивки и модификации именно ее.

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

Наконец, отметим, что в настоящее время микросхемы BIOS используют два интерфейса для подключения к системной плате: либо шину LPC (Low Pin Connection), либо новую шину SPI (Serial Peripheral Interface).

Зачем перепрошивать BIOS

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

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

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

Наиболее безопасны в плане процедуры перепрошивки BIOS платы компаний Gigabyte, ASUS и MSI, в которых реализована защита от неудачной перепрошивки BIOS. На платах Gigabyte устанавливаются две микросхемы BIOS (технология DualBIOS), и если BIOS прошита некорректно и система не может запуститься, то автоматически начинается процедура аварийного восстановления BIOS из резервной микросхемы.

На новых платах ASUS технология аварийного восстановления BIOS получила название ASUS CrashFree BIOS 3. Суть этой технологии заключается в том, что в случае краха BIOS или несовпадения контрольной суммы после неудачной прошивки автоматически запускается программа, которая ищет BIOS на CD/DVD-диске, дискете или флэшке (с файловой системой FAT/FAT32). Если файл на каком­то носителе найден, автоматически запускается процедура восстановления.

Аналогичная технология, получившая название M-Flash, есть на платах MSI. Разница лишь в том, что файл BIOS должен находиться на флэшке.

Способы перепрошивки BIOS

Все производители системных плат вместе с новыми версиями BIOS выкладывают и утилиты для их прошивки, а также подробные инструкции, как перепрошивать BIOS. Увы, но какого-либо универсального инструментария для перепрошивки BIOS просто не существует. Вообще, можно выделить три способа перепрошивки BIOS: из-под DOS, из-под операционной системы Windows и непосредственно из-под BIOS.

Собственно, о способах перепрошивки BIOS из-под BIOS и с помощью фирменной утилиты из-под операционной системы Windows рассказывать особенно нечего. Здесь всё просто и понятно. Более того, способ перепрошивки BIOS из-под BIOS является самым простым и безопасным, однако, увы, не все производители поддерживают данную функцию. Исключение составляют лишь компании ASUS и Gigabyte.

Более того, не все производители комплектуют свои платы утилитами для перепрошивки BIOS из-под Windows и в некоторых случаях способ перепрошивки из-под DOS является единственно возможным.

Способ перепрошивки BIOS из-под DOS можно назвать классическим, но и самым неудобным. Дело в том, что, кроме наличия соответствующей DOS-утилиты, этот способ перепрошивки подразумевает загрузку компьютера не с жесткого диска, а с внешнего носителя. Ранее для этого применялись обычные 3,5-дюймовые загрузочные дискеты с DOS, причем на эту дискету, наряду с операционной системой, записывались и сам файл BIOS, и DOS-утилита его перепрошивки. Однако в настоящее время 3,5-дюймовые дискеты, как и сами флопповоды, можно считать устаревшими устройствами. На многих современных материнских платах отсутствует даже разъем для подключения флопповода, а ноутбуков с 3,5-дюймовыми флопповодами уже давно не производят. Впрочем, проблема данного способа перепрошивки BIOS заключается даже не в этом. В конце концов можно найти 3,5-дюймовый флопповод с USB-интерфейсом, но это вряд ли решит проблему. Дело в том, что современная BIOS может быть объемом в несколько мегабайт и просто не уместиться на дискету.

В принципе, можно попытаться решить данную проблему, используя вместо загрузочной дискеты загрузочную флэшку с ядром DOS. Но и в этом случае возникают осложнения. В первую очередь нужно найти утилиту, которая позволит сделать флэшку загрузочной, и системные файлы операционной системы DOS. В Интернете можно отыскать несколько утилит, позволяющих делать загрузочные флэшки с DOS, наиболее известные из них - это HP USB Disk Storage Format Tool и BootFlashDOS, которые есть в Сети в свободном доступе.

Утилита HP USB Disk Storage Format Tool позволяет создавать загрузочные флэшки при наличии системных файлов DOS, то есть для нее требуются еще и сами файлы. Впрочем, на торрент­ресурсах можно найти сборки, в которые входят системные файлы DOS.

В случае использования флэшек емкостью менее 4 Гбайт при форматировании и создании загрузочной флэшки с помощью утилиты HP USB Disk Storage Format Tool (рис. 1) можно применять файловую систему FAT либо FAT32, ну а если используется флэшка емкостью более 4 Гбайт, то необходима файловая система FAT32.

Рис. 1. Создание загрузочной флэшки с DOS
с помощью утилиты HP USB Disk Storage Format Tool

Утилита BootFlashDOS позволяет создавать загрузочные флэшки с DOS нажатием всего одной кнопки, покольку все необходимые системные файлы уже входят в саму утилиту (рис. 2).


Рис. 2. Создание загрузочной флэшки с DOS с помощью утилиты BootFlashDOS

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

Примеры выполнения подобной команды мы приведем чуть позже, а пока рассмотрим еще один способ перепрошивки BIOS из-под DOS. Он заключается в том, что вместо загрузочной флэшки применяется загрузочный CD/DVD-диск. Велосипед изобретать здесь вряд ли стоит - лучше воспользоваться уже готовым диском Hiren`s BootCD (текущая версия 10.4), образ которого можно скачать с сайта www.hirensbootcd.net. В случае использования загрузочного диска Hiren`s BootCD дополнительно понадобится еще и флэшка (с файловой структурой FAT или FAT32), на которую должна быть записана DOS-утилита для перепрошивки BIOS, и сам файл BIOS.

Теперь рассмотрим процедуру перепрошивки BIOS из-под DOS на примере ноутбука MSI GX640 с AMI BIOS. На ноутбуках MSI предусматривается один-единственный способ перепрошивки BIOS из-под DOS с помощью прилагаемой к файлу самой BIOS фирменной DOS-утилиты. Собственно, всё, что нужно для перепрошивки BIOS, - это создать загрузочную флэшку, скачать с сайта MSI архив со всеми необходимыми файлами, в который входят файл BIOS, утилита для перепрошивки и исполняемый файл flash.bat с прописанной последовательностью всех действий. После этого следует разархивировать данный архив на загрузочную флэшку и, загрузившись с флэшки, запустить на исполнение файл flash.bat. Главное, чтобы все разархивированные файлы находились в одной папке (можно разархивировать их в корневой каталог флэшки).

Вообще, нужно отметить, что для каждого типа BIOS (AMI, Award) для перепрошивки существуют специализированные утилиты от компаний AMI и Award. К примеру, с сайта компании AMI можно скачать пакет amiflash, в которой входят утилиты afudos и afuwin, позволяющие перепрошивать AMI BIOS из-под DOS и из-под Windows соответственно. Однако нужно иметь в виду, что AMI BIOS может быть как классическим AMI BIOS, так и AMI Aptio BIOS. Aptio - это разновидность AMI BIOS, но главное, что для AMI BIOS и Aptio AMI BIOS используются различные утилиты afudos и afuwin.

Кроме того, многие производители системных плат вносят в BIOS для своих продуктов столь существенные изменения, что универсальные утилиты AMI или Award их просто не распознают, а следовательно, перепрошить не могут. В частности, в рассмотренном ранее примере с AMI BIOS ноутбука MSI GT640 утилиты afudos и afuwin не распознают ее как AMI BIOS и, естественно, перепрошить не могут.

Вообще, ситуация, когда речь идет о модифицированных версиях AMI BIOS, которые определяются как AMI BIOS самими утилитами от AMI, встречается довольно часто. Это и многие платы MSI, и многие платы Gigabyte. В таком «выпендреже» не замечены пока только платы ASUS, BIOS на которых можно перепрошивать утилитами от компании AMI (хотя, конечно, лучше подойдут утилиты, поставляемые самой компанией ASUS).

Зачем модифицировать BIOS

Итак, мы рассмотрели основные способы перепрошивки BIOS, а теперь обсудим, каким образом можно ее модифицировать. Естественно, возникает вопрос: а зачем вообще модифицировать BIOS? По этому поводу можно спорить до бесконечности, как и о том, нужно ли разгонять компьютер. Собственно, если процедура моддинга BIOS в принципе возможна, всегда найдутся энтузиасты, которые будут этим заниматься.

Еще несколько лет назад о возможности самостоятельного редактирования BIOS мало кто задумывался. Однако в последнее время эта процедура стала популярной, и в Интернете можно найти немало ресурсов, посвященных моддингу BIOS. Интерес к этому вопросу можно объяснить тем, что в последнее время многие пользователи стали прошивать SLIC-таблицу в своей BIOS, а это один из вариантов моддинга, или редактирования, BIOS. Сама по себе процедура прошивки SLIC-таблицы в BIOS вполне законна, а вот то, для чего это делают, конечно же, уже незаконно - именно этим объясняется популярность данной процедуры.

Вкратце поясним, о чем идет речь. Прошивание SLIC-таблицы в BIOS используется для того, чтобы реализовать механизм OEM-активации операционной системы Windows 7 точно так же, как это делают OEM-партнеры Microsoft для активации предустановленных копий Windows без проверки Microsoft. Данный метод позволяет активировать систему при соблюдении трех условий: использование специального OEM-ключа и OEM-сертификата, а также наличие SLIC-таблицы в BIOS компьютера.

Windows 7 требует наличия в BIOS SLIC-таблиц версии 2.1, причем жесткой привязки OEM-ключа к SLIC-таблице и сертификату нет. Ключ привязан только к редакции Windows и позволяет активировать как x86-, так и x64-версии ОС. Файл­сертификат и SLIC-таблицы взаимосвязаны, и для успешной активации оба компонента должны быть от одного OEM-партнера.

Мы не станем рассказывать, как незаконно активировать Windows 7, однако остановимся на процедуре вшивания в BIOS SLIC-таблицы. Сразу отметим, что это далеко не всегда возможно и не все BIOS поддаются какому-либо редактированию.

В Интернете можно найти пакет программных инструментов (AMITool), содержащий как сами SLIC-таблицы, так и утилиту (AMI SLIC Mod) для их прошивки в AMI BIOS. Однако для этого нужно, чтобы у вас на плате применялся именно AMI BIOS, но даже в этом случае нет никакой гарантии, что процедура прошивки SLIC-таблицы в BIOS окажется возможной. Как мы уже отмечали, многие производители так модифицируют BIOS для своих продуктов, что утилита AMI SLIC Mod просто не распознает ее как AMI BIOS, а следовательно, не может ее модифицировать.

Впрочем, даже в этом случае не стоит отчаиваться и бежать в магазин за другой системной платой. Прежде чем пытаться прошивать SLIC-таблицу в BIOS, следует проверить факт ее отсутствия в BIOS. Если вы купили материнскую плату или ноутбук недавно, то вполне может оказаться, что нужная вам версия SLIC-таблицы (версия 2.1) в BIOS уже имеется.

Просмотреть версию SLIC-таблицы в BIOS можно с помощью специализированной утилиты RW - Read & Write Utility (текущая версия 1.4.7), которую можно скачать с сайта http://rweverything.phpnet.us. Другое название этой утилиты - RW-Everything.

Установив данную утилиту, запускаем ее и в главном окне программы на панели инструментов нажимаем на кнопку с надписью ACPI. В открывшемся окне ACPI Table нажимаем на вкладку SLIC. Далее необходимо просмотреть таблицу в шестнадцатеричном формате и найти в ней строку, начинающуюся с байт 53 20. Если следующие четыре байта 00 00 00 00, значит в BIOS прошита SLIC-таблица версии 2.0, а если - 01 00 02 00, то прошита SLIC-таблица версии 2.1 (рис. 3).


Рис. 3. Определение версии SLIC-таблицы BIOS

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

Используя специализированные утилиты, можно попытаться разблокировать все отключенные функции и опции в BIOS. Кроме того, можно изменить логотипы (некоторые производители материнских плат, например компания ASUS, даже поставляют специальные утилиты для изменения логотипа BIOS), а также некоторые названия, чтобы, например, при загрузке отображалось не реальное название процессора, а что­то типа «AMD Core i9-995».

Можно привести и другой пример моддинга BIOS. Некоторые умельцы умудряются через BIOS разблокировать возможность применения режима SLI для видеокарт NVIDIA на тех материнских платах, где данный режим не предусмотрен. Собственно, если плата официально поддерживает режим SLI, то в ее BIOS есть соответствующий ключ от NVIDIA. Идея моддинга заключается в том, чтобы вырезать этот ключ из BIOS той платы, на которой режим SLI официально поддерживается, и вставить его в BIOS для той платы, на которой режим SLI не поддерживается (то есть в BIOS без ключа NVIDIA). В частности, есть примеры того, как за счет такого моддинга был активирован режим SLI на платах на базе чипсета Intel P45 Express.

Впрочем, перейдем от теории к практике и обсудим редактирование BIOS, в частности редактирование AMI BIOS как наиболее распространенной.

Редактирование AMI BIOS

Для редактирования BIOS с ядром от AMI потребуется утилита AMIBCP, которую, кстати, выпускает сама компания AMI. Эту утилиту можно скачать как отдельно, так и в составе пакета AMI BIOS ROM Utilities. Нужно отметить, что поскольку, как мы уже не раз подчеркивали, производители материнских плат и ноутбуков вносят изменения в AMI BIOS для своих продуктов, то никакой гарантии того, что утилита AMIBCP распознает BIOS, нет. Увы, но далеко не каждую BIOS можно модифицировать. Как показывает практика, без проблем поддаются редактированию BIOS плат ASUS и ECS, а вот в отношении плат компаний Gigabyte и MSI утилита AMIBCP бессильна.

Итак, вернемся к рассмотрению редактирования BIOS в том случае, когда это возможно. Утилита AMIBCP (версия 3.х) запускается из-под операционной системы Windows, но нужно отметить, что имеются варианты этой же утилиты для DOS.

Загрузив утилиты, необходимо открыть файл BIOS. В нашем примере мы рассмотрим редактирование AMI BIOS для системной платы ASUS P6X58D-E с использованием утилиты AMIBCP v.3.37. Редактированию мы будем подвергать файл P6X58DE.ROM.

Итак, в главном окне программы загружаем файл BIOS, который будем модифицировать (рис. 4).


Рис. 4. Главное окно утилиты AMIBCP v.3.37

Прежде всего интересна вкладка Setup Configuration, в которой, собственно, и производится модификация настроек BIOS. В левом окне данной вкладки отображается основное меню настроек BIOS. Если снять галочку с какого-либо пункта меню, то он не будет отображаться в меню BIOS. В рассмотренном примере (см. рис. 4) мы сняли галочки с пунктов Ai Tweaker и Advanced, заблокировав тем самым все возможности для разгона системы. То есть пункты меню BIOS, в которых можно просмотреть информацию о процессоре и памяти, а также поменять частоты, напряжение питания и т.д., просто будут отсутствовать в модифицированной версии BIOS.

Аналогична ситуация при раскрытии древовидной структуры каждого пункта меню настройки BIOS: если снять галочку с какого-либо подпункта, то он не будет отображаться в меню BIOS. К примеру, если мы не хотим, чтобы в меню настроек Advanced отображался пункт Intel PPM Configuration, нужно просто снять с соответствующего пункта галочку (рис. 5).


Для того чтобы заблокировать какую-либо опцию меню настройки BIOS, достаточно в графе Show для соответствующего пункта установить значение No. Такие заблокированные элементы будут (после сохранения внесенных изменений) выделены зеленой полосой.

К примеру, если в нашей системе не установлены дополнительные вентиляторы в корпусе и мы не хотим, чтобы в BIOS отображались пункты их настроек, то входим в меню Power, далее открываем меню Hardware Monitor и для опций Chassis Fan 1 Speed, Chassis Fan 2 Speed, Chassis Fan 3 Speed, Chassis Q-Fan Profile и Power Fan Speed устанавливаем значение No в графе Show (рис. 6).


Рис. 6. Блокирование отображения в BIOS различных опций меню настройки

Следует отметить, что BIOS P6X58DE.ROM для платы ASUS P6X58D-E каких­либо улучшений с помощью утилиты AMIBCP v.3.37 не допускает. Все опции в ней разблокированы, поэтому максимум, что можно сделать, - это заблокировать то, что не нужно (правда, непонятно, зачем это делать).

Можно также попытаться изменить некоторые надписи, но следует иметь в виду, что на русском языке надписи отображаться не будут. К примеру, если мы хотим, чтобы при загрузке вместо строки ASUS P6X58D-E ACPI BIOS Revision 0106 отображалась строка ComputerPress P6X58D-E BIOS Edition, то достаточно найти строку ASUS P6X58D-E ACPI BIOS Revision 0106 на закладке BIOS Strings и поменять ее на указанную.

Нам осталось рассмотреть еще один вид моддинга BIOS - изменение фоновой картинки (логотипа) BIOS. При этом компания ASUS даже комплектует свои платы специальной утилитой, которая позволяет реализовывать данную возможность. Конечно, для плат ASUS проще всего применять именно эту утилиту. Однако для AMI BIOS можно воспользоваться и утилитой OEM LOGO самой компании AMI (рис. 7).


Рис. 7. Изменение логотипа BIOS с использованием утилиты OEM LOGO

Интерфейс этой утилиты очень прост и не требует комментариев. Достаточно загрузить BIOS и указать путь к файлу с новым логотипом. Единственное ограничение - рисунок должен быть определенного разрешения и формата.