BIOS (IBM PC)

Das PC-BIOS, im Kontext von IBM-PC-kompatiblen Computern durchwegs kurz als BIOS bezeichnet (IPA: [], , von englisch basic input/output system), ist die System-Firmware des von IBM 1981 vorgestellten IBM PC „ 5150“ und in Folge aller dazu kompatiblen Computer, was nahezu alle x86-PCs der zweiten Hälfte der 1980er Jahre, der 1990er und der 2000er Jahre umfasst. Neben Personal Computern wurde es aber auch beispielsweise in Workstations und Servern der x86-Architektur verwendet, um „PC-kompatibel“ zu sein. Das BIOS ist in einem nichtflüchtigen Speicher auf der Hauptplatine abgelegt und wird wie jede System-Firmware unmittelbar nach dessen Einschalten ausgeführt. Aufgabe des BIOS ist es unter anderem, den PC zunächst funktionsfähig zu machen und im Anschluss das Starten eines Betriebssystems einzuleiten.

Aufgrund des großen Erfolgs und der großen Verbreitung von IBM-PC-kompatiblen Systemen steht der Begriff „BIOS“ spätestens seit den 1990er Jahren allgemein für die System-Firmware eines Computers.

Das PC-BIOS ist funktionell durch dessen designierten Nachfolger , kurz EFI, abgelöst. Diese ursprünglich ab 1998 für den Itanium von Intel entwickelte Firmware wird seit 2006 als Unified Extensible Firmware Interface, kurz UEFI, von mehreren Firmen gemeinsam weiterentwickelt. UEFI löste das BIOS seit ca. 2010 schrittweise ab, stellte anfangs allerdings eine BIOS-Kompatibilitätsschicht bereit – das  oder kurz CSM – womit es voll zum BIOS kompatibel bleibt. Aufgrund dieses fließenden Übergangs wird UEFI oft auch als UEFI-BIOS sowie dessen Firmware-Setup oft auch (weiterhin) als BIOS-Setup bezeichnet. Laut Intel sollte das CSM, also der BIOS-Modus und somit die Kompatibilität, spätestens ab 2020 von den Herstellern weggelassen werden, was diese auch taten. Moderne Weiterentwicklungen der IBM-PC-kompatiblen Computer, wie x64-PCs mit UEFI ohne CSM, können daher Betriebssysteme und Boot-Medien, die ein PC-BIOS erfordern, nicht mehr starten.

Funktionen 
Durch modernere Hardware hat das BIOS im Laufe der Zeit neue Funktionen hinzugewonnen. Nicht alle der im Folgenden genannten Punkte wurden schon vom Ur-BIOS auf dem ersten IBM PC ausgeführt. Die Weiterentwicklung der Hardware hat im Laufe der Zeit (Stand 2018 ist das BIOS-Konzept bereits mindestens 43 Jahre alt) zu einer Reihe von iterativen, inkompatiblen Ergänzungen geführt, die zunehmend den Charakter von „Flickschusterei“ tragen und bei 64-Bit-Systemen an ihre Grenzen stoßen. Daher wurde in Form von Extensible Firmware Interface (EFI, bzw. UEFI) ein BIOS-Nachfolger entwickelt.

Im Wesentlichen führt das BIOS, bevor das Betriebssystem gestartet wird, die folgenden Funktionen aus:
 Power On Self-Test (POST)
 Initialisierung der Hardware

Wichtiger Bestandteil der Hardware-Initialisierung eines Plug-and-Play-BIOS ist die Konfiguration und Überprüfung von eingebauten Steckkarten.

Dazu werden in einem speziellen Speicherbereich des BIOS, dem Bereich Extended System Configuration Data (kurz ESCD), Informationen zu Zustand und Konfiguration von ISA-, PCI- und AGP-Steckkarten und die entsprechende Ressourcenzuteilung verzeichnet. Die Informationen im ESCD-Bereich werden beim Bootvorgang mit dem tatsächlichen Zustand des Systems verglichen und bei Änderungen gegebenenfalls aktualisiert. Das Betriebssystem greift auf die Informationen im ESCD-Bereich zurück und kann Änderungen der Plug-and-Play-Ressourcenzuordnung dort speichern, um Veränderungen durch das BIOS beim nächsten Start vorzubeugen.

 Aufforderung zur Eingabe eines BIOS-Passworts (falls konfiguriert)
 Aufforderung zur Eingabe eines Festplatten-Passworts (falls konfiguriert)
 Darstellung eines Startbildschirms
 Möglichkeit, ein BIOS-Konfigurationsmenü („BIOS-Setup“) aufzurufen
 Aufrufen von BIOS-Erweiterungen einzelner Subsysteme, die entweder auf Steckkarten untergebracht sind oder direkt auf dem Mainboard integriert sind, z. B.:
 Grafikchip
 Netzwerkchip
 SCSI-Controller
 RAID-Controller
 Feststellen, von welchem als erstem in einer festgelegten Abfolge von Datenträgern gebootet werden kann; bzw. Laden des ersten Datenblocks (Bootsektor), meistens enthält er einen Bootloader.

Danach übernimmt das Programm im geladenen Bootsektor die Kontrolle über den Rechner. Meistens lädt und startet ein Bootloader entweder (stufenweise) ein auf dem Datenträger installiertes Betriebssystem oder einen Bootmanager, der ein Menü zur Auswahl eines Betriebssystems anbietet. Bei klassischen im Real Mode laufenden Betriebssystemen wie MS-DOS o. ä. wird das BIOS auch im weiteren Betrieb genutzt. Es übernimmt für das Betriebssystem die Kommunikation mit diverser Hardware, z. B.:
 Tastatur
 Serielle und parallele Schnittstellen
 Systemlautsprecher
 Grafikkarte
 Diskettenlaufwerke
 Festplattenlaufwerke

Andere, moderne Arten von Hardware werden vom BIOS nicht bedient. Zur Ansteuerung beispielsweise einer Maus ist unter DOS ein spezieller Hardwaretreiber nötig.

Neuere, treiberbasierte Betriebssysteme wie beispielsweise Linux oder Windows nutzen diese BIOS-Funktionen nicht. Sie laden für jede Art von Hardware einen speziellen Treiber. Jedoch müssen sie am Anfang ihres Startvorgangs über den Bootloader noch kurz auf die BIOS-Funktionen zur Ansteuerung der Festplatten zurückgreifen, um ihren Festplattentreiber zu laden.

BIOS-Einstellungen 
Um in das Setup-Programm des BIOS zu gelangen, muss beim Einschalten des Rechners eine bestimmte Taste oder Tastenkombination betätigt werden. Bei einigen wenigen Mainboards muss ein bestimmter Jumper gesetzt werden.

Die Einstellungen werden in einem CMOS-Speicher gespeichert, der über die Mainboard-Batterie auch ohne Netzanschluss mit Strom versorgt wird. Oft ist dieser Speicher mit der Echtzeituhr des Systems kombiniert, da auch diese immer mit Strom versorgt werden muss. Bei Schwierigkeiten bietet das BIOS meist die Möglichkeit, die Standardeinstellungen des Rechner- oder des BIOS-Herstellers zu setzen. Wenn es nicht mehr möglich ist, ins Setup-Programm zu kommen (etwa, weil der Rechner gar nicht mehr bootet), lassen sich die Einstellungen meist über einen Jumper am Mainboard zurückstellen (bei allen neueren Mainboards muss dafür das Netzteil ganz abgeschaltet werden). Wenn das nicht möglich ist, kann der CMOS-Speicher durch das Entfernen der Batterie gelöscht werden. Letzteres benötigt aber einige Zeit, bis auch die Kondensatoren entladen sind.

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.

Aktualisieren des BIOS 
Bei alten Mainboards (mit 286 bis 486er Prozessor) ist im BIOS die Option „SHADOW BIOS MEMORY“ vorhanden. Dabei wird das BIOS in eigener Prozedur in das zugriffschnellere RAM kopiert (temporäre Schattenkopie bis zum Ausschalten des Computers). Seitdem (ab spätere 486er / Pentium1) der überwiegende Teil des BIOS gepackt abgelegt ist und damit ein günstigerer BIOS-Chip genügt, steht diese Option nicht mehr zur Verfügung, da das BIOS auf jeden Fall ins RAM entpackt werden muss. Hersteller wie Award verwendeten zum Packen von ihrem BIOS das LHA-Format.

Auf modernen Hauptplatinen ist das BIOS in einem wiederbeschreibbaren Speicher (genauer EEPROM, meist Flash-Speicher) abgelegt. Daher kann es ohne Ausbau dieses Chips durch neuere Versionen ersetzt werden („Flashen“). Da ein Rechner ohne vollständiges BIOS jedoch nicht funktionsfähig ist, stellt dieser Vorgang immer ein gewisses Risiko dar. Wird er unterbrochen, beispielsweise durch einen Stromausfall, muss der Chip, auf dem das BIOS gespeichert ist, normalerweise ausgetauscht werden. Als Alternative wird im Internet von verschiedenen Institutionen auch das Neuprogrammieren des Chips angeboten. Selbst aufgelötete Flash-Speicher stellen für Fachpersonal nur ein geringfügiges Problem dar. Auf neuen Boards werden immer häufiger sogenannte serielle Flashspeicher verwendet, die es im Fehlerfall teilweise ermöglichen, per SPI-BUS auf dem Board neu programmiert zu werden.

Bootblock 
Mit der Zeit entwickelten American Megatrends, Award Software, Phoenix und andere Hersteller „BootBlock“/Wiederherstellungs-BIOS-Bereiche, die bei einem Flash-Vorgang dann normalerweise nicht mehr überschrieben werden. Schlug der Flash-Vorgang fehl, startet das „BootBlock“/Wiederherstellungs-BIOS und ermöglicht es, von Diskette zu booten. Bei einigen BIOS-Varianten kann sogar eine spezielle Wiederherstellungs-CD/-Diskette erstellt werden, die auch bei einem defekten BIOS durch Setzen eines Jumpers automatisch das BIOS wiederherstellt. Dazu sind keinerlei Benutzereingaben und keine grafische Ausgabe nötig, da diese bei defektem BIOS meist ohnehin nicht mehr funktionieren.

Einige Hauptplatinen bieten ein sogenanntes DualBIOS an. Im Fehlerfall kann das zweite (noch intakte) BIOS den Startvorgang übernehmen und die Änderung rückgängig gemacht werden. Das kann beim Flashen des BIOS ein Rettungsanker sein, sollte die neu aufgespielte BIOS-Version nicht funktionieren. Des Weiteren können mit einem DualBIOS verschiedene BIOS-Einstellungen geladen werden.

Da das Aktualisieren eines Flash-BIOS heute schon unter einem laufenden Windows möglich ist, eröffnen sich damit neue Einfallswege für Viren-Befall. Wenn auf diesem Wege beispielsweise ein Rootkit installiert würde, könnte es sich noch einmal wesentlich effizienter gegen Entdeckung und Löschung abschotten. Außerdem kann ein Absturz des Betriebssystems während des Flashens den PC eventuell unbootbar machen (siehe oben).

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

Nachfolge 

Bis UEFI  2 enthalten UEFI-Implementierungen auf der x86-Architektur ein Compatibility Support Module oder kurz CSM, das vollständige BIOS-Kompatibilität herstellt. Zur eindeutigen Kennzeichnung wurde das PC-BIOS im Kontext von UEFI als „“ bezeichnet –  für Altlast: das BIOS als altes, überholtes bzw. abgekündigtes System, für das UEFI der moderne Nachfolger ist.

Der Übergang vom BIOS hin zu UEFI wurde in vier Klassen () eingeteilt.
 UEFI  0 ist kein (U)EFI, sondern ein „“.
 UEFI  1 nutzt UEFI, gibt aber mithilfe des CSM vor, ein BIOS zu sein. Es stehen keine (U)EFI-Funktionen für Betriebssysteme oder Programme zur Verfügung.
 UEFI  2 ist ein UEFI, bietet aber sowohl (U)EFI- als auch BIOS-Funktionen, sodass Betriebssysteme für beide Firmwares starten können.
 UEFI  3 ist ein UEFI ohne „“-Funktionen – das CSM ist nicht mehr implementiert.

Das erste PC-Betriebssystem mit EFI-Unterstützung war Linux, allerdings auf der Itanium-Architektur. Auf x86 kann Linux, seit Kernel 2.6.25 von 2008, sowohl in der 32- als auch der 64-Bit-Variante mit (U)EFI gestartet werden.

2006 war Apple einer der ersten Hersteller von Desktop-PCs und Notebooks, der EFI einsetzte. So ist auf Intel-Macs eine Apple-Variante von EFI 1.1 für macOS, jedoch mit einem CSM für Boot Camp bzw. für Kompatibilität zu Windows vorhanden.

Auch auf x86-PCs anderer Hersteller wurde UEFI nach und nach eingeführt, allerdings unterstützten anfangs wichtige Betriebssysteme UEFI noch nicht, weshalb UEFI-CSM im BIOS-Setup als Voreinstellung () bis in die erste Hälfte der 2010er Jahre stets aktiv war. Betriebssysteme, die ein BIOS voraussetzen, beispielsweise Windows XP und Windows Vista, blieben somit Out-of-the-box kompatibel. Mit Windows Vista Service Pack 1 von 2008 begann schließlich auch Microsoft UEFI für 64-Bit-Windows zu unterstützen, allerdings wird UEFI 2.0 oder höher vorausgesetzt, da EFI 1.1 noch eine 32-Bit-Implementierung (IA-32) war – erst UEFI 2.0 wurde vollständig auf x86-64 portiert. Bis Windows 7, wie Vista SP1 grundsätzlich UEFI-fähig, benötigte Windows auf der 64-Bit-x86-Architektur BIOS-Kompatibilität für den Grafiktreiber (ein VBIOS mit Interrupt 10h), wofür ein geladenes CSM unter UEFI die Voraussetzung ist. Alle 32-Bit-PC-Versionen von Windows benötigen weiterhin ein BIOS oder (U)EFI-CSM; Windows 10 ist die letzte Windows-Version, die für IA-32 und somit BIOS-kompatibel verfügbar ist.

Auch Intel-Macs ab ca. 2013 (x64-Architektur) sind zu UEFI 2.0 kompatibel, obwohl sich das Apple-EFI oft noch als Version 1.1 identifiziert. Auf Arm-Macs, die als „“ ab 2020 die Intel-Macs schrittweise ablösen, implementiert Apple eine eigene (proprietäre) Firmware im . Auf der Arm-Architektur mit Windows RT verwendet Microsoft weiterhin UEFI, beispielsweise auf dem Surface-Tablet (da es sich bei Arm um keine x86-kompatible Architektur handelt, gibt es dort auch kein BIOS-kompatibles CSM).

Mit Windows 8 hat sich UEFI auf dem (ehemals IBM-kompatiblen) PC durchgesetzt. Die meisten x86-Systeme dieser Zeit haben ein -2-UEFI, teils mit aktiviertem CSM, teils mit deaktiviertem CSM als Voreinstellung. Da bei aktiviertem  das CSM nicht mehr geladen werden darf, hat sich die Voreinstellung bis Windows 10 gänzlich in Richtung UEFI, ohne Kompatibilität zum PC-BIOS („“), verschoben. Seit rund 2020 werden Systeme durchwegs mit einem -3-UEFI ausgeliefert, womit der Übergang zum BIOS-Nachfolger als abgeschlossen zu betrachten ist.

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.

Normen, Standards, Richtlinien

Standard über das Zusammenwirken von BIOS-Systemstart, Initial Program Load und BIOS-Funktionsergänzungen 
Das Zusammenwirken von BIOS-Systemstart, Initial Program Load und BIOS-Funktionsergänzungen wurde von einem Firmenkonsortium bestehend aus Hardware- und BIOS-Herstellern ausgearbeiteten und am 11. Januar 1996 standardisiert: Die BIOS Boot Specification (kurz: „BBS“) 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.

Siehe auch 
 Liste der BIOS-Signaltöne

Literatur

Weblinks 

 Flashrom, universelles open-source Flash-Tool (DOS, Linux, macOS, Open-, Net-, FreeBSD und andere Unix-Derivate)
 
 Uniflash, universelles Flash-Tool für DOS (derzeitige Rainbow Software Seite von Uniflash 1.40)
 BIOS-Kompendium
 An Introduction to the PC's (Personal Computer's) BIOS (Basic I/O System) (englisch)

Einzelnachweise 

Abkürzung
Betriebssystemkomponente
Firmware