BIOS-terapia

Nowoczesne płyty główne są nierzadko wyposażone w wiele dodatkowych komponentów. Aktualizując BIOS płyty głównej, często przy okazji zauważamy zmiany w wersji firmware np. zintegrowanej z płytą karty graficznej lub kontrolera RAID. Niestety, czasami zdarza się tak, że pomimo pojawienia się nowego BIOS-u dla zintegrowanego na płycie komponentu (np. kontrolera dysków) w najnowszym zbiorczym firmwarze dla naszej płyty umieszczona jest jedynie starsza wersja oprogramowania. Modularność BIOS-ów sprawia, że z użyciem odpowiednich narzędzi możemy połączyć najnowszy podstawowy firmware płyty z aktualnym oprogramowaniem dla zintegrowanych elementów.

Rodzaje BIOS-ów

Jeśli się przyjrzymy dowolnemu rankingowi płyt głównych w tabelach z danymi technicznymi, możemy dostrzec, że większość producentów tego podstawowego komponentu peceta decyduje się na BIOS firmy Award-Phoenix. Dużo rzadziej spotykane jest oprogramowanie pochodzące od American Megatrends (AMIBIOS). Jak łatwo się domyślić, firmware’y opracowywane przez różne firmy będą miały inną strukturę. Dlatego narzędzia do modyfikacji BIOS-u muszą być przystosowane do konkretnego rodzaju tego podstawowego oprogramowania. Ze względu na to, że rozwiązania Awarda należą do najpopularniejszych, modyfikację firmware’u zaprezentujemy na przykładzie BIOS-u tej firmy.

Podstawowym narzędziem do zmian modułów Award-BIOS-u jest program CBROM. Ta DOS-owa aplikacja pracuje w trybie tekstowym i umożliwia ekstrakcję lub dodanie do obrazu BIOS-u np. firmware’u zintegrowanego z płytą kontrolera Serial ATA, ewentualnie obrazka wyświetlanego na ekranie w czasie startu peceta – np. logo producenta produktu. Głębszą ingerencję w systemowy BIOS oferuje aplikacja Modbin, umożliwiając np. włączenie niektórych ukrytych przez producenta płyty opcji. W praktyce modyfikacje te mogą być bardzo niebezpieczne, jeśli nie bardzo wiemy, czemu służy dana pozycja menu.

Obecnie najczęściej spotykana wersja Award-BIOS-u jest oznaczona jako 6.0. Nieco starsze konstrukcje (oraz niektóre nowe korzystające z jedno- i dwumegabitowych obrazów BIOS-u) mogą bazować na wersji 4.5x. Jest to o tyle ważne, że do edycji tych dwóch odmian BIOS-u musimy użyć narzędzia w odpowiednich wersjach. Czasami trzeba poeksperymentować z różnymi wersjami aplikacji tego typu, żeby sprawdzić, czy rozpoznają BIOS naszej płyty.

Struktura firmware’u

Zanim rozpoczniemy grzebanie w BIOS-ie naszej płyty głównej, warto zapoznać się z procedurą awaryjnego wgrywania firmware’u płyty. Zazwyczaj odpowiedni opis znajdziemy w instrukcji obsługi – najczęściej konieczne będzie spreparowanie odpowiedniej dyskietki startowej. Gdy jesteśmy tak zabezpieczeni, możemy przystąpić do działania. Przede wszystkim należy pobrać ze strony producenta płyty plik z najnowszym BIOS-em. Po jego rozpakowaniu do katalogu, np. C:\BIOS na dysku twardym, wgrywamy tam także program CBROM. Jak wspomniałem na wstępie, BIOS Awarda ma strukturę modularną – aby się o tym przekonać, wystarczy użyć polecenia

CBROM BIOS.BIN /D

(gdzie BIOS.BIN jest nazwą zbiorczego obrazu firmware’u). Na ekranie powinna pokazać się szczegółowa zawartość BIOS-u. Dostrzeżemy tam następujące elementy: główny moduł System BIOS, który może być dodatkowo rozszerzony o sekcje XGROUP i YGROUP CODE (najczęściej w 4-megabitowych BIOS-ach), oraz dodatkowe firmware’y dla zintegrowanych komponentów – PCI ROM. Jeśli mamy wbudowaną w chipset płyty kartę graficzną, to jej podstawowy software będzie umieszczony w sekcji VGA BIOS. Poza tymi elementami zbiorczy BIOS dla naszej płyty może zawierać także graficzne logo pełnoekranowe LOGO Bitmap, małe logo EPA LOGO, tablicę ACPI, oraz specjalny dodatkowy kod inicjujący – dodany przez producenta płyty (OEM CODE). Czasami w firmwarze płyty zaszyte są także dodatkowe programy – np. antywirus (VRS ROM) lub aplikacja (AWDFLASH.EXE) do uaktualniania BIOS-u, aktywowana specjalną sekwencją klawiszy ([ALT]+[F2]).

Co modyfikować

Dodatkowe komponenty naszej płyty głównej są zazwyczaj sterowane przez różne BIOS-y. Ze względu na to, że na co dzień używam płyty głównej Asusa A7N8X-Deluxe, będę modyfikował jej BIOS w wersji 1007. Płyta wśród elementów zintegrowanych ma dwie karty sieciowe oraz kontroler Serial ATA Silicon Image 3112. Każdy z tych składników ma przypisany odpowiedni fragment kodu – jednak CBROM nie identyfikuje jednoznacznie, który firmware steruje danym urządzeniem. Dlatego należy wyekstrahować do osobnych plików wszystkie “kawałki” BIOS-u oznaczone jako PCI ROM. Wystarczy do tego celu zastosować komendę CBROM BIOS.BIN /PCI EXTRACT. Następnie, gdy program zapyta o to, który firmware chcemy “wyciągnąć”, wybieramy na początku literę “A”. Później ponawiamy polecenie i wskazujemy kolejną literę alfabetu. Powtarzamy powyższe czynności tak długo, aż zapiszemy na dysku wszystkie dodatkowe BIOS-y. W omawianym przypadku w katalogu C:\BIOS znajdziemy trzy pliki o nazwach 4227.BIN, NVPXES.NIC oraz MBIOS_S.BIN. Następnie określimy, które pliki odpowiadają za poszczególne elementy płyty. Najłatwiej to zrobić, podglądając zawartość plików przy użyciu dowolnego edytora (najlepiej typu hexedit lub wbudowanym Listerem z Windows Commandera). Informacje na temat obsługiwanego sprzętu oraz firmy, która napisała firmware, są zazwyczaj widoczne jako “czysty” tekst na początku pliku. W pliku 4227.BIN zauważamy więc napis SILICON IMAGE oraz oznaczenie wersji 4.2.27 – czyli mamy do czynienia z BIOS-em dla zintegrowanego kontrolera dysków Serial ATA. Pliki NVPXES.NIC oraz MBIOS_S.BIN to firmware’y dla kart sieciowych odpowiednio nVidii i 3Com, służące do startu systemu operacyjnego z sieci LAN.

Więcej:bezcatnews