| Многие относятся к BIOS (имеется в виду именно программа) как к чему-то незыбленно-потаённому, известному только узкому кругу разработчиков и совершенно не подлежащему самостоятельной правке. Однако реально не всё так страшно, я бы даже сказал – всё достаточно просто, надо только чётко понимать и осознавать, что ты делаешь. И тогда вы сможете получить моральное удовольствие от собственной картинки в BIOS да повеселиться, увидев при загрузке «Pentium 12 - 33.33GHz». или, если серьёзно, добавить дополнительные возможности вашей плате – будь то поддержка «больших винтов» или каких-то новых, незнакомых вашей старенькой маме, других устройств (если, конечно, вы – программист). Попробуем разобраться. Чтоб не опростоволоситься, нужно чётко знать две вещи: как устроен биос, что делать и чем. Для начала – «чем» – инструментарий: * CBROM (например, v.2.15 - http://yusoft.kulichki.com/russian/doc/biosedit/award/cbrom_2_15.rar ) - программа для просмотра/распаковки различных модулей биос. (Стандартная утилита от самого Award-а). * Modbin (например, v.4.50.80C - http://yusoft.kulichki.com/russian....80c.rar ) - программа, позволяющая редактировать некоторые регистры чипсета, а так же изменять надписи/опции в BIOS Setup. (Стандартная утилита от самого Award-а). * LHA - старый(1988)-добрый архиватор от Haruyasu Yoshizaki, алгоритм которого и лёг в основу упаковки модулей Award BIOS. (http://yusoft.kulichki.com/russian/doc/biosedit/award/lha.rar). В начале кратко, но достаточно точно рассмотрим основные части биоса. Он состоит из двух главных частей: 1. BootBlock. В его функцию входят самые первые шаги по инициализации регистров чипсета и распаковка главной части в память для последующего исполнения. При несовпадении подсчитанной контрольной суммы биоса он же (bootblock) запускает программу аварийного восстановления биоса (с дисковода). 2. Основная часть. Главный исполняемый код. Состоит из нескольких «модулей» и хранится в запакованном виде как архив LHA с немного изменёнными заголовками (не принципиально для нас). Как правило, используются следующие названия для составных частей (модулей) этого «архива» (детально можно посмотреть с помощью утилиты cbrom): - original.tmp – главная часть, всегда размером 128k, она нас и интересует. Именно в ней происходит вся инициализация компьютера, в ней же подпрограмма BIOS Setup - awardext.rom – «расширение» главной части, в т.ч. в нём подпрограмма вывода конфигурации компьютера - табличка, появляющаяся сразу же перед «Starting Windows (DOS, linux и т.д.) …» - awardepa.bin – «картинка» Energy Star Другие встречающиеся части: - cpucode.bin – таблица микрокодов для Intel-процессоров (PPro, P2/P3/P4, Celeron) - acpitbl.bin – подпрограмма поддержки ACPI Так же, бывает, попадаются всякие VGA.rom (при интегрированном видео), logo.bin и др., что есть либо не принципиально, либо банально-понятно. Названия могут меняться производителем, но по смыслу-размеру-названию всегда можно догадаться. Как теперь стало понятно, «просто» редактировать биос нельзя, т.к. это архив. Поэтому, если мы хотим что-то изменить – сначала надо распаковать нужную часть, исправить, что нужно и запаковать обратно. «Главная» часть, как уже говорилось, это original.tmp. Его и будем править. Рецепт 1 (описан в интернете). Берём modbin, открываем в нём нужный файл биоса (прошивки, которую будем править). modbin создаёт два временных файла – bios.rom и original.tmp. bios.rom – это просто копия открытого файла, а вот original.tmp – это и есть уже распакованный наш «главный» модуль (см. выше). Т.е. распаковка – просто. Если мы выберем в modbin верхний пункт «Update File», то «временный» файл original.tmp запаковывается назад в файл биоса. Напрашивается простое решение: если это сделать (открыть файл биоса в modbin) из-под винды, а потом просто переключиться по Alt-Tab в любой другой файлменеджер (VC, Explorer, Far и т.п.) – то у нас появится возможность внести любые изменения в original.tmp. Сделав, что нужно, переключаемся назад в modbin и тискаем “update”. modbin берёт исправленный нами original.tmp и сам запаковывает его в биос. Всё – радуемся. (Особенно, ежели после перешивки исправленная версия заработает:) Однако описанный способ имеет важный недостаток – он не позволяет исправлять второй сегмент, т.е. можно менять лишь первые 64k – 00000-0FFFFh. Просто во вторых 64k лежат изменяемые модбином всякие регистры, потому он вторые 64k заменяет «своими», и все изменения по адресам 10000-1FFFFh игнорируются. Этого недостатка лишён второй способ. Кроме этого, в отличие от первого, здесь всё делается под «голым» ДОСом, а также можно распаковать и изменить любой «модуль». Рецепт 2 (©apple_rom;) Придётся чуть более подробно поговорить о структуре биос. Как было сказано выше, биос представляет собой архив. Но правильнее и точнее – это последовательность заархивированных с помощью LHA файлов с bootblock-ом в конце. Он (bootblock), конечно же, не заархивирован, т.к. именно он и распаковывает все эти «модули» в оперативную память. В применении к конкретными адресам структура примерно такова: Таблица 1. Структура и адреса для 1Mbit-ного (128kB) биоса. 00000 – xxxxx+1 Файл запакованного original.tmp плюс один байт («дополнительного» CRC) xxxxx+1 – yyyyy Cразу же дальше (т.е. без разрыва) идёт файл следующего запакованного модуля, например, awardext.rom (на конце уже никаких «дополнительных» байтов) yyyyy – zzzzz Дальше (также без разрыва) – следующий. И так все имеющиеся в конкретном биосе модули zzzzz - ~17FFEh* Свободное место, обычно заполняется «00» или «FF» ~1C000* – 1FFFFh Бутблок * - адреса могут отличаться, т.к. бывают прошивки с разными по величине бутблоками.
Я не Бог и мне всё по х..
|