recover broken BIOS
Расскажу как я умудрился запороть :] и героически восстановить BIOS на старой материнке EPOX 8HMMI-A 2005 года выпуска.
Недавно понадобилось настроить очередной слабонагруженный сервер.
Всё бы хорошо, но при вставке USB флэшки BIOS решительно отказвался видеть съёмный носитель. Если отключить питание от винтов и CDROM, то flash появлялась в списке заргузочных устройств. Немного полистав интернеты и чейнджлоги к прошивкам BIOS я понял, что этот баг зафиксили в новых прошивках.
Я взял livecd от systemrescuecd, пакет sys-fs/dosfstools и добавил в список еще один образ MS-DOS с новой прошивкой.
Загрузился с этого образа и попробовал обновить BIOS: запустил AWDFLASH, указал в меню пустое имя прошивки и нажал <Enter>.
На экране ничего не происходило, а должны были квадратики бежать. Ну, думаю, зависла прога. Нажал на reset и жду, когда что-нибудь появится на мониторе. А там - ничего. Только комп пищит при загрузке (1 длинный, 2 коротких).
Я понял, что запорол BIOS :]. Попробовал перегрузить еще пару раз - не помогло.
Меня всегда интересовало, как же восстанавливаться из таких случаев?
Погуглив нашел следующие варианты:
- найти такой-же компьютер, “на горячую” воткнуть в него запоротый BIOS и перепрошить.
- найти программатор bumblebee и записать BIOS
- загрузиться с FDD
Оказывается, что полностью запороть AWARD и AMI BIOSы не так просто: в них присутствует так называемый boot block. Это область памяти в 4KB, которая первой получает управление при загрузке компа. Она сичтает контрольную сумму остального BIOS и передает ему управление, если контрольная сумма в порядке; иначе инициализирцет ISA видеокарку и пробует загрузиться с FDD. Программами обновления BIOS эта область обычно не затрагивается (но в AWARD и ее можно запороть задав /wb ключ).
Так что, чтобы восстановиться мне всего-то понадобилось найти:
- флоповод
- дискету
- машину с Windows 98
Отформатил дискету как системную. Получилось это только, правда, с 10 раза: дискета постоянно размагничивалась, не читалась, и не поддавалась записи.
В иногед на диске лежали:
- COMMAND.COM
- IO.SYS
- MSDOS.SYS
- DRVчеготоам.BIN
- AWDFLASH.EXE
- 8HMX5413.BIN
- AUTOEXEC.BAT
Заветная строка в autoexec.bat:
AWDFLASH 8HMX5413.BIN /py /Sb /sn /cc /cp /cd /R
Загрузился с дискеты и через пару минут услышал сигнал. Комп перезагрузился и я увидел новый BIOS, в котором нормально детектилось железо.
Ура!