BIOS

Aus besserwiki.de
Ein Paar AMD-BIOS-Chips für einen Dell 310-Computer aus den 1980er Jahren

Das BIOS (/ˈbɒs, -s/, BY-oss, -ohss; Basic Input/Output System, auch System-BIOS, ROM-BIOS, BIOS-ROM oder PC-BIOS) ist eine Firmware, die Laufzeitdienste für Betriebssysteme und Programme bereitstellt und die Hardware-Initialisierung während des Bootvorgangs (Einschalten) durchführt. Die BIOS-Firmware ist auf der Systemplatine eines IBM-PCs oder eines IBM-PC-kompatiblen Systems vorinstalliert und existiert auch in UEFI-basierten Systemen. Der Name geht auf das Basic Input/Output System zurück, das 1975 im CP/M-Betriebssystem verwendet wurde. Das ursprünglich für den IBM PC entwickelte BIOS wurde von einigen Unternehmen (z. B. Phoenix Technologies) zurückentwickelt, um kompatible Systeme zu schaffen. Die Schnittstelle dieses ursprünglichen Systems dient als De-facto-Standard.

Das BIOS in modernen PCs initialisiert und testet die Hardwarekomponenten des Systems (Power-on self-test) und lädt einen Bootloader von einem Massenspeichergerät, der dann ein Betriebssystem initialisiert. In der DOS-Ära stellte das BIOS BIOS-Interrupt-Aufrufe für die Tastatur, den Bildschirm, den Speicher und andere Eingabe-/Ausgabegeräte bereit, die eine Schnittstelle zu Anwendungsprogrammen und dem Betriebssystem bildeten. Neuere Betriebssysteme verwenden die BIOS-Interrupt-Aufrufe nach dem Start nicht mehr.

Die meisten BIOS-Implementierungen wurden speziell für ein bestimmtes Computer- oder Motherboard-Modell entwickelt, indem sie eine Schnittstelle zu verschiedenen Geräten, insbesondere zum Systemchipsatz, bilden. Ursprünglich war die BIOS-Firmware in einem ROM-Chip auf der PC-Hauptplatine gespeichert. In neueren Computersystemen wird der BIOS-Inhalt in einem Flash-Speicher gespeichert, so dass er neu geschrieben werden kann, ohne dass der Chip von der Hauptplatine entfernt werden muss. Dies ermöglicht eine einfache Aktualisierung der BIOS-Firmware durch den Endbenutzer, so dass neue Funktionen hinzugefügt oder Fehler behoben werden können, aber es schafft auch die Möglichkeit, dass der Computer mit BIOS-Rootkits infiziert wird. Außerdem kann ein fehlgeschlagenes BIOS-Upgrade die Hauptplatine zerstören. Die letzte Version von Microsoft Windows, die auf PCs läuft und BIOS-Firmware verwendet, ist Windows 10.

Unified Extensible Firmware Interface (UEFI) ist ein Nachfolger des alten PC-BIOS, der dessen technische Beschränkungen beheben soll.

Flash-ROM mit Award-BIOS
AMIBIOS

Die Übereinstimmung dieses Akronyms mit dem altgriechischen Wort βίος (nach dem lateinischen Alphabet bios, zu deutsch Leben) ist eine Anspielung darauf, dass einem Computer mit dieser so benannten Software quasi Leben eingehaucht wird.

BIOS bei CP/M-Computern

Das Konzept und der Begriff „BIOS“ (als Basic Input/Output System) gehen auf Gary Kildall, den Erfinder und Entwickler des Betriebssystems CP/M (Control Program for Microcomputers) zurück und wurde von ihm bereits 1975 in dieser Bedeutung benutzt. CP/M hatte vor der Einführung des IBM PCs einen vergleichbaren Marktdurchdringungsgrad unter damaligen Kleinrechnern, wie später PC DOS bzw. MS-DOS auf IBM-kompatiblen PCs. Da jedoch vor der Etablierung IBM-kompatibler PCs kein über die Herstellergrenzen hinaus geltender Hardware-Standard existierte und jeder Hersteller von Kleinrechnern dabei völlig verschiedene Konzepte verfolgte, war es notwendig, die hardwarespezifischen Teile des Betriebssystems für jedes System speziell anzupassen.

Handelte es sich anfangs noch um eine gedankliche Untergliederung, so wurden die hardwarespezifischen Teile während der Entwicklung von CP/M 1.3 und 1.4 (1977) auch in der Architektur des Systems von den hardwareunabhängigen Teilen isoliert. Anregungen für eine Entwicklung in diese Richtung gehen auch auf Glenn Ewing, der das CP/M-BIOS für IMSAI an den IMSAI 8080 anpasste, zurück. Digital Researchs CP/M bestand ab Release 1.4 aus zwei übereinanderliegenden Schichten, dem hardwarespezifischen BIOS und dem darauf aufbauenden, aber vollständig hardwareunabhängigen BDOS (Basic Disk Operating System). Die Anwendungen nutzten Systemaufrufe, die ihnen das BDOS zur Verfügung stellte, und zur Durchführung der verschiedenen Aufgaben rief das BDOS nach unten die hardwarespezifischen Routinen im BIOS auf, das die Hardwareansteuerung übernahm. Auf diese Weise blieben die Anwendungen über die Systemgrenzen hinweg portabel. Um CP/M für ein neues Rechnersystem anzubieten, konnte der jeweilige Hersteller einen Template-Quelltext des BIOS von Digital Research lizenzieren und nach eigenen Vorstellungen anpassen. Das BDOS wurde in der Regel nur als Objektdatei ausgeliefert und passend dazugelinkt. Im ROM selbst befand sich meist nur ein äußerst rudimentärer sog. Monitor und Bootloader, über den das erzeugte CP/M-Image von einem Medium wie einer Diskette oder Festplatte in den Speicher geladen und gestartet werden konnte. Auf diese Weise wurde CP/M auf mehr als dreitausend verschiedene Systeme angepasst und in den jeweils passenden Adaptionen von den Hardware-Herstellern angeboten. Einige CP/M-Abkömmlinge wie MP/M (Multi-tasking Program for Microcomputers), Concurrent CP/M 2.0-3.1 (CCP/M), Concurrent DOS 3.2-6.2 (CDOS), DOS Plus 1.2-2.1, FlexOS, Multiuser DOS 5.0-7.xx (MDOS), System Manager 7 und REAL/32 7.xx enthalten auch ein XIOS (Extended Input Output System).

/* 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
                             JUNI, 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
                            JUNI, 1975 */
- Ein Auszug aus dem BDOS.PLM-Dateikopf im PL/M-Quellcode von CP/M 1.1 oder 1.2 für Lawrence Livermore Laboratories (LLL)

Das ursprünglich IBM-PC-eigene BIOS wurde von einigen Unternehmen (wie Phoenix Technologies) zurückentwickelt, um kompatible Systeme zu schaffen.

Mit der Einführung der PS/2-Rechner teilte IBM das System-BIOS in einen Real-Mode- und einen Protected-Mode-Teil auf. Der Real-Mode-Teil sollte Abwärtskompatibilität mit bestehenden Betriebssystemen wie DOS bieten und wurde daher "CBIOS" (für "Compatibility BIOS") genannt, während das "ABIOS" (für "Advanced BIOS") neue Schnittstellen bot, die speziell für Multitasking-Betriebssysteme wie OS/2 geeignet waren.

Benutzeroberfläche

Das BIOS des ursprünglichen IBM PC und XT hatte keine interaktive Benutzeroberfläche. Fehlercodes oder -meldungen wurden auf dem Bildschirm angezeigt, oder es wurden codierte Tonfolgen erzeugt, um Fehler zu signalisieren, wenn der Selbsttest beim Einschalten (POST) nicht bis zu dem Punkt fortgeschritten war, an dem eine Grafikkarte erfolgreich initialisiert wurde. Die Optionen auf dem IBM PC und XT wurden über Schalter und Steckbrücken auf der Hauptplatine und auf Erweiterungskarten eingestellt. Ab etwa Mitte der 1990er Jahre wurde es üblich, dass das BIOS-ROM ein "BIOS Configuration Utility" (BCU) oder "BIOS Setup Utility" enthielt, das beim Einschalten des Systems über eine bestimmte Tastenfolge aufgerufen wurde. Mit diesem Programm konnte der Benutzer die Systemkonfigurationsoptionen, die früher über DIP-Schalter eingestellt wurden, über ein interaktives, über die Tastatur gesteuertes Menüsystem einstellen. In der Zwischenzeit hielten IBM-kompatible PCs - einschließlich des IBM AT - die Konfigurationseinstellungen in einem batteriegepufferten RAM-Speicher und verwendeten ein bootfähiges Konfigurationsprogramm auf Diskette, nicht im ROM, um die in diesem Speicher enthaltenen Konfigurationsoptionen einzustellen. Die Diskette wurde mit dem Computer geliefert, und wenn sie verloren ging, konnten die Systemeinstellungen nicht geändert werden. Das Gleiche galt im Allgemeinen für Computer mit EISA-Bus, für die das Konfigurationsprogramm als EISA Configuration Utility (ECU) bezeichnet wurde.

Ein moderner Wintel-kompatibler Computer bietet eine Setup-Routine, die sich im Wesentlichen nicht von den ROM-residenten BIOS-Setup-Utilities der späten 1990er Jahre unterscheidet; der Benutzer kann die Hardware-Optionen über die Tastatur und das Videobild konfigurieren. Der moderne Wintel-Rechner kann die BIOS-Konfigurationseinstellungen im Flash-ROM speichern, möglicherweise im selben Flash-ROM, in dem auch das BIOS selbst gespeichert ist.

Betrieb

Starten des Systems

Frühe Intel-Prozessoren starteten an der physikalischen Adresse 000FFFF0h. Systeme mit neueren Prozessoren verfügen über eine Logik zum Starten des BIOS aus dem System-ROM.

Wenn das System gerade hochgefahren wurde oder der Reset-Knopf gedrückt wurde ("Kaltstart"), wird der vollständige Einschalt-Selbsttest (POST) durchgeführt. Wenn Strg+Alt+Entf gedrückt wurde ("Warmstart"), ermöglicht ein spezieller, im nichtflüchtigen BIOS-Speicher ("CMOS") gespeicherter Flag-Wert, der vom BIOS getestet wird, die Umgehung des langwierigen POST und der Speichererkennung.

Der POST identifiziert, testet und initialisiert Systemgeräte wie die CPU, den Chipsatz, den Arbeitsspeicher, die Hauptplatine, die Grafikkarte, die Tastatur, die Maus, das Festplattenlaufwerk, das optische Laufwerk und andere Hardware, einschließlich integrierter Peripheriegeräte.

Frühe IBM-PCs verfügten über eine Routine im POST, mit der ein Programm über den Tastaturanschluss in den Arbeitsspeicher geladen und ausgeführt werden konnte. Diese Funktion war für werkseitige Test- oder Diagnosezwecke gedacht.

Boot-Vorgang

Boot-Vorgang

Nachdem der Options-ROM-Scan abgeschlossen ist und alle erkannten ROM-Module mit gültigen Prüfsummen aufgerufen wurden, oder unmittelbar nach dem POST in einer BIOS-Version, die nicht nach Options-ROMs scannt, ruft das BIOS INT 19h auf, um den Bootvorgang zu starten. Nach dem Booten können geladene Programme auch INT 19h aufrufen, um das System neu zu starten, aber sie müssen darauf achten, Interrupts und andere asynchrone Hardwareprozesse zu deaktivieren, die den BIOS-Neustartprozess stören könnten, da sich das System sonst während des Neustarts aufhängen oder abstürzen kann.

Wenn INT 19h aufgerufen wird, versucht das BIOS, die Bootloader-Software auf einem "Boot-Gerät" zu finden, z. B. auf einer Festplatte, einer Diskette, einer CD oder einer DVD. Es lädt die erste gefundene Boot-Software und führt sie aus, wodurch es die Kontrolle über den PC erhält.

Das BIOS verwendet die Boot-Geräte, die im nichtflüchtigen BIOS-Speicher (CMOS) oder, bei den ersten PCs, über DIP-Schalter eingestellt sind. Das BIOS prüft jedes Gerät, um festzustellen, ob es bootfähig ist, indem es versucht, den ersten Sektor (Bootsektor) zu laden. Wenn der Sektor nicht gelesen werden kann, fährt das BIOS mit dem nächsten Gerät fort. Wenn der Sektor erfolgreich gelesen wird, prüfen einige BIOS auch, ob die Bootsektor-Signatur 0x55 0xAA in den letzten beiden Bytes des Sektors (der 512 Bytes lang ist) vorhanden ist, bevor sie einen Bootsektor akzeptieren und das Gerät als bootfähig betrachten.

Wenn ein bootfähiges Gerät gefunden wird, überträgt das BIOS die Kontrolle an den geladenen Sektor. Das BIOS interpretiert den Inhalt des Bootsektors nicht, außer dass es möglicherweise die Bootsektorsignatur in den letzten beiden Bytes überprüft. Die Interpretation von Datenstrukturen wie Partitionstabellen und BIOS-Parameterblöcken erfolgt durch das Bootprogramm im Bootsektor selbst oder durch andere Programme, die durch den Bootvorgang geladen werden.

Ein Gerät, das keine Festplatte ist, wie z. B. ein Netzwerkadapter, versucht, durch ein Verfahren zu booten, das durch sein Options-ROM oder das in das BIOS-ROM der Hauptplatine integrierte Äquivalent definiert ist. So können auch Options-ROMs den vom BIOS-ROM der Hauptplatine definierten Boot-Vorgang beeinflussen oder verdrängen.

Beim El-Torito-Boot-Standard für optische Medien emuliert das optische Laufwerk dem BIOS zu Boot-Zwecken eine 3,5-Zoll-High-Density-Diskette. Das Lesen des "ersten Sektors" einer CD-ROM oder DVD-ROM ist kein einfach definierter Vorgang wie bei einer Diskette oder einer Festplatte. Außerdem macht es die Komplexität des Mediums schwierig, ein brauchbares Bootprogramm in einen Sektor zu schreiben. Die bootfähige virtuelle Diskette kann Software enthalten, die den Zugriff auf den optischen Datenträger in seinem nativen Format ermöglicht.

Boot-Priorität

Der Benutzer kann die vom BIOS implementierte Bootpriorität auswählen. Die meisten Computer verfügen beispielsweise über eine bootfähige Festplatte, aber manchmal gibt es ein Wechseldatenträger-Laufwerk, das eine höhere Boot-Priorität hat, so dass der Benutzer einen Wechseldatenträger zum Booten veranlassen kann.

In den meisten modernen BIOS kann die Boot-Prioritätsreihenfolge vom Benutzer konfiguriert werden. In älteren BIOSen sind nur begrenzte Optionen für die Boot-Priorität wählbar; in den frühesten BIOSen war ein festes Prioritätsschema implementiert, bei dem Diskettenlaufwerke an erster Stelle standen, Festplatten (d. h. Festplatten) an zweiter Stelle und in der Regel keine anderen Boot-Geräte unterstützt wurden, vorbehaltlich der Änderung dieser Regeln durch installierte Options-ROMs. Das BIOS in einem frühen PC bootete in der Regel nur vom ersten Diskettenlaufwerk oder von der ersten Festplatte, selbst wenn zwei Laufwerke installiert waren.

Fehler beim Booten

Wenn auf dem ursprünglichen IBM PC und XT keine bootfähige Diskette gefunden wurde, wurde ROM-BASIC durch Aufruf von INT 18h gestartet. Da nur wenige Programme BASIC im ROM benutzten, ließen die Hersteller von Klon-PCs es weg; ein Computer, der nicht von einer Diskette booten konnte, zeigte dann "No ROM BASIC" an und hielt an (als Antwort auf INT 18h).

Spätere Computer zeigten eine Meldung wie "No bootable disk found" (keine bootfähige Diskette gefunden) an; einige forderten dazu auf, eine Diskette einzulegen und eine Taste zu drücken, um den Startvorgang zu wiederholen. Ein modernes BIOS kann nichts anzeigen oder automatisch das BIOS-Konfigurationsprogramm aufrufen, wenn der Bootvorgang fehlschlägt.

Boot-Umgebung

Die Umgebung für das Boot-Programm ist sehr einfach: Die CPU befindet sich im Real-Mode und die General-Purpose- und Segment-Register sind undefiniert, mit Ausnahme von SS, SP, CS und DL. CS:IP zeigt immer auf die physikalische Adresse 0x07C00. Welche Werte CS und IP tatsächlich haben, ist nicht genau definiert. Einige BIOSe verwenden CS:IP von 0x0000:0x7C00, während andere vielleicht 0x07C0:0x0000 verwenden. Da Boot-Programme immer an dieser festen Adresse geladen werden, ist es nicht notwendig, dass ein Boot-Programm verschiebbar ist. DL kann die Laufwerksnummer des Bootgeräts enthalten, wie sie mit INT 13h verwendet wird. SS:SP zeigt auf einen gültigen Stack, der vermutlich groß genug ist, um Hardware-Interrupts zu unterstützen, aber ansonsten sind SS und SP undefiniert. (Ein Stack muss bereits eingerichtet sein, damit Interrupts bedient werden können, und Interrupts müssen aktiviert sein, damit der System-Timer-Tick-Interrupt, den das BIOS immer mindestens zur Aufrechterhaltung der Tageszeitzählung verwendet und den es während des POST initialisiert, aktiv ist und die Tastatur funktioniert. Die Tastatur funktioniert auch dann, wenn der BIOS-Tastaturdienst nicht aufgerufen wird; die Tastenanschläge werden empfangen und in dem vom BIOS verwalteten 15-Zeichen-Puffer abgelegt). Das Bootprogramm muss seinen eigenen Stack einrichten, da die Größe des vom BIOS eingerichteten Stacks nicht bekannt ist und seine Position ebenfalls variabel ist; obwohl das Bootprogramm den Standard-Stack durch Untersuchung von SS:SP untersuchen kann, ist es einfacher und kürzer, einfach bedingungslos einen neuen Stack einzurichten.

Zum Zeitpunkt des Bootens sind alle BIOS-Dienste verfügbar, und der Speicher unter Adresse 0x00400 enthält die Interrupt-Vektortabelle. Der BIOS-POST hat die Systemtimer, den/die Interrupt-Controller, den/die DMA-Controller und andere Motherboard-/Chipsatz-Hardware wie erforderlich initialisiert, um alle BIOS-Dienste in den Bereitschaftsstatus zu bringen. Die DRAM-Auffrischung für den gesamten System-DRAM im konventionellen Speicher und im erweiterten Speicher, aber nicht unbedingt im erweiterten Speicher, wurde eingerichtet und läuft. Die Interrupt-Vektoren, die den BIOS-Interrupts entsprechen, wurden so eingestellt, dass sie auf die entsprechenden Einstiegspunkte im BIOS zeigen, Hardware-Interrupt-Vektoren für Geräte, die vom BIOS initialisiert wurden, wurden so eingestellt, dass sie auf die vom BIOS bereitgestellten ISRs zeigen, und einige andere Interrupts, einschließlich derer, die das BIOS für Programme zum Hooken generiert, wurden auf einen Standard-Dummy-ISR gesetzt, der sofort zurückkehrt. Das BIOS unterhält einen reservierten Block von System-RAM an den Adressen 0x00400-0x004FF mit verschiedenen Parametern, die während des POSTs initialisiert werden. Der gesamte Speicher an und über Adresse 0x00500 kann vom Bootprogramm verwendet werden; es kann sich sogar selbst überschreiben.

Erweiterungen (Options-ROMs)

Das Zusammenwirken von BIOS-Systemstart, Initial Program Load und BIOS-Funktionsergänzungen wird durch die sogenannte „BIOS Boot Specification“ vom 11. Januar 1996, einem von einem Firmenkonsortium ausgearbeiteten Standard, geregelt.

Dieser Standard fixiert insbesondere, auf welche Art und Weise Initial-Program-Load- (Bootstrapload-) Komponenten, die (den BIOS-Systemstart fortsetzend) das Hochlaufen der jeweiligen Betriebssysteme herbeiführen, vom BIOS identifiziert werden und wie unter Vorgabe der durch den Computerbenutzer festgelegten Priorität (entsprechend der sogenannten Bootsequenz) versucht wird, eine oder mehrere der jeweiligen Komponenten zur Ausführung zu bringen.

Direkt oder indirekt legt dieser Standard auch fest, wie etwa ein Initial Program Loader (Bootstraploader) ein auf das BIOS abgestimmtes Verhalten zustande zu bringen hat und wie das BIOS das jeweils gerade verwendete Bootmedium (Festplatte, optische Laufwerk-Disk, USB-Stick, PCMCIA-Netzwerkkarte, Ethernetkarte oder dergleichen) für den Loader handhabt.

Für die Bereitstellung von Bootmechanismen spielt die Programmierschnittstelle zwischen BIOS-Verwaltung und Bootverwaltung, das sogenannte „BIOS Boot Specification API“, eine Rolle, wobei die Implementierung dieser Mechanismen in der Regel sowohl hardware- als auch softwaremäßig erfolgt (sofern man jeweils ganze Bootmechanismen ins Auge fasst). Hardwaremäßig kann eine solche Implementierung durch BIOS-Funktionsergänzungen bewerkstelligt werden, etwa wenn das Motherboard-BIOS durch ergänzende Add-In-Firmware-BIOSe von Netzwerk-, SCSI- oder RAID-Adaptern erweitert und/oder partiell ausgetauscht wird. Softwaremäßig kann eine solche Implementierung durch Programmierung entsprechender Routinen bzw. Treiber geschehen, sofern diese speicherresident untergebracht werden können; unter gewissen Voraussetzungen können auch Initial Program Loader bzw. Bootstraploader bei der Bereitstellung von unkonventionellen Bootmechanismen besondere Funktionen einnehmen bzw. eine besondere Rolle spielen. Beim Rechnerhochlauf via Netzwerkkarte sind die meisten Bootmechanismen weit komplizierter als beim klassischen (einfachen) Initial Program Load. In diese Kategorie gehört beispielsweise der Fall, dass der Rechnerhochlauf von einem außenstehenden Rechner über das Netzwerk (etwa via Fast-Ethernetadapter) angestoßen wird (siehe auch Wake on LAN). Das Motherboard-BIOS, das im Regelfall keinen Treibercode für das Booten über eine bestimmte Netzwerkkarte besitzt, wird durch Add-In-Firmware auf der Netzwerkkarte unter Beachtung der Vorgaben des BIOS Boot Specification APIs ergänzt, so dass eine speicherresidente Routine im Dienste der Netzwerkkarte den Bootmechanismus umlenken und die Netzwerkkarte als wählbares Bootmedium am System anmelden kann. Nach erfolgter Auswahl der Netzwerkkarten-Bootoption im BIOS geht dann der BIOS-Systemstart in eine Netzwerkkommunikation über, in der Auskünfte über Bootserveradressen eingeholt werden und Abfragevorgänge stattfinden. Das beinhaltet eine Art „Bereitschaftszustand“ des Rechners, der durch Auslösung übers Netzwerk jederzeit hochfahrbar wird. Auf die richtige Meldung hin wird der Bootstraploader in den RAM-Speicher heruntergeladen und ausgeführt.

Peripheriekarten wie Festplattenlaufwerk-Host-Bus-Adapter und Videokarten haben ihre eigene Firmware, und BIOS-Erweiterungs-Options-ROMs können Teil der Firmware der Erweiterungskarte sein, die dem BIOS zusätzliche Funktionen bieten. Der Code in den Options-ROMs wird ausgeführt, bevor das BIOS das Betriebssystem vom Massenspeicher bootet. Diese ROMs testen und initialisieren in der Regel Hardware, fügen neue BIOS-Dienste hinzu oder ersetzen bestehende BIOS-Dienste durch eigene Dienste. So verfügt ein SCSI-Controller in der Regel über ein BIOS-Erweiterungs-ROM, das die Unterstützung für über diesen Controller angeschlossene Festplatten hinzufügt. Ein Erweiterungs-ROM könnte im Prinzip ein Betriebssystem enthalten oder einen völlig anderen Boot-Prozess implementieren, wie z. B. das Booten über ein Netzwerk. Der Betrieb eines IBM-kompatiblen Computersystems kann durch Entfernen oder Einsetzen einer Adapterkarte (oder eines ROM-Chips), die ein BIOS-Erweiterungs-ROM enthält, vollständig verändert werden.

Das BIOS der Hauptplatine enthält in der Regel Code für die Initialisierung und das Bootstrapping der integrierten Anzeige und des integrierten Speichers. Darüber hinaus enthalten steckbare Adapterkarten wie SCSI-, RAID-, Netzwerkkarten und Videokarten oft ihr eigenes BIOS (z. B. Video-BIOS), das den System-BIOS-Code für die jeweilige Komponente ergänzt oder ersetzt. Auch in das Motherboard eingebaute Geräte können sich auf diese Weise verhalten; ihre Options-ROMs können Teil des Motherboard-BIOS sein.

Eine Zusatzkarte erfordert ein Options-ROM, wenn die Karte nicht vom BIOS der Hauptplatine unterstützt wird und die Karte initialisiert oder durch BIOS-Dienste zugänglich gemacht werden muss, bevor das Betriebssystem geladen werden kann (normalerweise bedeutet dies, dass sie im Boot-Prozess benötigt wird). Ein zusätzlicher Vorteil von ROM auf einigen frühen PC-Systemen (insbesondere auf dem IBM PCjr) war, dass ROM schneller war als der Hauptspeicher des Systems. (Bei modernen Systemen ist der Fall genau umgekehrt, und der BIOS-ROM-Code wird in der Regel in den RAM kopiert ("shadowed"), damit er schneller läuft).

Bootvorgang

Wenn ein Erweiterungs-ROM die Art und Weise, wie das System bootet (z. B. von einem Netzwerkgerät oder einem SCSI-Adapter), auf kooperative Weise ändern möchte, kann es die BIOS-Boot-Spezifikation (BBS) API verwenden, um seine Fähigkeit, dies zu tun, zu registrieren. Sobald sich die Erweiterungs-ROMs mit Hilfe der BBS-APIs registriert haben, kann der Benutzer über die BIOS-Benutzeroberfläche zwischen den verfügbaren Boot-Optionen wählen. Aus diesem Grund erlauben die meisten BBS-kompatiblen PC-BIOS-Implementierungen dem Benutzer nicht, die BIOS-Benutzeroberfläche aufzurufen, bevor die Erweiterungs-ROMs die Ausführung und Registrierung mit der BBS-API abgeschlossen haben.

Wenn ein Erweiterungs-ROM die Art und Weise, wie das System bootet, einseitig ändern möchte, kann es einfach den INT 19h oder andere Interrupts, die normalerweise von Interrupt 19h aufgerufen werden, wie INT 13h, den BIOS-Festplattendienst, nutzen, um den BIOS-Boot-Prozess abzufangen. Dann kann er den BIOS-Boot-Prozess durch einen eigenen ersetzen, oder er kann die Boot-Sequenz einfach modifizieren, indem er seine eigenen Boot-Aktionen einfügt, indem er das BIOS daran hindert, bestimmte Geräte als bootfähig zu erkennen, oder beides. Bevor die BIOS-Boot-Spezifikation veröffentlicht wurde, war dies die einzige Möglichkeit für Erweiterungs-ROMs, Boot-Fähigkeiten für Geräte zu implementieren, die nicht vom BIOS des Motherboards unterstützt werden.

Initialisierung

Nachdem das Motherboard-BIOS seinen POST abgeschlossen hat, suchen die meisten BIOS-Versionen nach Option-ROM-Modulen, auch BIOS-Erweiterungs-ROMs genannt, und führen sie aus. Das BIOS der Hauptplatine sucht nach Erweiterungs-ROMs in einem Teil des "oberen Speicherbereichs" (der Teil des x86-Real-Mode-Adressraums an und über Adresse 0xA0000) und führt jedes gefundene ROM der Reihe nach aus. Um Memory-Mapped-Options-ROMs zu finden, scannt eine BIOS-Implementierung den Real-Mode-Adressraum von 0x0C0000 bis 0x0F0000 an 2-KB-Grenzen (2.048 Byte) und sucht nach einer Zwei-Byte-ROM-Signatur: 0x55 gefolgt von 0xAA. In einem gültigen Erweiterungs-ROM folgt auf diese Signatur ein einzelnes Byte, das die Anzahl der 512-Byte-Blöcke angibt, die das Erweiterungs-ROM im realen Speicher belegt, und das nächste Byte ist der Einstiegspunkt des Options-ROMs (auch als "Einstiegsoffset" bekannt). Wenn das ROM eine gültige Prüfsumme hat, übergibt das BIOS die Kontrolle an die Einstiegsadresse, die bei einem normalen BIOS-Erweiterungs-ROM der Beginn der Initialisierungsroutine der Erweiterung sein sollte.

An diesem Punkt übernimmt der Code des Erweiterungs-ROMs die Kontrolle, testet und initialisiert die von ihm gesteuerte Hardware und registriert Interrupt-Vektoren zur Verwendung durch Post-Boot-Anwendungen. Er kann BIOS-Dienste (einschließlich derer, die von zuvor initialisierten Options-ROMs bereitgestellt werden) nutzen, um eine Benutzer-Konfigurationsschnittstelle bereitzustellen, Diagnoseinformationen anzuzeigen oder alles andere zu tun, was er benötigt. Es ist möglich, dass ein Options-ROM nicht zum BIOS zurückkehrt und die Boot-Sequenz des BIOS völlig überspringt.

Ein Options-ROM sollte normalerweise nach Abschluss des Initialisierungsprozesses zum BIOS zurückkehren. Sobald (und falls) ein Options-ROM zurückkehrt, setzt das BIOS die Suche nach weiteren Options-ROMs fort und ruft jedes gefundene auf, bis der gesamte Options-ROM-Bereich im Speicherbereich gescannt wurde.

Physikalische Platzierung

BIOS-Chips in einem Dell 310, die durch Auswechseln der Chips aktualisiert wurden

Options-ROMs befinden sich normalerweise auf Adapterkarten. Der Original-PC und vielleicht auch der PC XT verfügen jedoch über einen freien ROM-Sockel auf der Hauptplatine (der "Systemplatine" in IBMs Worten), in den ein Options-ROM eingesetzt werden kann, und die vier ROMs, die den BASIC-Interpreter enthalten, können auch entfernt und durch benutzerdefinierte ROMs ersetzt werden, die Options-ROMs sein können. Der IBM PCjr ist einzigartig unter den PCs, da er zwei ROM-Kassettenschächte auf der Vorderseite hat. Die Kassetten in diesen Steckplätzen befinden sich in demselben Bereich des oberen Speicherbereichs, der für Options-ROMs verwendet wird, und die Kassetten können Options-ROM-Module enthalten, die vom BIOS erkannt werden. Die Kassetten können auch andere Arten von ROM-Modulen enthalten, wie z. B. BASIC-Programme, die anders gehandhabt werden. Eine PCjr-Kassette kann mehrere ROM-Module unterschiedlichen Typs enthalten, die möglicherweise zusammen in einem ROM-Chip gespeichert sind.

Dienste des Betriebssystems

Das BIOS-ROM ist an die Hardware des jeweiligen Herstellers angepasst, so dass Low-Level-Dienste (z. B. das Lesen eines Tastendrucks oder das Schreiben eines Datensektors auf eine Diskette) Programmen, einschließlich Betriebssystemen, auf standardisierte Weise zur Verfügung gestellt werden können. Ein IBM-PC kann beispielsweise entweder einen Monochrom- oder einen Farbbildschirmadapter haben (mit unterschiedlichen Anzeigespeicheradressen und unterschiedlicher Hardware), aber ein einziger, standardisierter BIOS-Systemaufruf kann aufgerufen werden, um ein Zeichen an einer bestimmten Position auf dem Bildschirm im Text- oder Grafikmodus anzuzeigen.

Das BIOS stellt eine kleine Bibliothek grundlegender Eingabe-/Ausgabefunktionen zur Verfügung, um Peripheriegeräte (wie die Tastatur, rudimentäre Text- und Grafikanzeigefunktionen usw.) zu bedienen. Bei Verwendung von MS-DOS kann ein Anwendungsprogramm (oder MS-DOS) auf die BIOS-Dienste zugreifen, indem es einen INT 13h-Interrupt-Befehl ausführt, um auf Festplattenfunktionen zuzugreifen, oder indem es einen der zahlreichen anderen dokumentierten BIOS-Interrupt-Aufrufe ausführt, um auf Videobildschirm, Tastatur, Kassette und andere Gerätefunktionen zuzugreifen.

Betriebssysteme und Ausführungssoftware, die diese grundlegende Firmware-Funktionalität ersetzen sollen, bieten Ersatzsoftware-Schnittstellen für Anwendungssoftware. Anwendungen können diese Dienste auch für sich selbst bereitstellen. Dies begann bereits in den 1980er Jahren unter MS-DOS, als Programmierer feststellten, dass die Verwendung der BIOS-Videodienste für die Grafikanzeige sehr langsam war. Um die Geschwindigkeit der Bildschirmausgabe zu erhöhen, umgingen viele Programme das BIOS und programmierten die Videoanzeigehardware direkt. Andere Grafikprogrammierer, vor allem, aber nicht ausschließlich in der Demoszene, stellten fest, dass es technische Möglichkeiten der PC-Anzeigeadapter gab, die vom IBM-BIOS nicht unterstützt wurden und ohne Umgehung des BIOS nicht genutzt werden konnten. Da das AT-kompatible BIOS im Intel Real Mode lief, benötigten Betriebssysteme, die im Protected Mode auf 286er und späteren Prozessoren liefen, Hardware-Gerätetreiber, die mit dem Protected Mode kompatibel waren, um die BIOS-Dienste zu ersetzen.

In modernen PCs mit modernen Betriebssystemen (wie Windows und Linux) werden die BIOS-Interrupt-Aufrufe nur während des Bootens und des ersten Ladens von Betriebssystemen verwendet. Bevor der erste grafische Bildschirm des Betriebssystems angezeigt wird, werden Eingaben und Ausgaben in der Regel über das BIOS abgewickelt. Ein Boot-Menü wie das Textmenü von Windows, das es dem Benutzer ermöglicht, ein zu startendes Betriebssystem auszuwählen, in den abgesicherten Modus zu booten oder die letzte als gut bekannte Konfiguration zu verwenden, wird über das BIOS angezeigt und erhält Tastatureingaben über das BIOS.

Viele moderne PCs können immer noch booten und ältere Betriebssysteme wie MS-DOS oder DR-DOS ausführen, die für ihre Konsolen- und Festplatten-E/A stark auf das BIOS angewiesen sind, sofern das System über ein BIOS oder eine CSM-fähige UEFI-Firmware verfügt.

Mikrocode-Updates für Prozessoren

Intel-Prozessoren haben seit der P6-Mikroarchitektur reprogrammierbaren Mikrocode. AMD-Prozessoren verfügen seit der K7-Mikroarchitektur über reprogrammierbaren Mikrocode. Das BIOS enthält Patches für den Mikrocode des Prozessors, mit denen Fehler im ursprünglichen Mikrocode des Prozessors behoben werden; der Mikrocode wird in das SRAM des Prozessors geladen, so dass die Neuprogrammierung nicht dauerhaft ist und das Laden von Mikrocode-Updates bei jedem Einschalten des Systems erfolgt. Ohne reprogrammierbaren Mikrocode wäre ein teurer Prozessortausch erforderlich; so wurde beispielsweise der Pentium-FDIV-Fehler zu einem teuren Fiasko für Intel, da er einen Produktrückruf erforderte, weil der fehlerhafte Mikrocode des ursprünglichen Pentium-Prozessors nicht reprogrammiert werden konnte. Auch Betriebssysteme können den Mikrocode des Hauptprozessors aktualisieren.

Identifizierung

Einige BIOS enthalten eine Software-Lizenzbeschreibungstabelle (SLIC), eine digitale Signatur, die vom Originalgerätehersteller (OEM), z. B. Dell, in das BIOS eingefügt wird. Die SLIC wird in die ACPI-Datentabelle eingefügt und enthält keinen aktiven Code.

Computerhersteller, die OEM-Versionen von Microsoft Windows und Microsoft-Anwendungssoftware vertreiben, können die SLIC verwenden, um die Lizenzierung für die OEM-Windows-Installationsdiskette und die Systemwiederherstellungsdiskette mit Windows-Software zu authentifizieren. Systeme mit einem SLIC können mit einem OEM-Produktschlüssel voraktiviert werden, und sie überprüfen ein XML-formatiertes OEM-Zertifikat mit dem SLIC im BIOS als Mittel zur Selbstaktivierung (siehe System Locked Preinstallation, SLP). Wenn ein Benutzer eine Neuinstallation von Windows durchführt, muss er sowohl im Besitz des OEM-Schlüssels (entweder SLP oder COA) als auch des digitalen Zertifikats für seine SLIC sein, um die Aktivierung zu umgehen. Dies kann erreicht werden, wenn der Benutzer eine Wiederherstellung mit einem vom OEM bereitgestellten vordefinierten Image durchführt. Erfahrene Benutzer können die erforderlichen Zertifikatsdateien aus dem OEM-Image kopieren, den SLP-Produktschlüssel entschlüsseln und dann die SLP-Aktivierung manuell durchführen. Cracks für nicht-originale Windows-Distributionen bearbeiten in der Regel den SLIC oder emulieren ihn, um die Windows-Aktivierung zu umgehen.

Übertaktung

Einige BIOS-Implementierungen erlauben Overclocking, eine Aktion, bei der die CPU auf eine höhere Taktrate eingestellt wird, als vom Hersteller für die garantierte Leistungsfähigkeit angegeben ist. Die Übertaktung kann jedoch die Systemzuverlässigkeit in unzureichend gekühlten Computern ernsthaft beeinträchtigen und generell die Lebensdauer der Komponenten verkürzen. Bei unsachgemäßer Übertaktung kann es auch dazu kommen, dass Komponenten so schnell überhitzen, dass sie sich mechanisch selbst zerstören.

Moderne Nutzung

Einige ältere Betriebssysteme, z. B. MS-DOS, stützen sich auf das BIOS, um die meisten Eingabe-/Ausgabeaufgaben im PC auszuführen.

Der direkte Aufruf von Real-Mode-BIOS-Diensten ist für Protected-Mode- (und Long-Mode-) Betriebssysteme ineffizient. BIOS-Interrupt-Aufrufe werden von modernen Multitasking-Betriebssystemen nach dem ersten Laden nicht verwendet.

In den 1990er Jahren stellte das BIOS einige Protected-Mode-Schnittstellen für Microsoft Windows und Unix-ähnliche Betriebssysteme zur Verfügung, z. B. Advanced Power Management (APM), Plug and Play BIOS, Desktop Management Interface (DMI), VESA BIOS Extensions (VBE), e820 und MultiProcessor Specification (MPS). Ab dem Jahr 2000 bieten die meisten BIOSe ACPI-, SMBIOS-, VBE- und e820-Schnittstellen für moderne Betriebssysteme.

Nach dem Laden des Betriebssystems läuft der Code für den Systemverwaltungsmodus weiterhin im SMRAM. Seit 2010 befindet sich die BIOS-Technologie in einem Übergangsprozess zu UEFI.

Konfiguration

Setup-Dienstprogramm

In der Vergangenheit hatte das BIOS im IBM PC und XT keine integrierte Benutzeroberfläche. Die BIOS-Versionen in früheren PCs (XT-Klasse) waren nicht per Software konfigurierbar; stattdessen stellten die Benutzer die Optionen über DIP-Schalter auf der Hauptplatine ein. Spätere Computer, einschließlich aller IBM-Computer mit 80286-CPUs, verfügten über einen batteriegepufferten nichtflüchtigen BIOS-Speicher (CMOS-RAM-Chip), der die BIOS-Einstellungen enthielt. Diese Einstellungen, wie z. B. der Typ des Videoadapters, die Speichergröße und die Festplattenparameter, konnten nur durch Ausführen eines Konfigurationsprogramms von einer Diskette konfiguriert werden, die nicht im ROM enthalten war. Eine spezielle "Referenzdiskette" wurde in einen IBM AT eingelegt, um Einstellungen wie die Speichergröße zu konfigurieren.

Frühe BIOS-Versionen verfügten nicht über Passwörter oder Optionen zur Auswahl des Boot-Geräts. Das BIOS war so programmiert, dass es vom ersten Diskettenlaufwerk oder, falls dieses ausfiel, von der ersten Festplatte bootete. Die Zugangskontrolle bei den frühen AT-Rechnern erfolgte über einen physischen Schlüsselschalter (der nicht schwer zu überwinden war, wenn das Gehäuse geöffnet werden konnte). Jeder, der den Computer einschalten konnte, konnte ihn booten.

Später begannen Computer der 386-Klasse, das BIOS-Setup-Dienstprogramm neben dem BIOS-Code in das ROM selbst zu integrieren; diese Computer booten in der Regel in das BIOS-Setup-Dienstprogramm, wenn eine bestimmte Taste oder Tastenkombination gedrückt wird, andernfalls werden der BIOS-POST und der Boot-Prozess ausgeführt.

Auszeichnung BIOS-Setup-Dienstprogramm auf einem Standard-PC

Ein modernes BIOS-Setup-Dienstprogramm verfügt über eine Text-Benutzeroberfläche (TUI) oder eine grafische Benutzeroberfläche (GUI), die durch Drücken einer bestimmten Taste auf der Tastatur beim Start des PCs aufgerufen wird. Normalerweise wird die Taste während des ersten Starts kurz angezeigt, z. B. "Press DEL to enter Setup". Die tatsächliche Taste hängt von der jeweiligen Hardware ab. Zu den Funktionen des BIOS-Setup-Dienstprogramms gehören in der Regel:

  • Konfigurieren, Aktivieren und Deaktivieren der Hardwarekomponenten
  • Einstellen der Systemzeit
  • Einstellen der Bootreihenfolge
  • Festlegen verschiedener Kennwörter, z. B. ein Kennwort zum Schutz des Zugriffs auf die BIOS-Benutzeroberfläche und zum Verhindern, dass böswillige Benutzer das System von nicht autorisierten tragbaren Speichermedien booten, oder ein Kennwort zum Booten des Systems

Hardware-Überwachung

Ein moderner BIOS-Setup-Bildschirm verfügt häufig über eine Registerkarte "PC Health Status" oder "Hardware Monitoring", die direkt mit einem Hardware-Monitor-Chip des Mainboards verbunden ist. Dies ermöglicht die Überwachung der CPU- und Gehäusetemperatur, der vom Netzteil gelieferten Spannung sowie die Überwachung und Steuerung der Drehzahl der an das Mainboard angeschlossenen Lüfter.

Sobald das System hochgefahren ist, erfolgt die Hardware-Überwachung und die Steuerung der Lüfter normalerweise direkt durch den Hardware-Monitor-Chip selbst, der ein separater Chip mit I2C- oder SMBus-Schnittstelle sein kann oder als Teil einer Super-I/O-Lösung mit ISA- (Industry Standard Architecture) oder LPC-Schnittstellen (Low Pin Count) geliefert wird. Einige Betriebssysteme, wie NetBSD mit envsys und OpenBSD mit sysctl hw.sensors, verfügen über eine integrierte Schnittstelle zu Hardware-Monitoren.

In einigen Fällen stellt das BIOS jedoch auch die zugrundeliegenden Informationen über die Hardware-Überwachung durch ACPI zur Verfügung. In diesem Fall kann das Betriebssystem ACPI verwenden, um die Hardware-Überwachung durchzuführen.

Neuprogrammierung

BIOS-Austauschkit für einen Dell 310 aus den späten 1980er Jahren. Enthalten sind zwei Chips, ein Kunststoffhalter für die Chips und ein Chipabzieher.

In modernen PCs ist das BIOS in einem wiederbeschreibbaren EEPROM- oder NOR-Flash-Speicher gespeichert, so dass der Inhalt ausgetauscht und geändert werden kann. Dieses Wiederbeschreiben des Inhalts wird manchmal als Flashen bezeichnet. Es kann durch ein spezielles Programm erfolgen, das in der Regel vom Hersteller des Systems bereitgestellt wird, oder beim POST mit einem BIOS-Abbild auf einer Festplatte oder einem USB-Stick. Eine Datei, die solche Inhalte enthält, wird manchmal als "BIOS-Image" bezeichnet. Ein BIOS kann neu geflasht werden, um auf eine neuere Version aufzurüsten, um Fehler zu beheben, die Leistung zu verbessern oder um neuere Hardware zu unterstützen.

Hardware

American Megatrends BIOS 686. Dieser BIOS-Chip ist in einem PLCC-Gehäuse in einem Sockel untergebracht.

Das ursprüngliche IBM-PC-BIOS (und Kassetten-BASIC) war auf maskenprogrammierten ROM-Chips in Sockeln auf der Hauptplatine gespeichert. ROMs konnten von den Benutzern ausgetauscht, aber nicht verändert werden. Um Aktualisierungen zu ermöglichen, wurden in vielen kompatiblen Computern umprogrammierbare BIOS-Speicherbausteine wie EPROM, EEPROM und später Flash-Speicherbausteine (normalerweise NOR-Flash) verwendet. Laut Robert Braver, dem Präsidenten des BIOS-Herstellers Micro Firmware, wurden Flash-BIOS-Chips um 1995 üblich, weil die elektrisch löschbaren PROM-Chips (EEPROM) billiger und einfacher zu programmieren sind als die Standard-Ultraviolett löschbaren PROM-Chips (EPROM). Flash-Chips werden schaltungsintern programmiert (und umprogrammiert), während EPROM-Chips zum Umprogrammieren aus der Hauptplatine entfernt werden müssen. BIOS-Versionen werden aktualisiert, um die Vorteile neuerer Hardware-Versionen zu nutzen und um Fehler in früheren BIOS-Versionen zu korrigieren.

Seit dem IBM AT unterstützten PCs eine Hardware-Uhr, die über das BIOS eingestellt werden konnte. Sie verfügte über ein Jahrhundert-Bit, das eine manuelle Änderung des Jahrhunderts ermöglichte, wenn das Jahr 2000 eintrat. Die meisten BIOS-Revisionen von 1995 und fast alle BIOS-Revisionen von 1997 unterstützten das Jahr 2000, indem sie das Jahrhundertbit automatisch setzten, wenn die Uhr über Mitternacht, den 31. Dezember 1999, hinausging.

Die ersten Flash-Chips wurden an den ISA-Bus angeschlossen. Ab 1998 wurde der BIOS-Flash-Speicher auf den LPC-Bus verlagert und folgte einer neuen Standardimplementierung, die als "Firmware Hub" (FWH) bekannt wurde. Im Jahr 2006 wurde der BIOS-Flash-Speicher auf den SPI-Bus verlagert.

Die Größe des BIOS und die Kapazität des ROM, EEPROM oder anderer Medien, auf denen es gespeichert werden kann, hat sich im Laufe der Zeit erhöht, da dem Code neue Funktionen hinzugefügt wurden; es gibt jetzt BIOS-Versionen mit einer Größe von bis zu 32 Megabyte. Im Gegensatz dazu war das ursprüngliche IBM-PC-BIOS in einem 8-KB-Masken-ROM enthalten. Einige moderne Hauptplatinen enthalten sogar noch größere NAND-Flash-Speicher-ICs, die in der Lage sind, ganze kompakte Betriebssysteme zu speichern, wie z. B. einige Linux-Distributionen. Einige ASUS-Notebooks enthalten beispielsweise das Splashtop-Betriebssystem in ihren NAND-Flash-Speicher-ICs. Die Idee, ein Betriebssystem zusammen mit dem BIOS in das ROM eines PCs zu integrieren, ist jedoch nicht neu; in den 1980er Jahren bot Microsoft eine ROM-Option für MS-DOS an, und es war in den ROMs einiger PC-Klone wie dem Tandy 1000 HX enthalten.

Eine andere Art von Firmware-Chip war auf dem IBM PC AT und frühen kompatiblen Computern zu finden. Beim AT wurde die Tastaturschnittstelle von einem Mikrocontroller mit eigenem programmierbaren Speicher gesteuert. Beim IBM AT handelte es sich um einen 40-poligen gesockelten Baustein, während einige Hersteller eine EPROM-Version dieses Chips verwendeten, die einem EPROM ähnelte. Diesem Controller wurde auch die A20-Gate-Funktion zugewiesen, um den Speicher oberhalb des 1-Megabyte-Bereichs zu verwalten; gelegentlich war eine Aufrüstung dieses "Tastatur-BIOS" erforderlich, um die Vorteile von Software zu nutzen, die den oberen Speicherbereich verwenden konnte.

Das BIOS kann Komponenten wie den Memory Reference Code (MRC) enthalten, der für die Speicherinitialisierung zuständig ist (z. B. SPD und Initialisierung der Speicher-Timings).

Moderne BIOS enthalten Intel Management Engine oder AMD Platform Security Processor-Firmware.

Anbieter und Produkte

Vergleich verschiedener BIOS-Implementierungen
Unternehmen AuszeichnungBIOS AMIBIOS Insyde SeaBIOS
Lizenz Proprietär Proprietär Proprietär LGPL v3
Gepflegt / entwickelt Beendet Beendet Beendet Ja
32-Bit-PCI-BIOS-Aufrufe Ja Ja Ja Ja
AHCI Ja Ja Ja Ja
APM Ja Ja Ja (1.2) Ja (1.2)
BBS Ja Ja Ja Ja
Boot-Menü Ja Ja Ja Ja
Komprimierung Ja (LHA) Ja (LHA) Ja (RLE) Ja (LZMA)
CMOS Ja Ja Ja Ja
EDD Ja Ja Ja Ja
ESCD Ja Ja ? Nein
Flash von ROM ? Ja ? Nein
Sprache Montage Montage Montage C
LBA Ja (48) Ja (48) Ja Ja (48)
MultiProzessor-Spezifikation Ja Ja Ja Ja
Option ROM Ja Ja Ja Ja
Kennwort Ja Ja Ja Nein
PMM ? Ja ? Ja
Setup-Bildschirm Ja Ja Ja Nein
SMBIOS Ja Ja Ja Ja
Splash-Bildschirm Ja (EPA) Ja (PCX) Ja Ja (BMP, JPG)
TPM Unbekannt Unbekannt Unbekannt Einige
USB-Booten Ja Ja Ja Ja
USB-Hub ? ? ? Ja
USB-Tastatur Ja Ja Ja Ja
USB-Maus Ja Ja Ja Ja

IBM hat die vollständigen BIOS-Listen für den ursprünglichen PC, den PC XT, den PC AT und andere zeitgenössische PC-Modelle in einem Anhang des Technischen Referenzhandbuchs für IBM-PCs für jeden Maschinentyp veröffentlicht. Die Veröffentlichung der BIOS-Listen hat zur Folge, dass jeder genau sehen kann, was ein bestimmtes BIOS tut und wie es es tut.

Compaq Portable 386 BIOS

Im Mai 1984 veröffentlichte Phoenix Software Associates sein erstes ROM-BIOS, das es OEMs ermöglichte, im Wesentlichen vollständig kompatible Klone zu erstellen, ohne das IBM PC-BIOS selbst zurückentwickeln zu müssen, wie es Compaq für den Portable getan hatte, was das Wachstum der PC-Kompatibilitätsindustrie und den Verkauf von Nicht-IBM-Versionen von DOS förderte. Und das erste American Megatrends (AMI) BIOS wurde 1986 veröffentlicht.

Neue Standards, die auf das BIOS aufgepfropft werden, sind in der Regel ohne vollständige öffentliche Dokumentation oder BIOS-Listings. Daher ist es nicht so einfach, die intimen Details über die vielen Nicht-IBM-Zusätze zum BIOS zu erfahren, wie über die Kerndienste des BIOS.

Die meisten Anbieter von PC-Motherboards lizenzieren einen BIOS-"Kern" und ein Toolkit von einem kommerziellen Dritten, der als "unabhängiger BIOS-Anbieter" oder IBV bekannt ist. Der Motherboard-Hersteller passt dieses BIOS dann an seine eigene Hardware an. Aus diesem Grund werden aktualisierte BIOS normalerweise direkt vom Motherboard-Hersteller bezogen. Zu den früheren großen BIOS-Anbietern gehörten American Megatrends (AMI), Insyde Software, Phoenix Technologies, Byosoft, Award Software und Microid Research. Microid Research und Award Software wurden 1998 von Phoenix Technologies übernommen; Phoenix stellte später den Markennamen Award ein. General Software, das 2007 ebenfalls von Phoenix übernommen wurde, verkaufte BIOS für eingebettete Systeme auf der Basis von Intel-Prozessoren.

Die Open-Source-Gemeinschaft verstärkte ihre Bemühungen, einen Ersatz für proprietäre BIOS und ihre zukünftigen Inkarnationen durch ein Open-Source-Gegenstück zu entwickeln, durch die Projekte libreboot, coreboot und OpenBIOS/Open Firmware. AMD stellte Produktspezifikationen für einige Chipsätze zur Verfügung, und Google sponsert das Projekt. Der Motherboard-Hersteller Tyan bietet coreboot neben dem Standard-BIOS für seine Opteron-Motherboards an.

Sicherheit

Ein BIOS von American Megatrends zeigt einen "Intel CPU uCode Loading Error" an, nachdem ein Versuch, Microcode-Patches in die CPU zu laden, fehlgeschlagen ist.
Ein abgelöster BIOS-Chip

EEPROM- und Flash-Speicherchips haben den Vorteil, dass sie vom Benutzer leicht aktualisiert werden können. Es ist üblich, dass Hardwarehersteller BIOS-Updates herausgeben, um ihre Produkte zu aktualisieren, die Kompatibilität zu verbessern und Fehler zu beseitigen. Dieser Vorteil birgt jedoch das Risiko, dass eine unsachgemäß durchgeführte oder abgebrochene BIOS-Aktualisierung den Computer oder das Gerät unbrauchbar machen kann. Um solche Situationen zu vermeiden, verwenden neuere BIOS einen "Bootblock", einen Teil des BIOS, der zuerst ausgeführt wird und separat aktualisiert werden muss. Dieser Code prüft, ob der Rest des BIOS intakt ist (mithilfe von Hash-Prüfsummen oder anderen Methoden), bevor er die Kontrolle an diesen überträgt. Wenn der Boot-Block eine Beschädigung im Haupt-BIOS feststellt, wird der Benutzer normalerweise gewarnt, dass ein Wiederherstellungsprozess eingeleitet werden muss, indem von einem Wechselmedium (Diskette, CD oder USB-Flash-Laufwerk) gebootet wird, damit der Benutzer versuchen kann, das BIOS erneut zu flashen. Einige Hauptplatinen verfügen über ein Backup-BIOS (manchmal auch als DualBIOS-Platinen bezeichnet), um BIOS-Fehler beheben zu können.

Es sind mindestens fünf BIOS-Angriffsviren bekannt, von denen zwei zu Demonstrationszwecken eingesetzt wurden. Der erste in freier Wildbahn gefundene Virus war Mebromi, der auf chinesische Benutzer abzielte.

Der erste BIOS-Virus war BIOS Meningitis, der die BIOS-Chips nicht löschte, sondern sie infizierte. BIOS Meningitis ist relativ harmlos, verglichen mit einem Virus wie CIH.

Der zweite BIOS-Virus war CIH, auch bekannt als "Tschernobyl-Virus", der in der Lage war, den Flash-ROM-BIOS-Inhalt auf kompatiblen Chipsätzen zu löschen. CIH tauchte Mitte 1998 auf und wurde im April 1999 aktiv. Infizierte Computer ließen sich oft nicht mehr starten, und die Betroffenen mussten das Flash-ROM-IC aus der Hauptplatine entfernen und neu programmieren. CIH zielte auf den damals weit verbreiteten Intel i430TX-Motherboard-Chipsatz ab und nutzte die Tatsache, dass die damals ebenfalls weit verbreiteten Windows 9x-Betriebssysteme direkten Hardware-Zugriff auf alle Programme erlaubten.

Moderne Systeme sind nicht anfällig für CIH, da eine Vielzahl von Chipsätzen verwendet wird, die nicht mit dem Intel i430TX-Chipsatz kompatibel sind, und auch andere Flash-ROM-IC-Typen. Es gibt auch einen zusätzlichen Schutz vor versehentlichem Überschreiben des BIOS in Form von Boot-Blöcken, die vor versehentlichem Überschreiben geschützt sind, oder Systemen mit Dual- und Quad-BIOS, die im Falle eines Absturzes ein Backup-BIOS verwenden können. Außerdem erlauben alle modernen Betriebssysteme wie FreeBSD, Linux, macOS, Windows NT-basierte Windows-Betriebssysteme wie Windows 2000, Windows XP und neuere Systeme keinen direkten Hardware-Zugriff für Programme im Benutzermodus über eine Hardware-Abstraktionsschicht.

Infolgedessen ist CIH seit 2008 im Wesentlichen harmlos geworden und verursacht schlimmstenfalls Unannehmlichkeiten, indem es ausführbare Dateien infiziert und Antiviren-Software auslöst. Andere BIOS-Viren sind jedoch nach wie vor möglich; da die meisten Windows-Heimanwender ohne die UAC von Windows Vista/7 alle Anwendungen mit administrativen Rechten ausführen, könnte ein moderner CIH-ähnlicher Virus im Prinzip immer noch Zugriff auf die Hardware erhalten, ohne zuvor einen Exploit zu verwenden. Das Betriebssystem OpenBSD verhindert diesen Zugriff für alle Benutzer, und auch der Grsecurity-Patch für den Linux-Kernel verhindert standardmäßig diesen direkten Hardware-Zugriff, mit dem Unterschied, dass ein Angreifer einen viel schwierigeren Kernel-Level-Exploit oder einen Neustart des Rechners benötigt.

Der dritte BIOS-Virus war eine Technik, die von John Heasman, leitender Sicherheitsberater des britischen Unternehmens Next-Generation Security Software, vorgestellt wurde. Im Jahr 2006 zeigte er auf der Black Hat Security Conference, wie man mit Hilfe bösartiger Prozeduren, die die normalen ACPI-Funktionen im Flash-Speicher ersetzen, seine Rechte erhöhen und den physischen Speicher lesen kann.

Der vierte BIOS-Virus war eine Technik namens "Persistent BIOS infection". Er wurde 2009 auf der CanSecWest Security Conference in Vancouver und auf der SyScan Security Conference in Singapur vorgestellt. Die Forscher Anibal Sacco und Alfredo Ortega von Core Security Technologies demonstrierten, wie bösartiger Code in die Dekomprimierungsroutinen im BIOS eingefügt werden kann, so dass der PC beim Start nahezu vollständig kontrolliert werden kann, noch bevor das Betriebssystem hochgefahren wird. Der Proof-of-Concept nutzt keine Schwachstelle in der BIOS-Implementierung aus, sondern umfasst lediglich die normalen BIOS-Flash-Verfahren. Daher ist physischer Zugriff auf den Rechner oder die Root-Rechte des Benutzers erforderlich. Trotz dieser Voraussetzungen betonte Ortega die tiefgreifenden Auswirkungen der Entdeckung von ihm und Sacco: "Wir können einen Treiber patchen, um ein voll funktionsfähiges Rootkit zu installieren. Wir haben sogar einen kleinen Code, der Antivirenprogramme entfernen oder deaktivieren kann."

Mebromi ist ein Trojaner, der auf Computer mit AwardBIOS, Microsoft Windows und Antiviren-Software von zwei chinesischen Unternehmen abzielt: Rising Antivirus und Jiangmin KV Antivirus. Mebromi installiert ein Rootkit, das den Master Boot Record infiziert.

In einem Interview mit 60 Minutes vom Dezember 2013 behauptete Deborah Plunkett, Direktorin für Informationssicherung bei der Nationalen Sicherheitsbehörde der USA, die NSA habe einen möglichen BIOS-Angriff eines ausländischen Staates auf das US-Finanzsystem aufgedeckt und vereitelt. In der Sendung wurden anonyme Quellen zitiert, die behaupteten, es handele sich um eine chinesische Verschwörung. In Folgeartikeln in The Guardian, The Atlantic, Wired und The Register wurden die Behauptungen der NSA jedoch widerlegt.

Bei neueren Intel-Plattformen ist die Intel Boot Guard (IBG)-Technologie aktiviert. Diese Technologie überprüft die digitale Signatur des BIOS beim Start, und der öffentliche IBG-Schlüssel ist in den PCH integriert. Endbenutzer können diese Funktion nicht deaktivieren.

Alternativen und Nachfolger

Das Unified Extensible Firmware Interface (UEFI) ergänzt das BIOS in vielen neuen Computern. Ursprünglich für die Intel-Itanium-Architektur entwickelt, ist UEFI jetzt auch für Plattformen mit x86- und ARM-Architektur verfügbar; die Entwicklung der Spezifikationen wird vom Unified EFI Forum, einer Special Interest Group der Industrie, vorangetrieben. EFI-Boot wird bisher nur von Microsoft Windows-Versionen mit GPT-Unterstützung, dem Linux-Kernel 2.6.1 und höher sowie von macOS auf Intel-basierten Macs unterstützt. Seit 2014 wird neue PC-Hardware überwiegend mit UEFI-Firmware ausgeliefert. Die Architektur des Rootkit-Schutzes kann auch verhindern, dass das System eigene Softwareänderungen ausführt, was UEFI in der offenen Hardware-Community zu einem umstrittenen BIOS-Ersatz macht. Außerdem erfordert Windows 11 zum Booten UEFI.

Andere Alternativen zur Funktionalität des "Legacy BIOS" in der x86-Welt sind coreboot und libreboot.

Einige Server und Workstations verwenden eine plattformunabhängige Open Firmware (IEEE-1275), die auf der Programmiersprache Forth basiert; sie ist in den SPARC-Computern von Sun, der RS/6000-Reihe von IBM und anderen PowerPC-Systemen wie den CHRP-Motherboards sowie dem x86-basierten OLPC XO-1 enthalten.

Mindestens seit 2015 hat Apple die Unterstützung für das alte BIOS von MacBook Pro-Computern entfernt. Daher unterstützt das BIOS-Dienstprogramm die Legacy-Option nicht mehr und gibt die Meldung "Legacy mode not supported on this system" aus. Im Jahr 2017 kündigte Intel an, dass es die Unterstützung für Legacy-BIOS bis 2020 entfernen würde. Seit 2019 unterstützen neue OEM-PCs mit Intel-Plattform die Legacy-Option nicht mehr.

Aufgabe des BIOS

Ein BIOS löst zwei Probleme, die beim Kaltstart eines PCs auftreten:

  • Zum einen löst es durch das sogenannte „Bootstrapping“ ein klassisches Henne-Ei-Problem: Software ist in der Regel auf einem Datenträger gespeichert, welche beim Start zunächst in den Hauptspeicher des Rechners eingelesen werden muss. Zum Einlesen des Datenträgers benötigt die CPU aber wiederum Software. Frühere Computer und Rechenanlagen lösten dieses Problem dadurch, dass sie die CPU nach dem Einschalten des Rechners grundsätzlich zunächst in den Pausemodus versetzten. Bevor der Rechner gestartet werden konnte, musste manuell oder mit Hilfe spezieller Peripherie eine minimale Software (der Bootloader) in den Hauptspeicher geladen werden. Häufig war das Laden des Bootloaders beim Starten des Rechners aber gar nicht nötig, da der in den 1960er und frühen 1970er Jahren weit verbreitete Kernspeicher – im Gegensatz zum heute gebräuchlichen Halbleiterspeicher – seinen Inhalt beim Ausschalten nicht verlor (Persistenzspeicher) und die Programme im Hauptspeicher deshalb zumeist nur neu gestartet werden mussten oder sogar fortgesetzt werden konnten. Das Ladeprogramm ist bei heutigen PCs Teil des BIOS, das in einem speziellen Speicherbaustein, dem EPROM oder bei neueren Modellen meist in einem Flash-Speicher abgelegt ist, deren Speicherinhalt jeweils auch ohne Stromversorgung erhalten bleibt. Beide sind vollständig unabhängig von einer Energieversorgung und auch für die Firmware von portablen Geräten geeignet. Damit entfällt heute die manuelle Eingabe eines Ladeprogramms.
  • Zum anderen erfordert unterschiedliche Hardware jeweils eine spezielle Ansteuerungssoftware (Treibersoftware) und die zugehörige Konfiguration. Früher musste ein Betriebssystem auf jede Variante jedes Rechnertyps speziell zugeschnitten werden, um darauf lauffähig zu sein. Durch die Auslagerung dieser speziellen Ansteuersoftware in das BIOS der jeweiligen Rechner wurde es möglich, die gleiche Betriebssystemsoftware auf verschiedenen Rechnern laufen zu lassen. Damit wirkt das BIOS nach neuerer Sprechweise als Hardware Abstraction Layer (HAL). Allerdings benutzen fast alle modernen Betriebssysteme eigene Treiber, vor allem weil die vom BIOS im Protected und Long Mode nicht verfügbar sind. In einem von diesem laufen aber fast alle modernen Betriebssysteme, unter anderem um einen größeren Arbeitsspeicher verwalten zu können und um Multitasking einfach zu organisieren.

BIOS beim IBM-kompatiblen PC

BIOS-Einstellungen

Sicherheit

Das BIOS ist die zweite Sicherheitsstufe, die unberechtigten Zugriff auf einen Computer verhindern kann, nach einer physischen Sicherung mit Schlössern oder Ähnlichem. Im BIOS-Setup kann eine Passwortabfrage für das Starten des Rechners eingerichtet werden. Das stellt keine vollständige Sicherung des Systems dar, da die Einstellungen bei physischem Zugang zum Computer mehr oder weniger leicht durch Manipulationen auf der Hauptplatine ausgehebelt werden können. Zudem wirkt diese Sicherung nur auf die Hauptplatine, auf der sich das BIOS enthaltende ROM befindet. Wird diese ausgetauscht oder die Festplatte(n) des Systems in einen anderen Rechner eingebaut, kann problemlos auf alle Daten zugegriffen werden. Zudem haben die Hersteller meist ein festes (Recovery-, Master- oder Supervisor-)Passwort eingerichtet, um den Zugang wiederherstellen zu können, wenn der Benutzer sein eigenes Passwort vergessen hat.

BIOS-Hersteller

Eine Auswahl von Herstellern von BIOSen für IBM-kompatible PCs:

  • American Megatrends
  • Phoenix/Award – Award und Phoenix haben 1998 fusioniert. Award wird von dem Unternehmen als Desktop-Produkt geliefert. Die Phoenix-Produktreihe wird hingegen bei Servern und Laptops eingesetzt.
  • MR BIOS
  • ATI Technologies
  • IBM
  • Insyde

Vergleichbare Konzepte

XBIOS/TOS beim Atari ST

Beim Atari ST war das gesamte Betriebssystem TOS, einschließlich der ursprünglich von Digital Research entwickelten grafischen Benutzeroberfläche GEM, im ROM untergebracht und quasi direkt nach dem Einschalten betriebsbereit. Als BIOS wurde die unterste Schicht des Betriebssystems bezeichnet, für den Programmierer erkennbar als eine Sammlung speicherresidenter Funktionen. Darüberliegende Schichten (ebenfalls erkennbar als solche Sammlungen) waren:

  • Das GEMDOS (GEM Disk Operating System)
  • Das VDI (Virtual Device Interface)
  • Das AES (Application Environment Services)

Das XBIOS (Extended Basic Input/Output System) war keine eigene Schicht, sondern lag parallel zum BIOS auf derselben Schicht, wobei einige Funktionen des XBIOS Hardware-näher angesiedelt waren.

Kickstart beim Commodore Amiga

Die Amiga-Rechner von Commodore benötigen als Firmware das sogenannte Kickstart. Es erfüllt alle Funktionen eines BIOS und enthält darüber hinaus auch den Kernel (exec) des AmigaOS. Die ersten Modelle des Amiga 1000 müssen nach dem Einschalten („Kaltstart“) noch per Bootstrap-Diskette mit den Kickstart-Versionen 1.0 bis 1.3 gestartet werden. Das Kickstart wird dabei im WOM, einem besonderen Bereich des RAM, abgelegt und gegen Überschreiben gesichert. Nach einem Reset (Warmstart) bleibt es im Speicher erhalten und braucht nicht neu geladen zu werden. Dieser Umstand hat den Vorteil, dass sehr schnell und unkompliziert auf eine neuere Version aktualisiert werden kann. Alle späteren Modelle, wie der Amiga 500 oder der Amiga 2000, verfügen über ein ROM, so dass die Version nur durch den Austausch dieses Bausteins geändert werden kann. Durch die Verwendung eines „Kickstart Switchers“ kann jedoch vor dem Einschalten zwischen zwei ROMs mit unterschiedlichen Kickstartversionen per Schalter gewechselt werden. Das wurde besonders seit Einführung von Kickstart 2.0 relevant, das Kompatibilitätsprobleme mit älteren Programmen, besonders Spielen, hat. Besitzer des „Amiga 500+“, der hauptsächlich für Computerspiele im Heimbereich ausgelegt ist und standardmäßig Kickstart 2.0 verwendet, sind für ältere Spiele auf einen solchen Kickstartswitcher angewiesen.

Simple Firmware Interface

Mit dem Engagement von Intel in der Smartphone- und MID-Technik wurde das Simple Firmware Interface (SFI) entwickelt. Es ist frei von alten und lizenzkostenpflichtigen PC-BIOS-Patenten. Deshalb benötigt es aber auch neuere, speziell für SFI angepasste Betriebssysteme. SFI findet auf Intels Moorestown-Plattform Anwendung.

Kritik

Firmware-Schnittstellen wie das BIOS oder der Nachfolger UEFI sind sehr tief im System verankert und daher potenziell sicherheitskritische Komponenten.

Punkte, die zu einer kritischen Betrachtung eines herstellerabhängigen BIOS führen:

  • Proprietärer Code: Absichtliche oder unabsichtliche Sicherheitslücken entziehen sich der öffentlichen Kontrolle (Möglichkeit der Ausspähung, Manipulation und Industriespionage) – die NSA erarbeitete 2010 dazu eine Durchführbarkeitsstudie.
  • Die Einstufung der Vertrauenswürdigkeit von Software unterliegt beim BIOS-Nachfolger UEFI allein der Firma Microsoft.
  • Es gibt nur zwei BIOS-Produzenten – beide residieren in den USA und unterliegen deren Bestimmungen.
  • UEFI erfüllt nicht die Anforderungen zur Computersicherheit der deutschen Bundesregierung.
  • Mögliche feste Implementation von Nutzungseinschränkungen, etwa Digital Rights Management.

Freie BIOS-Alternativen

Die verschiedenen BIOS-Implementierungen der PCs sind im Regelfall proprietäre Software, was Unsicherheiten bergen kann: da der Quellcode nicht bekanntgegeben wird, werden Sicherheitslücken teilweise nicht rechtzeitig erkannt. Auch kann ein proprietäres BIOS den Benutzer an Tätigkeiten hindern, die von der Hardware des Gerätes her kein Problem darstellen würden: so erlaubt beispielsweise das BIOS der Xbox es nicht, andere Software als die von Microsoft zugelassene zu starten.

Es ist möglich, den Flash-ROM-Baustein (früher: EPROM), auf dem das BIOS abgelegt ist, zu ersetzen oder zu überschreiben, um so beispielsweise den Linux-Kernel direkt aus dem Flash heraus zu starten, ohne BIOS. Die Vorgehensweise ist jedoch von der jeweiligen Hauptplatine abhängig und wird überwiegend in Industriecomputern eingesetzt.

Projekte mit diesem Ziel sind etwa Coreboot (ehemals LinuxBIOS), Libreboot (ein Coreboot-Fork ohne BLOBs) oder OpenBIOS – letzteres ist allerdings eine Open-Firmware-Implementation.