recover broken BIOS

April 10, 2012

Расскажу как я умудрился запороть :] и героически восстановить BIOS на старой материнке EPOX 8HMMI-A 2005 года выпуска.

Недавно понадобилось настроить очередной слабонагруженный сервер.

Всё бы хорошо, но при вставке USB флэшки BIOS решительно отказвался видеть съёмный носитель. Если отключить питание от винтов и CDROM, то flash появлялась в списке заргузочных устройств. Немного полистав интернеты и чейнджлоги к прошивкам BIOS я понял, что этот баг зафиксили в новых прошивках.

Я взял livecd от systemrescuecd, пакет sys-fs/dosfstools и добавил в список еще один образ MS-DOS с новой прошивкой.

Загрузился с этого образа и попробовал обновить BIOS: запустил AWDFLASH, указал в меню пустое имя прошивки и нажал <Enter>.

На экране ничего не происходило, а должны были квадратики бежать. Ну, думаю, зависла прога. Нажал на reset и жду, когда что-нибудь появится на мониторе. А там - ничего. Только комп пищит при загрузке (1 длинный, 2 коротких).

Я понял, что запорол BIOS :]. Попробовал перегрузить еще пару раз - не помогло.

Меня всегда интересовало, как же восстанавливаться из таких случаев?

Погуглив нашел следующие варианты:

Оказывается, что полностью запороть AWARD и AMI BIOSы не так просто: в них присутствует так называемый boot block. Это область памяти в 4KB, которая первой получает управление при загрузке компа. Она сичтает контрольную сумму остального BIOS и передает ему управление, если контрольная сумма в порядке; иначе инициализирцет ISA видеокарку и пробует загрузиться с FDD. Программами обновления BIOS эта область обычно не затрагивается (но в AWARD и ее можно запороть задав /wb ключ).

Так что, чтобы восстановиться мне всего-то понадобилось найти:

Отформатил дискету как системную. Получилось это только, правда, с 10 раза: дискета постоянно размагничивалась, не читалась, и не поддавалась записи.

В иногед на диске лежали:

Заветная строка в autoexec.bat:

AWDFLASH 8HMX5413.BIN /py /Sb /sn /cc /cp /cd /R

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

Ура!