BIOS - BIOS

Para chipów AMD BIOS dla komputera Dell 310 z lat 80.

W obliczeniowej , BIOS ( / b ɒ s , - s / , BY -oss, -⁠ohss an akronimem dla podstawowy system wejścia / wyjścia , a także znany jako systemu BIOS , ROM BIOS , BIOS ROM lub PC BIOS ) to oprogramowanie układowe używane do wykonywania inicjalizacji sprzętu podczas procesu uruchamiania (uruchamianie po włączeniu zasilania) oraz do świadczenia usług środowiska uruchomieniowego dla systemów operacyjnych i programów. Oprogramowanie układowe BIOS jest preinstalowane na płycie głównej komputera osobistego i jest to pierwsze oprogramowanie uruchamiane po włączeniu. Nazwa pochodzi od podstawowego systemu wejścia/wyjścia używanego w systemie operacyjnym CP/M w 1975 roku. BIOS pierwotnie zastrzeżony dla IBM PC został poddany inżynierii wstecznej przez niektóre firmy (takie jak Phoenix Technologies ), które chciały stworzyć kompatybilne systemy. Interfejs tego oryginalnego systemu służy jako de facto standardem .

BIOS w nowoczesnych komputerach PC inicjuje i testuje komponenty sprzętowe systemu ( Power-on self-test ) i ładuje program ładujący z urządzenia pamięci masowej, który następnie inicjuje system operacyjny. W erze DOS , BIOS zapewniał wywołania przerwań BIOS dla klawiatury, wyświetlacza, pamięci i innych urządzeń wejścia/wyjścia (I/O), które standaryzowały interfejs do aplikacji i systemu operacyjnego. Nowsze systemy operacyjne nie używają wywołań przerwań BIOS po uruchomieniu.

Większość implementacji systemu BIOS jest specjalnie zaprojektowana do pracy z konkretnym modelem komputera lub płyty głównej , łącząc się z różnymi urządzeniami, zwłaszcza z chipsetem systemowym . Pierwotnie oprogramowanie układowe BIOS było przechowywane w układzie ROM na płycie głównej komputera. W nowoczesnych systemach komputerowych zawartość BIOS-u jest przechowywana w pamięci flash, dzięki czemu można ją przepisać bez wyjmowania chipa z płyty głównej. Pozwala to użytkownikom końcowym na łatwe aktualizacje oprogramowania układowego BIOS, dzięki czemu można dodawać nowe funkcje lub naprawiać błędy, ale stwarza również możliwość zainfekowania komputera rootkitami BIOS . Co więcej, aktualizacja systemu BIOS, która się nie powiedzie, może spowodować uszkodzenie płyty głównej.

Unified Extensible Firmware Interface (UEFI) to następca starszego systemu BIOS komputera PC, którego celem jest wyeliminowanie jego ograniczeń technicznych.

Historia

/* C P / M   B A S I C   I / O    S Y S T E M    (B I O S)
                    COPYRIGHT (C) GARY A. KILDALL
                             JUNE, 1975 */
[…]
/*  B A S I C   D I S K    O P E R A T I N G   S Y S T E M  (B D O S)
                    COPYRIGHT (C) GARY A. KILDALL
                            JUNE, 1975 */
—  Fragment nagłówka pliku BDOS.PLM w kodzie źródłowym PL/M CP/M 1.1 lub 1.2 dla Lawrence Livermore Laboratories (LLL)

Termin BIOS (Basic Input/Output System) został stworzony przez Gary'ego Kildalla i po raz pierwszy pojawił się w systemie operacyjnym CP/M w 1975 roku, opisując specyficzną dla maszyny część CP/M ładowaną podczas rozruchu, która łączy się bezpośrednio ze sprzętem . (Maszyna CP/M zwykle ma w swojej pamięci ROM tylko prosty program ładujący .)

Wersje MS-DOS , PC DOS lub DR-DOS zawierają plik zwany różnie „ IO.SYS ”, „ IBMBIO.COM ”, „IBMBIO.SYS” lub „DRBIOS.SYS”; plik ten jest znany jako „DOS BIOS” (znany również jako „System we/wy DOS”) i zawiera część systemu operacyjnego, związaną ze sprzętem niższego poziomu. Wraz z bazowym, specyficznym dla sprzętu, ale niezależnym od systemu operacyjnego „Systemem BIOS”, który znajduje się w pamięci ROM , stanowi on odpowiednik „ CP/M BIOS ”.

BIOS pierwotnie zastrzeżony dla komputerów IBM PC został poddany inżynierii wstecznej przez niektóre firmy (takie jak Phoenix Technologies ), które chciały stworzyć kompatybilne systemy.

Wraz z wprowadzeniem maszyn PS/2 IBM podzielił BIOS systemu na części działające w trybie rzeczywistym i chronionym. Część trybu rzeczywistego miała zapewnić wsteczną kompatybilność z istniejącymi systemami operacyjnymi, takimi jak DOS, i dlatego została nazwana „CBIOS” (od „BIOS zgodności”), podczas gdy „ABIOS” (od „Zaawansowany BIOS”) zapewniał nowe interfejsy w szczególności nadaje się do wielozadaniowych systemów operacyjnych, takich jak OS/2 .

Interfejs użytkownika

BIOS oryginalnego IBM PC i XT nie miał interaktywnego interfejsu użytkownika. Kody błędów lub komunikaty były wyświetlane na ekranie lub generowano zakodowane serie dźwięków sygnalizujące błędy, gdy autotest po włączeniu zasilania (POST) nie doszedł do momentu pomyślnej inicjalizacji karty wideo. Opcje w IBM PC i XT były ustawiane przez przełączniki i zworki na płycie głównej oraz na kartach rozszerzeń . Począwszy od połowy lat dziewięćdziesiątych, typowym dla BIOS ROM stało się zawieranie „narzędzia konfiguracji systemu BIOS” (BCU) lub „narzędzia konfiguracji systemu BIOS”, do którego dostęp podczas uruchamiania systemu uzyskuje się za pomocą określonej sekwencji klawiszy. Program ten umożliwiał użytkownikowi ustawianie opcji konfiguracji systemu, w rodzaju wcześniej ustawianych za pomocą przełączników DIP , za pomocą interaktywnego systemu menu sterowanego za pomocą klawiatury. W okresie przejściowym komputery PC kompatybilne z IBM — w tym IBM AT — utrzymywały ustawienia konfiguracyjne w pamięci RAM podtrzymywanej bateryjnie i używały rozruchowego programu konfiguracyjnego na dyskietce, a nie w pamięci ROM, aby ustawić opcje konfiguracyjne zawarte w tej pamięci. Dyskietka została dostarczona z komputerem i jeśli została zgubiona, nie można było zmienić ustawień systemowych. To samo dotyczyło ogólnie komputerów z magistralą EISA , dla których program konfiguracyjny nazwano EISA Configuration Utility (ECU).

Współczesny komputer kompatybilny z Wintel zapewnia procedurę konfiguracji zasadniczo niezmienioną w swej naturze w porównaniu z rezydentnymi w pamięci ROM narzędziami konfiguracyjnymi BIOS-u z późnych lat dziewięćdziesiątych; użytkownik może skonfigurować opcje sprzętowe za pomocą klawiatury i wyświetlacza wideo. Współczesna maszyna Wintel może przechowywać ustawienia konfiguracji BIOS w pamięci flash ROM, być może w tej samej pamięci flash, w której znajduje się sam BIOS.

Operacja

Uruchamianie systemu

Wczesne procesory Intela zaczynały się pod adresem fizycznym 000FFFF0h. Systemy z nowszymi procesorami zapewniają logikę uruchamiania systemu BIOS z systemowej pamięci ROM.

Jeśli system został właśnie włączony lub naciśnięto przycisk resetowania („zimny rozruch”), zostanie uruchomiony pełny autotest po włączeniu zasilania (POST). Jeśli naciśnięto klawisze Ctrl+Alt+Delete ("ciepły rozruch"), specjalna wartość flagi przechowywana w nieulotnej pamięci BIOS (" CMOS ") testowanej przez BIOS umożliwia ominięcie długiego testu POST i wykrywania pamięci.

Test POST identyfikuje, testuje i inicjalizuje urządzenia systemowe, takie jak procesor , chipset , pamięć RAM , płyta główna , karta graficzna , klawiatura , mysz , dysk twardy , napęd dysków optycznych i inny sprzęt , w tym zintegrowane urządzenia peryferyjne .

Wczesne komputery IBM PC miały w POST procedurę, która pobierała program do pamięci RAM przez port klawiatury i uruchamiała go. Ta funkcja była przeznaczona do testów fabrycznych lub celów diagnostycznych.

Proces rozruchu

Proces rozruchu

Po zakończeniu skanowania opcji ROM i wywołaniu wszystkich wykrytych modułów ROM z poprawnymi sumami kontrolnymi lub natychmiast po POST w wersji BIOS, która nie skanuje opcjonalnych ROM-ów, BIOS wywołuje INT 19h, aby rozpocząć przetwarzanie rozruchu. Po uruchomieniu, programy załadowane mogą również wywołać INT 19h, aby ponownie uruchomić system, ale muszą być ostrożni, aby wyłączyć przerwania i inne asynchroniczne procesy sprzętowe, które mogą zakłócać proces ponownego uruchamiania BIOS-u, w przeciwnym razie system może zawiesić się lub zawiesić podczas ponownego uruchamiania .

Po wywołaniu przerwania 19h BIOS próbuje zlokalizować oprogramowanie ładujące na "urządzeniu rozruchowym", takim jak dysk twardy , dyskietka , płyta CD lub DVD . Ładuje i uruchamia pierwsze znalezione oprogramowanie rozruchowe, dając mu kontrolę nad komputerem.

BIOS używa urządzeń rozruchowych ustawionych w nieulotnej pamięci BIOS ( CMOS ) lub, w najwcześniejszych komputerach, przełącznikach DIP . BIOS sprawdza każde urządzenie w celu sprawdzenia, czy można je uruchomić, próbując załadować pierwszy sektor ( sektor rozruchowy ). Jeśli nie można odczytać sektora, BIOS przechodzi do następnego urządzenia. Jeśli sektor zostanie odczytany pomyślnie, niektóre BIOS-y będą również sprawdzać sygnaturę sektora startowego 0x55 0xAA w ostatnich dwóch bajtach sektora (który ma długość 512 bajtów), zanim zaakceptują sektor startowy i uznają, że urządzenie jest startowe.

Po znalezieniu urządzenia startowego system BIOS przekazuje kontrolę do załadowanego sektora. System BIOS nie interpretuje zawartości sektora rozruchowego w inny sposób niż sprawdzenie sygnatury sektora rozruchowego w ostatnich dwóch bajtach. Interpretacja struktur danych, takich jak tablice partycji i bloki parametrów systemu BIOS, jest wykonywana przez program rozruchowy w samym sektorze rozruchowym lub przez inne programy ładowane podczas procesu rozruchowego.

Urządzenie inne niż dysk, takie jak karta sieciowa, próbuje uruchomić się zgodnie z procedurą zdefiniowaną przez jego opcjonalną pamięć ROM lub jej odpowiednik zintegrowany z pamięcią ROM systemu BIOS płyty głównej. W związku z tym opcjonalne pamięci ROM mogą również wpływać lub zastępować proces rozruchu zdefiniowany przez pamięć ROM BIOS płyty głównej.

W przypadku standardu rozruchu z nośnika optycznego El Torito , napęd optyczny faktycznie emuluje dyskietkę 3,5" o dużej gęstości w systemie BIOS w celu rozruchu. Odczytywanie „pierwszego sektora” dysku CD-ROM lub DVD-ROM nie jest prostą operacją tak jak na dyskietce lub dysku twardym Ponadto złożoność nośnika utrudnia napisanie użytecznego programu rozruchowego w jednym sektorze Startowa wirtualna dyskietka może zawierać oprogramowanie, które zapewnia dostęp do nośnika optycznego w jego natywnej format.

Priorytet rozruchu

Użytkownik może wybrać priorytet rozruchu zaimplementowany przez BIOS. Na przykład większość komputerów ma dysk twardy, który jest rozruchowy, ale czasami istnieje dysk z nośnikami wymiennymi, który ma wyższy priorytet rozruchu, więc użytkownik może spowodować uruchomienie dysku wymiennego.

W większości nowoczesnych BIOS-ów kolejność rozruchu może zostać skonfigurowana przez użytkownika. W starszych BIOS-ach dostępne są opcje ograniczonego priorytetu rozruchu; w najwcześniejszych BIOS-ach zaimplementowano schemat stałego priorytetu, z dyskietkami na pierwszym miejscu, na drugim dyskiem stałym (tj. twardymi dyskami) i zazwyczaj bez obsługi innych urządzeń startowych, z zastrzeżeniem modyfikacji tych zasad przez zainstalowane opcjonalne ROMy. BIOS we wczesnych komputerach PC również zwykle uruchamiał się tylko z pierwszej stacji dyskietek lub pierwszego dysku twardego, nawet jeśli były zainstalowane dwa dyski.

Błąd rozruchu

Na oryginalnym IBM PC i XT, jeśli nie znaleziono dysku startowego, ROM BASIC był uruchamiany przez wywołanie INT 18h. Ponieważ niewiele programów używało języka BASIC w pamięci ROM, twórcy klonów pominęli go; wtedy komputer, który nie uruchomił się z dysku, wyświetlił "No ROM BASIC" i zatrzymałby się (w odpowiedzi na INT 18h).

Późniejsze komputery wyświetlały komunikat „Nie znaleziono dysku startowego”; niektórzy poprosiliby o włożenie dysku i naciśnięcie klawisza, aby ponowić proces rozruchu. Nowoczesny BIOS może nic nie wyświetlać lub może automatycznie przejść do narzędzia konfiguracji BIOS, gdy proces rozruchu nie powiedzie się.

Środowisko rozruchowe

Środowisko dla programu startowego jest bardzo proste: procesor jest w trybie rzeczywistym, a rejestry ogólnego przeznaczenia i segmentowe są niezdefiniowane, z wyjątkiem SS, SP, CS i DL. CS:IP zawsze wskazuje na adres fizyczny 0x07C00. Jakie wartości mają w rzeczywistości CS i IP, nie są dobrze zdefiniowane. Niektóre BIOS-y używają CS:IP, 0x0000:0x7C00podczas gdy inne mogą używać 0x07C0:0x0000. Ponieważ programy startowe są zawsze ładowane pod tym stałym adresem, nie ma potrzeby relokacji programu startowego. DL może zawierać numer napędu, używany z INT 13h , urządzenia startowego. SS:SP wskazuje na prawidłowy stos, który jest przypuszczalnie wystarczająco duży, aby obsługiwać przerwania sprzętowe, ale poza tym SS i SP są niezdefiniowane. (Stos musi byćjużskonfigurowany, aby przerwania były obsługiwane, a przerwania muszą być włączone w celu przerwania zegara systemowego, którego BIOS zawsze używa przynajmniej do utrzymania licznika czasu i którego inicjuje podczas testu POST, aby była aktywna i klawiatura działała.Klawiatura działa, nawet jeśli usługa klawiatury BIOS nie jest wywoływana; naciśnięcia klawiszy są odbierane i umieszczane w 15-znakowym buforze z wyprzedzeniem utrzymywanym przez BIOS). własny stos, ponieważ rozmiar stosu utworzonego przez BIOS jest nieznany, a jego lokalizacja jest również zmienna; chociaż program startowy może zbadać domyślny stos, sprawdzając SS:SP, łatwiej i krócej jest po prostu bezwarunkowo ustawić nowy stos.

W czasie rozruchu wszystkie usługi BIOS są dostępne, a pamięć pod adresem 0x00400zawiera tablicę wektorów przerwań . BIOS POST zainicjował liczniki systemowe, kontrolery przerwań, kontrolery DMA i inny sprzęt płyty głównej/chipsetu, aby wszystkie usługi BIOS były w stanie gotowości. Odświeżanie DRAM dla wszystkich systemowych DRAM w pamięci konwencjonalnej i rozszerzonej, ale niekoniecznie rozszerzonej, zostało skonfigurowane i działa. Do przerwania wektory odpowiadające przerwań BIOS zostały ustawione na miejscu, w odpowiednich punktach wejścia w systemie BIOS przerwanie sprzętowe wektory urządzeń zainicjowane przez system BIOS, zostały ustalone, aby wskazać BIOS przewidziane reakcji w miejscu wstrzyknięcia i innych przerwań, w tym te, które które BIOS generuje dla programów do podpięcia, zostały ustawione na domyślny fikcyjny ISR, który natychmiast powraca. BIOS utrzymuje zarezerwowany blok systemowej pamięci RAM pod adresami 0x00400–0x004FFz różnymi parametrami zainicjowanymi podczas testu POST. Cała pamięć pod adresem i powyżej 0x00500może być wykorzystana przez program startowy; może nawet się nadpisać.

Rozszerzenia (opcjonalne ROMy)

Karty peryferyjne, takie jak adaptery magistrali hosta dysku twardego i karty graficzne, mają własne oprogramowanie układowe, a pamięć ROM opcji rozszerzenia systemu BIOS może być częścią oprogramowania układowego karty rozszerzeń, która zapewnia dodatkowe funkcje systemu BIOS. Kod w opcjonalnych ROM-ach jest uruchamiany przed uruchomieniem systemu operacyjnego przez BIOS z pamięci masowej . Te pamięci ROM zazwyczaj testują i inicjują sprzęt, dodają nowe usługi BIOS lub zastępują istniejące usługi BIOS własnymi usługami. Na przykład kontroler SCSI zwykle ma pamięć ROM z rozszerzeniem BIOS, która dodaje obsługę dysków twardych podłączonych za pośrednictwem tego kontrolera. Rozszerzona pamięć ROM może w zasadzie zawierać system operacyjny lub implementować zupełnie inny proces uruchamiania, taki jak uruchamianie z sieci . Działanie systemu komputerowego zgodnego z IBM można całkowicie zmienić poprzez wyjęcie lub włożenie karty adaptera (lub układu ROM), która zawiera pamięć ROM rozszerzenia BIOS.

BIOS płyty głównej zazwyczaj zawiera kod dostępu do komponentów sprzętowych niezbędnych do rozruchu zintegrowanego wyświetlacza i zintegrowanej pamięci masowej. Ponadto karty adapterów wtykowych, takie jak SCSI , RAID , karty interfejsu sieciowego i karty graficzne często zawierają własny BIOS (np. Video BIOS ), uzupełniając lub zastępując kod systemu BIOS dla danego komponentu. Nawet urządzenia wbudowane w płytę główną mogą zachowywać się w ten sposób; ich opcjonalne ROM-y mogą być częścią BIOS-u płyty głównej.

Karta dodatkowa wymaga opcjonalnej pamięci ROM jeśli karta nie jest obsługiwana przez BIOS płyty głównej a karta musi zostać zainicjowana lub udostępniona przez usługi BIOS przed załadowaniem systemu operacyjnego (zwykle oznacza to, że jest to wymagane w procesie rozruchu ). Nawet jeśli nie jest to wymagane, opcjonalna pamięć ROM umożliwia korzystanie z karty adaptera bez ładowania oprogramowania sterownika z urządzenia pamięci masowej po rozpoczęciu rozruchu – z opcjonalną pamięcią ROM nie zajmuje czasu na załadowanie sterownika, sterownik nie zajmuje miejsce w pamięci RAM ani na dysku twardym, a oprogramowanie sterownika w pamięci ROM zawsze pozostaje w urządzeniu, więc nie można ich przypadkowo rozdzielić. Ponadto, jeśli pamięć ROM znajduje się na karcie, zarówno sprzęt peryferyjny, jak i oprogramowanie sterownika dostarczone przez pamięć ROM są instalowane razem bez dodatkowego wysiłku, aby zainstalować oprogramowanie. Dodatkową zaletą pamięci ROM w niektórych wczesnych systemach PC (w szczególności w IBM PCjr) było to, że ROM był szybszy niż pamięć RAM głównego systemu. (W nowoczesnych systemach sprawa jest bardzo odwrotna, a kod BIOS ROM jest zwykle kopiowany ("zacieniony") do pamięci RAM, dzięki czemu będzie działał szybciej.)

Istnieje wiele metod i narzędzi do badania zawartości różnych BIOS-ów płyt głównych i rozszerzeń ROM-ów, takich jak Microsoft DEBUG lub Unix dd .

Procedura rozruchu

Jeśli rozszerzająca pamięć ROM chce zmienić sposób uruchamiania systemu (na przykład z urządzenia sieciowego lub adaptera SCSI) w sposób kooperacyjny, może użyć interfejsu API specyfikacji rozruchu BIOS (BBS), aby zarejestrować swoją zdolność do tego. Po zarejestrowaniu rozszerzeń ROM przy użyciu interfejsów API BBS użytkownik może wybrać spośród dostępnych opcji rozruchu z poziomu interfejsu użytkownika systemu BIOS. Z tego powodu większość implementacji systemu BIOS dla komputerów PC zgodnych z systemem BBS nie pozwala użytkownikowi na wejście do interfejsu użytkownika systemu BIOS, dopóki rozszerzenia ROM nie zakończą wykonywania i rejestracji w interfejsie BBS API.

Ponadto, jeśli rozszerzająca pamięć ROM chce zmienić sposób jednostronnego uruchamiania systemu, może po prostu przechwycić przerwanie 19h lub inne przerwania normalnie wywoływane z przerwania 19h, takie jak przerwanie 13h, usługa dyskowa BIOS-u, aby przechwycić proces uruchamiania BIOS-u. Następnie może zastąpić proces rozruchu systemu BIOS jednym z własnych lub może po prostu zmodyfikować sekwencję rozruchową, wstawiając do niej własne akcje rozruchowe, zapobiegając wykrywaniu przez system BIOS niektórych urządzeń jako rozruchowych lub obu. Przed opublikowaniem specyfikacji rozruchu systemu BIOS był to jedyny sposób, w jaki rozszerzenia ROM mogły wdrożyć funkcję rozruchu dla urządzeń, które nie były obsługiwane przez natywny system BIOS płyty głównej.

Inicjalizacja

Gdy BIOS płyty głównej zakończy test POST, większość wersji BIOS-u wyszukuje opcjonalne moduły ROM, zwane także ROMami rozszerzeń BIOS-u, i uruchamia je. BIOS płyty głównej skanuje w poszukiwaniu rozszerzonych ROM-ów w części „ górnego obszaru pamięci ” (część przestrzeni adresowej trybu rzeczywistego x86 pod adresem 0xA0000 i wyższym) i uruchamia kolejno każdą znalezioną pamięć ROM. Aby wykryć mapowane w pamięci opcjonalne ROM -y ISA , implementacja BIOS-u skanuje przestrzeń adresową trybu rzeczywistego od granic 0x0C0000do 0x0F0000KB (2048 bajtów), szukając dwubajtowej sygnatury ROM : 0x55, po której następuje 0xAA. W prawidłowym rozszerzeniu ROM po tej sygnaturze następuje pojedynczy bajt wskazujący liczbę 512-bajtowych bloków, jakie rozszerzenie ROM zajmuje w rzeczywistej pamięci, a następny bajt to punkt wejścia opcji ROM (znany również jako „przesunięcie wejścia”) . Kontrolna z określoną liczbę bloków 512-bajtowych jest obliczana, a jeśli ROM posiada ważną kontrolną, transfery BIOS kontrolować na adres wejściowej, która w normalnym BIOS rozszerzenia ROM powinien być początkiem inicjalizacji rutynowych rozszerzenia.

W tym momencie, kod rozszerzenia ROM przejmuje kontrolę, zwykle testując i inicjując sprzęt, który kontroluje oraz rejestrując wektory przerwań do użycia przez aplikacje po uruchomieniu. Może korzystać z usług systemu BIOS (w tym tych dostarczanych przez wcześniej zainicjowane opcjonalne pamięci ROM) w celu zapewnienia interfejsu konfiguracji użytkownika, wyświetlania informacji diagnostycznych lub wykonywania innych czynności, których wymaga. Możliwe, że opcjonalna pamięć ROM nie powróci do BIOS-u, całkowicie uniemożliwiając sekwencję rozruchową BIOS-u.

Opcjonalna pamięć ROM powinna normalnie powrócić do systemu BIOS po zakończeniu procesu inicjalizacji. Gdy (i jeśli) opcjonalny ROM powróci, BIOS kontynuuje wyszukiwanie kolejnych opcjonalnych ROM-ów, wywołując każdą, gdy zostanie znaleziona, aż cały obszar opcji ROM w przestrzeni pamięci zostanie przeskanowany.

Fizyczne umieszczenie

Układy BIOS w Dell 310, które zostały zaktualizowane przez wymianę układów

Opcjonalne pamięci ROM zwykle znajdują się na kartach adapterów. Jednak oryginalny komputer PC, a być może także komputer PC XT, ma zapasowe gniazdo pamięci ROM na płycie głównej („płyta systemowa” w terminologii IBM), do którego można włożyć opcjonalną pamięć ROM, a cztery pamięci ROM zawierające interpreter języka BASIC mogą być również usuwane i zastępowane niestandardowymi ROMami, które mogą być opcjonalnymi ROMami. IBM PCjr jest wyjątkowa wśród komputerów w posiadające dwa gniazda kartridż z przodu. Wkłady w tych gniazdach mapują się do tego samego obszaru górnego obszaru pamięci, który jest używany dla opcjonalnych pamięci ROM, a wkładki mogą zawierać opcjonalne moduły ROM, które system BIOS mógłby rozpoznać. Wkłady mogą również zawierać inne typy modułów ROM, takie jak programy BASIC, które są obsługiwane inaczej. Jedna kaseta PCjr może zawierać kilka modułów ROM różnych typów, prawdopodobnie przechowywanych razem w jednym układzie ROM.

Usługi systemu operacyjnego

Pamięć ROM systemu BIOS jest dostosowana do sprzętu konkretnego producenta, co umożliwia dostarczanie w ustandaryzowany sposób programom, w tym systemom operacyjnym, usług niskiego poziomu (takich jak odczyt naciśnięcia klawisza lub zapisanie sektora danych na dyskietce). Na przykład komputer IBM PC może mieć monochromatyczny lub kolorowy adapter wyświetlania (używający różnych adresów pamięci wyświetlania i sprzętu), ale pojedyncze, standardowe wywołanie systemowe systemu BIOS może zostać wywołane w celu wyświetlenia znaku w określonej pozycji na ekranie w tryb tekstowy lub tryb graficzny .

BIOS udostępnia niewielką bibliotekę podstawowych funkcji wejścia/wyjścia do obsługi urządzeń peryferyjnych (takich jak klawiatura, podstawowe funkcje wyświetlania tekstu i grafiki itd.). Podczas korzystania z MS-DOS, dostęp do usług BIOS może być uzyskany przez program aplikacji (lub przez MS-DOS) przez wykonanie instrukcji przerwania INT 13h w celu uzyskania dostępu do funkcji dyskowych lub przez wykonanie jednego z wielu innych udokumentowanych wywołań przerwań BIOS w celu uzyskania dostępu do wideo wyświetlacz , klawiatura , kaseta i inne funkcje urządzenia.

Systemy operacyjne i oprogramowanie wykonawcze, które mają zastąpić tę podstawową funkcję oprogramowania układowego, zapewniają zastępcze interfejsy oprogramowania do oprogramowania aplikacji. Aplikacje mogą również same świadczyć te usługi. Zaczęło się to nawet w latach 80. w systemie MS-DOS , kiedy programiści zauważyli, że korzystanie z usług wideo BIOS do wyświetlania grafiki jest bardzo powolne. Aby zwiększyć szybkość wyświetlania ekranu, wiele programów omijało BIOS i bezpośrednio programowało sprzęt do wyświetlania wideo. Inni programiści zajmujący się grafiką, szczególnie, ale nie wyłącznie w demoscenach , zauważyli, że istnieją techniczne możliwości kart graficznych do komputerów PC, które nie są obsługiwane przez BIOS IBM i nie można ich wykorzystać bez obejścia go. Ponieważ system BIOS zgodny z AT działał w trybie rzeczywistym firmy Intel , systemy operacyjne działające w trybie chronionym na procesorach 286 i nowszych wymagały sterowników urządzeń sprzętowych zgodnych z działaniem w trybie chronionym w celu zastąpienia usług systemu BIOS.

W nowoczesnych komputerach PC z nowoczesnymi systemami operacyjnymi (takimi jak Windows i Linux ) wywołania przerwań BIOS są używane tylko podczas uruchamiania i początkowego ładowania systemów operacyjnych. Przed wyświetleniem pierwszego ekranu graficznego systemu operacyjnego wejścia i wyjścia są zazwyczaj obsługiwane przez system BIOS. Menu startowe, takie jak menu tekstowe systemu Windows, które umożliwia użytkownikom wybór systemu operacyjnego do uruchomienia, uruchomienie w trybie awaryjnym lub użycie ostatniej znanej dobrej konfiguracji, jest wyświetlane w systemie BIOS i odbiera dane wprowadzane z klawiatury przez system BIOS.

Wiele nowoczesnych komputerów może nadal uruchamiać i uruchamiać starsze systemy operacyjne, takie jak MS-DOS lub DR-DOS, które w dużym stopniu opierają się na BIOS-ie konsoli i we/wy dysku, pod warunkiem, że system ma BIOS lub oprogramowanie układowe UEFI obsługujące CSM.

Aktualizacje mikrokodu procesora

Procesory Intel mają reprogramowalny mikrokod od mikroarchitektury P6 . Procesory AMD mają reprogramowalny mikrokod od mikroarchitektury K7 . BIOS zawiera poprawki do mikrokodu procesora, które naprawiają błędy w początkowym mikrokodzie procesora; mikrokod jest ładowany do pamięci SRAM procesora, więc przeprogramowanie nie jest trwałe, dlatego ładowanie aktualizacji mikrokodu odbywa się za każdym razem, gdy system jest włączany. Bez reprogramowalnego mikrokodu wymagana byłaby kosztowna wymiana procesora; na przykład błąd Pentium FDIV stał się kosztownym fiaskiem dla Intela, ponieważ wymagał wycofania produktu, ponieważ wadliwy mikrokod oryginalnego procesora Pentium nie mógł zostać przeprogramowany. Systemy operacyjne mogą również aktualizować mikrokod procesora głównego .

Identyfikacja

Niektóre systemy BIOS zawierają tabelę opisu licencji oprogramowania (SLIC), podpis cyfrowy umieszczony w systemie BIOS przez producenta oryginalnego sprzętu (OEM), na przykład Dell . SLIC jest wstawiany do tabeli danych ACPI i nie zawiera aktywnego kodu.

Producenci komputerów, którzy rozpowszechniają wersje OEM oprogramowania Microsoft Windows i aplikacji Microsoft, mogą używać SLIC do uwierzytelniania licencji na dysku instalacyjnym OEM systemu Windows i dysku odzyskiwania systemu zawierającym oprogramowanie Windows. Systemy z kodem SLIC można wstępnie aktywować za pomocą klucza produktu OEM i weryfikują one certyfikat OEM sformatowany w formacie XML względem SLIC w systemie BIOS w ramach samoaktywacji (zobacz Preinstalacja zablokowana systemu , SLP). Jeśli użytkownik wykona nową instalację systemu Windows, będzie musiał posiadać zarówno klucz OEM (SLP lub COA), jak i certyfikat cyfrowy dla swojego SLIC, aby ominąć aktywację. Można to osiągnąć, jeśli użytkownik wykona przywracanie przy użyciu wstępnie dostosowanego obrazu dostarczonego przez producenta OEM. Użytkownicy zaawansowani mogą skopiować niezbędne pliki certyfikatów z obrazu OEM, zdekodować klucz produktu SLP, a następnie ręcznie przeprowadzić aktywację SLP. Cracki dla nieoryginalnych dystrybucji Windows zwykle edytują SLIC lub emulują go w celu ominięcia aktywacji systemu Windows.

Podkręcanie

Niektóre implementacje BIOS-u umożliwiają przetaktowywanie , czyli działanie, w którym procesor jest dostosowywany do wyższej częstotliwości taktowania niż jego ocena producenta w celu zagwarantowania możliwości. Przetaktowywanie może jednak poważnie zagrozić niezawodności systemu w niewystarczająco chłodzonych komputerach i ogólnie skrócić żywotność komponentów. Nieprawidłowo wykonane podkręcanie może również spowodować tak szybkie przegrzanie podzespołów, że same się zniszczą.

Nowoczesne zastosowanie

Niektóre starsze systemy operacyjne , na przykład MS-DOS , wykorzystują BIOS do wykonywania większości zadań wejścia/wyjścia w komputerze.

Wywołanie trybu rzeczywistego usług BIOS jest nieefektywne dla trybu chronionego (i trybie długiego ) systemów operacyjnych. Wywołania przerwań BIOS nie są używane przez nowoczesne wielozadaniowe systemy operacyjne po początkowym załadowaniu.

W latach 90. BIOS zapewniał pewne interfejsy trybu chronionego dla systemów operacyjnych Microsoft Windows i Unix , takich jak Advanced Power Management (APM), Plug and Play BIOS , Desktop Management Interface (DMI), PCI BIOS, VESA BIOS Extensions (VBE) i Specyfikacja wieloprocesorowa (MPS). Począwszy od 2000 roku, większość BIOS-ów zapewnia interfejsy ACPI , SMBIOS , VBE i e820 dla nowoczesnych systemów operacyjnych.

Po załadowaniu systemów operacyjnych kod trybu zarządzania systemem nadal działa w pamięci SMRAM. Od 2010 r. technologia BIOS przechodzi proces przejściowy w kierunku UEFI .

Konfiguracja

Narzędzie konfiguracji

Historycznie BIOS w IBM PC i XT nie miał wbudowanego interfejsu użytkownika. Wersje BIOS we wcześniejszych komputerach (klasa XT) nie były konfigurowalne programowo; zamiast tego użytkownicy ustawiają opcje za pomocą przełączników DIP na płycie głównej. Późniejsze komputery, w tym wszystkie kompatybilne z IBM z procesorami 80286, miały podtrzymywaną bateryjnie nieulotną pamięć BIOS (układ CMOS RAM), która zawierała ustawienia BIOS. Te ustawienia, takie jak typ adaptera wideo, rozmiar pamięci i parametry dysku twardego, można było skonfigurować tylko przez uruchomienie programu konfiguracyjnego z dysku, a nie wbudowanego w pamięć ROM. Do IBM AT włożono specjalną „dyskietkę referencyjną”, aby skonfigurować ustawienia, takie jak rozmiar pamięci.

Wczesne wersje systemu BIOS nie miały haseł ani opcji wyboru urządzenia rozruchowego. BIOS został zakodowany tak, aby uruchamiał się z pierwszej stacji dyskietek lub, jeśli to się nie powiodło, z pierwszego dysku twardego. Kontrola dostępu we wczesnych maszynach klasy AT odbywała się za pomocą fizycznego przełącznika blokady (co nie było trudne do pokonania, jeśli obudowę komputera można było otworzyć). Każdy, kto potrafił włączyć komputer, mógł go uruchomić.

Później komputery klasy 386 zaczęły integrować narzędzie konfiguracji BIOS w samej pamięci ROM, wraz z kodem BIOS; komputery te zwykle uruchamiają się w narzędziu konfiguracji systemu BIOS, jeśli zostanie naciśnięty określony klawisz lub kombinacja klawiszy, w przeciwnym razie zostanie wykonany proces POST i rozruch systemu BIOS.

Nagradzane narzędzie do konfiguracji systemu BIOS na standardowym komputerze PC

Nowoczesne narzędzie do konfiguracji systemu BIOS ma tekstowy interfejs użytkownika (TUI) lub graficzny interfejs użytkownika (GUI), do którego dostęp uzyskuje się po naciśnięciu określonego klawisza na klawiaturze podczas uruchamiania komputera. Zwykle klucz jest reklamowany przez krótki czas podczas wczesnego uruchamiania, na przykład „Naciśnij DEL, aby wejść do konfiguracji”. Rzeczywisty klucz zależy od konkretnego sprzętu. Funkcje dostępne w narzędziu konfiguracji systemu BIOS zazwyczaj obejmują:

  • Konfigurowanie, włączanie i wyłączanie komponentów sprzętowych
  • Ustawianie czasu systemowego
  • Ustawianie kolejności rozruchu
  • Ustawianie różnych haseł, takich jak hasło zabezpieczające dostęp do interfejsu użytkownika systemu BIOS i zapobiegające uruchamianiu systemu przez złośliwych użytkowników z nieautoryzowanych przenośnych urządzeń pamięci masowej lub hasło do uruchamiania systemu

Monitorowanie sprzętu

Nowoczesny ekran konfiguracji BIOS często zawiera zakładkę Stan zdrowia komputera lub Monitorowanie sprzętu , która bezpośrednio łączy się z chipem Monitora sprzętowego płyty głównej. Umożliwia to monitorowanie temperatury procesora i obudowy , napięcia dostarczanego przez zasilacz , a także monitorowanie i sterowanie prędkością wentylatorów podłączonych do płyty głównej.

Po uruchomieniu systemu monitorowanie sprzętu i sterowanie wentylatorem komputera odbywa się zwykle bezpośrednio przez sam układ Monitora sprzętowego, który może być oddzielnym układem, połączonym przez I²C lub SMBus lub być częścią rozwiązania Super I/O , połączonego poprzez Low Pin Count (LPC). Niektóre systemy operacyjne, takie jak NetBSD z envsys i OpenBSD z sysctl hw.sensors , posiadają zintegrowany interfejs z monitorami sprzętowymi.

Jednak w niektórych przypadkach system BIOS udostępnia również podstawowe informacje o monitorowaniu sprzętu za pomocą interfejsu ACPI , w którym to przypadku system operacyjny może używać interfejsu ACPI do monitorowania sprzętu.

Przeprogramowanie

Zestaw do wymiany systemu BIOS dla Dell 310 z końca lat 80-tych. W zestawie dwa żetony, plastikowy uchwyt na żetony i ściągacz do chipów.

W nowoczesnych komputerach BIOS jest przechowywany w pamięci EEPROM lub NOR flash z możliwością wielokrotnego zapisu , co pozwala na wymianę i modyfikację zawartości. To przepisywanie treści jest czasami nazywane miganiem . Można to zrobić za pomocą specjalnego programu, zwykle dostarczanego przez producenta systemu, lub w trybie POST , z obrazem BIOS na dysku twardym lub pendrive'ie. Plik zawierający taką zawartość jest czasami nazywany „obrazem systemu BIOS”. BIOS może zostać przeflashowany w celu uaktualnienia do nowszej wersji w celu naprawienia błędów lub zapewnienia lepszej wydajności lub obsługi nowszego sprzętu.

Sprzęt komputerowy

American Megatrends BIOS 686. Ten układ BIOS jest umieszczony w pakiecie PLCC w gnieździe.

Oryginalny IBM PC BIOS (i kaseta BASIC) był przechowywany na programowanych maskach chipach pamięci tylko do odczytu (ROM) w gniazdach na płycie głównej. ROMy mogą być wymieniane, ale nie zmieniane przez użytkowników. Aby umożliwić aktualizacje, wiele kompatybilnych komputerów używało reprogramowalnych urządzeń pamięci BIOS, takich jak EPROM , EEPROM i nowsze urządzenia pamięci flash (zwykle NOR flash ). Według Roberta Bravera, prezesa producenta BIOS-u Micro Firmware, chipy Flash BIOS stały się powszechne około 1995 roku, ponieważ elektrycznie kasowalne chipy PROM (EEPROM) są tańsze i łatwiejsze do zaprogramowania niż standardowe chipy PROM ( EPROM ) kasowalne w ultrafiolecie . Układy Flash są programowane (i przeprogramowywane) w obwodzie, podczas gdy układy EPROM muszą zostać usunięte z płyty głównej w celu ponownego zaprogramowania. Wersje systemu BIOS są aktualizowane w celu wykorzystania nowszych wersji sprzętu i usunięcia błędów w poprzednich wersjach systemu BIOS.

Począwszy od IBM AT, komputery PC obsługiwały zegar sprzętowy ustawiany przez BIOS. Miał bit stulecia, który pozwalał na ręczną zmianę wieku, gdy nastąpił rok 2000. Większość wersji BIOS stworzonych w 1995 i prawie wszystkie wersje BIOS w 1997 wspierały rok 2000 przez automatyczne ustawienie bitu stulecia po północy, 31 grudnia 1999.

Pierwsze chipy flash zostały dołączone do szyny ISA . Począwszy od 1998 roku, BIOS flash został przeniesiony na magistralę LPC , funkcjonalny zamiennik ISA, po nowej standardowej implementacji znanej jako "centrum oprogramowania układowego" (FWH). W 2006 roku pamięć flash BIOS została przeniesiona na magistralę SPI .

Rozmiar systemu BIOS i pojemność pamięci ROM, EEPROM lub innych nośników, na których może być przechowywany, z czasem rosły wraz z dodawaniem nowych funkcji do kodu; Wersje BIOS są teraz dostępne w rozmiarach do 32 megabajtów. Dla kontrastu, oryginalny BIOS IBM PC był zawarty w masce ROM o wielkości 8 KB. Niektóre nowoczesne płyty główne zawierają jeszcze większe układy scalone pamięci flash NAND, które są w stanie przechowywać całe kompaktowe systemy operacyjne, takie jak niektóre dystrybucje Linuksa . Na przykład niektóre notebooki ASUS zawierały system Splashtop OS wbudowany w ich układy scalone pamięci flash NAND. Jednak pomysł włączenia systemu operacyjnego wraz z BIOS-em do pamięci ROM komputera nie jest nowy; w latach 80. Microsoft oferował opcję ROM dla MS-DOS i była zawarta w ROM-ach niektórych klonów PC, takich jak Tandy 1000 HX .

Inny typ układu oprogramowania układowego został znaleziony na IBM PC AT i wczesnych kompatybilnych. W AT interfejs klawiatury był kontrolowany przez mikrokontroler z własną programowalną pamięcią. W IBM AT było to urządzenie z 40-pinowym gniazdem, podczas gdy niektórzy producenci używali wersji EPROM tego chipa, która przypominała EPROM. Kontrolerowi przypisano również funkcję bramki A20 do zarządzania pamięcią powyżej zakresu jednego megabajta; czasami konieczne było uaktualnienie tego „BIOSu klawiatury”, aby skorzystać z oprogramowania, które może używać górnej pamięci.

BIOS może zawierać komponenty takie jak Memory Reference Code (MRC), który jest odpowiedzialny za inicjalizację pamięci (np. SPD i inicjowanie taktowania pamięci ).

Nowoczesny system BIOS zawiera oprogramowanie układowe Intel Management Engine lub AMD Platform Security Processor .

Sprzedawcy i produkty

Porównanie różnych implementacji BIOS
Spółka NagrodaBIOS AMIBIOS Insyde MorzeBIOS
Licencja Prawnie zastrzeżony Prawnie zastrzeżony Prawnie zastrzeżony LGPL v3
Utrzymywane / rozwijane Zakończony Zakończony Zakończony tak
32-bitowe wywołania PCI BIOS tak tak tak tak
AHCI tak tak tak tak
APM tak tak Tak (1.2) Tak (1.2)
BBS tak tak tak tak
Menu startowe tak tak tak tak
Kompresja Tak ( LHA ) Tak (LHA) Tak (RLE) Tak (LZMA)
CMOS tak tak tak tak
EDD tak tak tak tak
ESCD tak tak ? Nie
Flash z pamięci ROM ? tak ? Nie
Język montaż montaż montaż C
LBA Tak (48) Tak (48) tak Tak (48)
Specyfikacja wieloprocesorowa tak tak tak tak
Opcja ROM tak tak tak tak
Hasło tak tak tak Nie
PMM ? tak ? tak
Ekran konfiguracji tak tak tak Nie
SMBIOS tak tak tak tak
Ekran powitalny Tak (EPA) Tak ( PCX ) tak Tak (BMP, JPG)
TPM Nieznany Nieznany Nieznany Trochę
Uruchamianie USB tak tak tak tak
rozdzielacz USB ? ? ? tak
Klawiatura USB tak tak tak tak
Mysz USB tak tak tak tak

IBM opublikował całe zestawienie BIOSu dla swoich oryginalnych komputerów PC, PC XT, PC AT i innych współczesnych modeli komputerów PC w dodatku do podręcznika IBM PC Technical Reference Manual dla każdego typu maszyny. Efektem publikacji list BIOS jest to, że każdy może dokładnie zobaczyć, co robi ostateczny BIOS i jak to robi.

Compaq Portable 386 BIOS

W maju 1984 r. firma Phoenix Software Associates wydała swój pierwszy ROM-BIOS, który umożliwił producentom OEM tworzenie zasadniczo w pełni kompatybilnych klonów bez konieczności samodzielnej inżynierii wstecznej IBM PC BIOS, tak jak zrobił to Compaq w przypadku Portable , przyczyniając się do rozwoju komputerów PC. Kompatybilny z branżą i sprzedażą wersji systemu DOS innych niż IBM. A pierwszy BIOS American Megatrends (AMI) został wydany w 1986 roku.

Nowe standardy wszczepione do BIOS-u zwykle nie zawierają pełnej dokumentacji publicznej ani żadnych wykazów BIOS-u. W rezultacie nie jest tak łatwo poznać szczegółowe informacje o wielu dodatkach do BIOS-u innych niż IBM, jak o podstawowych usługach BIOS-u.

Większość dostawców płyt głównych do komputerów PC licencjonowała „rdzeń” systemu BIOS i zestaw narzędzi od komercyjnej strony trzeciej, znanej jako „niezależny dostawca systemu BIOS” lub IBV. Następnie producent płyty głównej dostosował ten system BIOS do własnego sprzętu. Z tego powodu zaktualizowane BIOS-y są zwykle pozyskiwane bezpośrednio od producenta płyty głównej. Dawni główni dostawcy BIOS-u to American Megatrends (AMI), Insyde Software , Phoenix Technologies , Byosoft, Award Software i Microid Research. Microid Research and Award Software zostały przejęte przez Phoenix Technologies w 1998 roku; Phoenix później wycofał markę Award. Firma General Software , która również została przejęta przez Phoenix w 2007 roku, sprzedawała BIOS dla systemów wbudowanych opartych na procesorach Intela.

Społeczność open-source zwiększyły swoje wysiłki w celu opracowania zastępstwo dla zastrzeżonych BIOS i ich przyszłych wcieleń z otwartego odpowiednika pozyskiwane przez libreboot , coreboot i OpenBIOS / Open Firmware projektów. AMD dostarczyło specyfikacje produktów dla niektórych chipsetów, a Google sponsoruje projekt. Producent płyt głównych Tyan oferuje coreboot obok standardowego BIOS-u dzięki swojej linii płyt głównych Opteron .

Bezpieczeństwo

American Megatrends BIOS wykazujące „ Intel CPU ucode Loading Error” po nieudanej próbie przesłania poprawki mikrokodu do CPU
Odłączony układ BIOS

Układy pamięci EEPROM i Flash są korzystne, ponieważ mogą być łatwo aktualizowane przez użytkownika; producenci sprzętu zwykle wydają aktualizacje BIOS-u w celu uaktualnienia swoich produktów, poprawienia kompatybilności i usunięcia błędów . Jednak ta przewaga wiązała się z ryzykiem, że niewłaściwie wykonana lub przerwana aktualizacja systemu BIOS może spowodować, że komputer lub urządzenie będzie bezużyteczne. Aby uniknąć takich sytuacji, nowsze BIOS-y używają „bloku rozruchowego”; część systemu BIOS, która działa jako pierwsza i musi być aktualizowana osobno. Ten kod sprawdza, czy pozostała część systemu BIOS jest nienaruszona (przy użyciu sum kontrolnych skrótu lub innych metod) przed przekazaniem do niego kontroli. Jeśli blok rozruchowy wykryje jakiekolwiek uszkodzenie w głównym systemie BIOS, zwykle ostrzega użytkownika, że ​​proces odzyskiwania musi zostać zainicjowany przez rozruch z nośnika wymiennego (dyskietki, dysku CD lub dysku flash USB), aby użytkownik mógł ponownie spróbować zaktualizować system BIOS. Niektóre płyty główne mają zapasowy system BIOS (czasami nazywany płytami DualBIOS), który umożliwia odzyskanie systemu po uszkodzeniu systemu BIOS.

Istnieje co najmniej pięć znanych wirusów atakujących BIOS, z których dwa służyły do ​​celów demonstracyjnych. Pierwszym znalezionym na wolności był Mebromi , skierowany do chińskich użytkowników.

Pierwszym wirusem BIOS-u był BIOS Meningitis, który zamiast wymazywać chipy BIOS-u, zainfekował je. Zapalenie opon mózgowych BIOS jest stosunkowo nieszkodliwe w porównaniu z wirusem takim jak CIH .

Drugim wirusem BIOS był CIH , znany również jako "Wirus Czarnobyla", który był w stanie wymazać zawartość pamięci flash ROM BIOS na kompatybilnych chipsetach. CIH pojawił się w połowie 1998 r. i stał się aktywny w kwietniu 1999 r. Często zainfekowane komputery nie mogły się już uruchamiać, a ludzie musieli usuwać flash ROM IC z płyty głównej i przeprogramowywać go. CIH zaatakował rozpowszechniony wówczas chipset płyty głównej Intel i430TX i wykorzystał fakt, że systemy operacyjne Windows 9x , również wówczas szeroko rozpowszechnione, umożliwiały bezpośredni dostęp sprzętowy do wszystkich programów.

Nowoczesne systemy nie są podatne na CIH, ponieważ używane są różne chipsety, które są niekompatybilne z chipsetem Intel i430TX, a także z innymi typami pamięci flash ROM IC. Istnieje również dodatkowa ochrona przed przypadkowym przepisaniem BIOS-u w postaci bloków rozruchowych, które są chronione przed przypadkowym nadpisaniem lub systemami wyposażonymi w podwójny i poczwórny BIOS, które mogą w przypadku awarii użyć zapasowego BIOS-u. Ponadto wszystkie nowoczesne systemy operacyjne, takie jak FreeBSD , Linux , macOS , systemy Windows oparte na Windows NT , takie jak Windows 2000 , Windows XP i nowsze, nie pozwalają programom trybu użytkownika na bezpośredni dostęp do sprzętu.

W rezultacie od 2008 r. CIH stał się zasadniczo nieszkodliwy, w najgorszym przypadku powodując irytację poprzez infekowanie plików wykonywalnych i uruchamianie oprogramowania antywirusowego. Jednak inne wirusy BIOS-u pozostają możliwe; ponieważ większość użytkowników domowych systemu Windows bez funkcji UAC systemu Windows Vista/7 uruchamia wszystkie aplikacje z uprawnieniami administratora, współczesny wirus podobny do CIH może w zasadzie nadal uzyskiwać dostęp do sprzętu bez uprzedniego użycia exploita. System operacyjny OpenBSD uniemożliwia wszystkim użytkownikom uzyskanie tego dostępu, a łatka grsecurity dla jądra Linuksa również domyślnie zapobiega bezpośredniemu dostępowi do sprzętu, z tą różnicą, że atakujący wymaga znacznie trudniejszego exploita na poziomie jądra lub ponownego uruchomienia komputera.

Drugi wirus BIOS był techniką zaprezentowaną przez Johna Heasmana, głównego konsultanta ds. bezpieczeństwa w brytyjskiej firmie Next-Generation Security Software. W 2006 roku na konferencji Black Hat Security Conference pokazał, jak podnosić uprawnienia i odczytywać pamięć fizyczną za pomocą złośliwych procedur, które zastępowały normalne funkcje ACPI przechowywane w pamięci flash.

Trzecim wirusem BIOS była technika zwana „trwałą infekcją BIOS-u”. Pojawił się w 2009 roku na konferencji bezpieczeństwa CanSecWest w Vancouver oraz na konferencji SyScan Security w Singapurze. Badacze Anibal Sacco i Alfredo Ortega z Core Security Technologies zademonstrowali, jak wstawić złośliwy kod do procedur dekompresji w BIOS-ie, umożliwiając niemal pełną kontrolę nad komputerem podczas uruchamiania, nawet przed uruchomieniem systemu operacyjnego. Weryfikacja koncepcji nie wykorzystuje luki w implementacji BIOS-u, a jedynie obejmuje normalne procedury flashowania BIOS-u. W związku z tym wymaga fizycznego dostępu do komputera lub użytkownika root. Pomimo tych wymagań Ortega podkreślił głębokie implikacje odkrycia swojego i Sacco: „Możemy załatać sterownik, aby usunąć w pełni działającego rootkita . Mamy nawet mały kod, który może usunąć lub wyłączyć program antywirusowy”.

Mebromi to trojan, który atakuje komputery z systemem AwardBIOS , Microsoft Windows i oprogramowaniem antywirusowym dwóch chińskich firm: Rising Antivirus i Jiangmin KV Antivirus. Mebromi instaluje rootkita, który infekuje główny rekord rozruchowy .

W wywiadzie dla agencji 60 Minutes z grudnia 2013 r. Deborah Plunkett, dyrektor ds. zapewniania informacji w Agencji Bezpieczeństwa Narodowego USA, stwierdziła, że ​​NSA odkryła i udaremniła możliwy atak BIOS-u ze strony obcego państwa, wymierzony w amerykański system finansowy. Program cytował anonimowe źródła twierdzące, że był to chiński spisek. Jednak kolejne artykuły w The Guardian , The Atlantic , Wired i The Register obaliły twierdzenia NSA.

Nowsze platformy Intela mają włączoną technologię Intel Boot Guard (IBG), która sprawdza podpis cyfrowy BIOS przy starcie, a klucz publiczny IBG jest scalany z PCH płyty głównej . Użytkownicy końcowi nie mogą wyłączyć tej funkcji.

Alternatywy i następcy

Starszy system BIOS komputera PC został zastąpiony bardziej złożonym interfejsem Unified Extensible Firmware Interface (UEFI) w wielu nowych komputerach. UEFI to specyfikacja, która zastępuje interfejs środowiska wykonawczego starszego systemu BIOS. Początkowo napisany dla architektury Intel Itanium , UEFI jest teraz dostępny dla platform architektury x86 , x86-64 i ARM ; rozwój specyfikacji jest napędzany przez Unified EFI Forum , branżową Grupę Specjalnych Zainteresowań . Uruchamianie EFI jest obsługiwane tylko w wersjach systemu Microsoft Windows obsługujących GPT , jądro systemu Linux 2.6.1 i nowsze oraz macOS na komputerach Mac z procesorami Intel . Od 2014 roku nowy sprzęt komputerowy jest dostarczany głównie z oprogramowaniem układowym UEFI. Architektura zabezpieczenia przed rootkitami może również uniemożliwić systemowi uruchamianie własnych zmian oprogramowania użytkownika, co sprawia, że ​​UEFI jest kontrowersyjna jako zamiennik starszego systemu BIOS w społeczności otwartego sprzętu . Ponadto system Windows 11 wymaga do uruchomienia UEFI.

Inne alternatywy dla funkcjonalności „Legacy BIOS” na świecie x86 obejmują coreboot i libreboot .

Niektóre serwery i stacje robocze używają niezależnego od platformy Open Firmware (IEEE-1275) opartego na języku programowania Forth ; jest dołączany do komputerów SPARC firmy Sun , linii IBM RS/6000 i innych systemów PowerPC , takich jak płyty główne CHRP , wraz z opartym na architekturze x86 OLPC XO-1 .

Co najmniej od 2015 r. firma Apple usunęła obsługę starszych systemów BIOS z komputerów MacBook Pro . W związku z tym narzędzie BIOS nie obsługuje już starszej opcji i wyświetla komunikat „Tryb Legacy nie jest obsługiwany w tym systemie”. W 2017 r. Intel ogłosił, że do 2020 r. usunie obsługę starszego systemu BIOS. Od 2019 r. nowe komputery OEM na platformie Intel nie obsługują już starszej opcji.

Zobacz też

Uwagi

Bibliografia

Dalsza lektura

Zewnętrzne linki