BIOS – Wikipedia

before-content-x4

Firmware

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

Beim Rechnen, BIOS (, DURCH-oss, -⁠ohss; ein Akronym für Grundlegendes Ein-und Ausgabesystem und auch bekannt als die System-BIOS, ROM-BIOS, BIOS-ROM oder PC-BIOS) ist eine Firmware, die verwendet wird, um die Hardware-Initialisierung während des Bootvorgangs (Power-on-Start) durchzuführen und um Laufzeitdienste für Betriebssysteme und Programme bereitzustellen.[1] Die BIOS-Firmware ist auf der Systemplatine eines PCs vorinstalliert und ist die erste Software, die beim Einschalten ausgeführt wird. Der Name stammt von dem Basic Input/Output System, das 1975 im CP/M-Betriebssystem verwendet wurde.[2][3] Das ursprünglich proprietäre BIOS des IBM-PCs wurde von einigen Unternehmen (wie Phoenix Technologies) zurückentwickelt, um kompatible Systeme zu erstellen.[4] Die Schnittstelle dieses ursprünglichen Systems dient als de facto Standard.

Das BIOS in modernen PCs initialisiert und testet die Systemhardwarekomponenten 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 Tastatur, Anzeige, Speicher und andere Eingabe-/Ausgabe(I/O)-Geräte bereit, die eine Schnittstelle zu Anwendungsprogrammen und dem Betriebssystem standardisierten. Neuere Betriebssysteme verwenden die BIOS-Interrupt-Aufrufe nach dem Start nicht.[5]

Die meisten BIOS-Implementierungen sind speziell dafür ausgelegt, mit einem bestimmten Computer- oder Motherboard-Modell zu arbeiten, indem sie mit verschiedenen Geräten, insbesondere dem System-Chipsatz, kommunizieren. Ursprünglich war die BIOS-Firmware in einem ROM-Chip auf dem PC-Motherboard gespeichert. In modernen Computersystemen werden die BIOS-Inhalte im Flash-Speicher gespeichert, sodass sie neu geschrieben werden können, ohne den Chip vom Motherboard zu entfernen. Dies ermöglicht einfache Endbenutzer-Updates der BIOS-Firmware, sodass neue Funktionen hinzugefügt oder Fehler behoben werden können, aber es besteht auch die Möglichkeit, dass der Computer mit BIOS-Rootkits infiziert wird. Darüber hinaus kann ein fehlgeschlagenes BIOS-Upgrade das Motherboard blockieren.

Unified Extensible Firmware Interface (UEFI) ist ein Nachfolger des alten PC-BIOS und zielt darauf ab, seine technischen Einschränkungen zu beheben.[6]

Geschichte[edit]

/* 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 */

Der Begriff BIOS (Basic Input/Output System) stammt von Gary Kildall[7][8] und erschien erstmals 1975 im CP/M-Betriebssystem,[2][3][8][9][10][11] Beschreibung des maschinenspezifischen Teils von CP/M, der während des Bootens geladen wird und direkt mit der Hardware verbunden ist.[3] (Eine CP/M-Maschine hat normalerweise nur einen einfachen Bootloader in ihrem ROM.)

Versionen von MS-DOS, PC-DOS oder DR-DOS enthalten eine Datei, die verschiedentlich “IO.SYS”, “IBMBIO.COM”, “IBMBIO.SYS” oder “DRBIOS.SYS” genannt wird; diese Datei wird als “DOS-BIOS” (auch als “DOS-I/O-System” bezeichnet) bezeichnet und enthält den untergeordneten hardwarespezifischen Teil des Betriebssystems. Zusammen mit dem zugrunde liegenden hardwarespezifischen aber betriebssystemunabhängigen “System BIOS”, welches im ROM residiert, stellt es das Analogon zum “CP/M BIOS” dar.

Das ursprünglich proprietäre BIOS des IBM-PCs wurde von einigen Unternehmen (wie Phoenix Technologies) zurückentwickelt, um kompatible Systeme zu erstellen.[4]

Mit der Einführung von PS/2-Maschinen teilte IBM das System-BIOS in Real- und Protected-Mode-Teile 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 “ABIOS” (für “Advanced BIOS”) speziell neue Schnittstellen bereitstellte geeignet für Multitasking-Betriebssysteme wie OS/2.

Benutzeroberfläche[edit]

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 Einschalt-Selbsttest (POST) nicht so weit fortgeschritten war, dass ein Videoanzeigeadapter erfolgreich initialisiert wurde. Optionen auf dem IBM PC und XT wurden durch Schalter und Jumper auf der Hauptplatine und auf Erweiterungskarten eingestellt. Ab Mitte der 1990er Jahre wurde es typisch, dass das BIOS-ROM ein “BIOS-Konfigurationsdienstprogramm” (BCU[12]) oder “BIOS-Setup-Dienstprogramm”, auf das beim Systemstart durch eine bestimmte Tastenfolge zugegriffen wird. Dieses Programm ermöglichte es dem Benutzer, Systemkonfigurationsoptionen des früher mit DIP-Schaltern eingestellten Typs über ein interaktives Menüsystem einzustellen, das über die Tastatur gesteuert wurde. In der Zwischenzeit hielten IBM-kompatible PCs (einschließlich des IBM AT) Konfigurationseinstellungen im batteriegepufferten RAM 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. Gleiches galt allgemein für Computer mit EISA-Bus, für die das Konfigurationsprogramm EISA Configuration Utility (ECU) genannt wurde.

Ein moderner Wintel-kompatibler Computer bietet eine Setup-Routine, die im Wesentlichen unverändert gegenüber den ROM-residenten BIOS-Setup-Dienstprogrammen der späten 1990er Jahre ist; Der Benutzer kann Hardwareoptionen über die Tastatur und das Videodisplay konfigurieren. Der moderne Wintel-Rechner kann die BIOS-Konfigurationseinstellungen im Flash-ROM speichern, möglicherweise im gleichen Flash-ROM, der das BIOS selbst enthält.

Operation[edit]

Systemstart[edit]

Frühe Intel-Prozessoren starteten bei der physikalischen Adresse 000FFFF0h. Systeme mit neueren Prozessoren bieten Logik zum Starten des BIOS vom System-ROM aus.
[13]

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

Der POST identifiziert, testet und initialisiert Systemgeräte wie CPU, Chipsatz, RAM, Motherboard, Grafikkarte, Tastatur, Maus, Festplattenlaufwerk, optisches Laufwerk und andere Hardware, einschließlich Peripheriegeräte.

Frühe IBM-PCs hatten eine Routine im POST, die ein Programm über den Tastaturport in den RAM herunterlädt und es ausführt.[14][15] Diese Funktion war für Werkstests oder Diagnosezwecke vorgesehen.

Bootvorgang[edit]

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 sucht, ruft das BIOS INT 19h auf, um die Startverarbeitung 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önnen, oder das System kann während des Neustarts hängen oder abstürzen .

Wenn INT 19h aufgerufen wird, versucht das BIOS, Bootloader-Software auf einem “Startgerät” wie einer Festplatte, einer Diskette, einer CD oder einer DVD zu finden. Es lädt und führt die erste Boot-Software aus, die es findet, und gibt ihm die Kontrolle über den PC.[16]

Das BIOS verwendet die Boot-Geräte, die im nichtflüchtigen BIOS-Speicher (CMOS) festgelegt sind, oder, in den frühesten PCs, DIP-Schalter. Das BIOS überprü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 wurde, prüfen einige BIOSe auch die Bootsektor-Signatur 0x55 0xAA in den letzten beiden Bytes des Sektors (die 512 Bytes lang ist), bevor sie einen Bootsektor akzeptieren und das Gerät als bootfähig betrachten.[nb 1]

Wenn ein bootfähiges Gerät gefunden wird, übergibt das BIOS die Kontrolle an den geladenen Sektor. Das BIOS interpretiert den Inhalt des Bootsektors nur, um möglicherweise die Bootsektorsignatur in den letzten zwei Bytes zu überprüfen. 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 Nicht-Festplattengerät, wie z. B. ein Netzwerkadapter, versucht, durch ein Verfahren zu booten, das durch sein Options-ROM oder das Äquivalent, das in das BIOS-ROM des Motherboards integriert ist, definiert ist. Als solche können Options-ROMs auch den vom Motherboard-BIOS-ROM definierten Boot-Prozess beeinflussen oder ersetzen.

Beim Boot-Standard für optische Medien von El Torito emuliert das optische Laufwerk tatsächlich eine 3,5-Zoll-Diskette mit hoher Dichte für Boot-Zwecke für das BIOS. Das Lesen des “ersten Sektors” einer CD-ROM oder DVD-ROM ist kein einfach definierter Vorgang wie auf einer Diskette oder einer Festplatte. Außerdem macht es die Komplexität des Mediums schwierig, ein nützliches Boot-Programm in einem Sektor zu schreiben. Die bootfähige virtuelle Diskette kann Software enthalten, die den Zugriff auf das optische Medium in ihrer nativen Form ermöglicht Format.

Boot-Priorität[edit]

Der Benutzer kann die vom BIOS implementierte Boot-Priorität auswählen. Die meisten Computer verfügen beispielsweise über eine bootfähige Festplatte, aber manchmal gibt es ein Wechseldatenträgerlaufwerk mit einer höheren Bootpriorität, sodass der Benutzer das Booten eines Wechseldatenträgers veranlassen kann.

In den meisten modernen BIOS kann die Boot-Prioritätsreihenfolge vom Benutzer konfiguriert werden. In älteren BIOSes sind begrenzte Boot-Prioritätsoptionen auswählbar; in den frühesten BIOSs wurde ein Schema mit fester Priorität implementiert, wobei zuerst Diskettenlaufwerke, dann Festplatten (dh Festplatten) und normalerweise keine anderen Boot-Geräte unterstützt werden, vorbehaltlich der Änderung dieser Regeln durch installierte Options-ROMs. Das BIOS in einem frühen PC bootete normalerweise auch nur vom ersten Diskettenlaufwerk oder der ersten Festplatte, selbst wenn zwei Laufwerke installiert waren.

Boot-Fehler[edit]

Auf dem ursprünglichen IBM PC und XT wurde ROM BASIC durch Aufrufen von INT 18h gestartet, wenn keine bootfähige Diskette gefunden wurde. Da nur wenige Programme BASIC im ROM verwendeten, ließen die Hersteller von Klon-PCs es weg; dann würde ein Computer, der nicht von einer Diskette booten konnte, “No ROM BASIC” anzeigen und anhalten (als Reaktion auf INT 18h).

Spätere Computer zeigten eine Meldung wie “Kein bootfähiges Laufwerk gefunden” an; einige würden zum Einlegen einer Diskette und zum Drücken einer Taste auffordern, um den Bootvorgang zu wiederholen. Ein modernes BIOS zeigt möglicherweise nichts an oder öffnet automatisch das BIOS-Konfigurationsdienstprogramm, wenn der Bootvorgang fehlschlägt.

Boot-Umgebung[edit]

Die Umgebung für das Bootprogramm ist sehr einfach: Die CPU befindet sich im Realmodus und die Universal- und Segmentregister sind undefiniert, außer SS, SP, CS und DL. CS:IP zeigt immer auf die physische Adresse 0x07C00. Welche Werte CS und IP tatsächlich haben, ist nicht genau definiert. Einige BIOS verwenden eine CS:IP von 0x0000:0x7C00 während andere verwenden können 0x07C0:0x0000. Da Bootprogramme immer unter dieser festen Adresse geladen werden, muss kein Bootprogramm verschoben werden. DL kann die bei INT 13h verwendete Laufwerksnummer des Startgeräts enthalten. 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 aktiviert wird, den das BIOS immer mindestens verwendet, um die Tageszeitzählung aufrechtzuerhalten und den es initialisiert während des POST, aktiv zu sein und die Tastatur zu funktionieren. Die Tastatur funktioniert auch, wenn der BIOS-Tastaturdienst nicht aufgerufen wird; Tastenanschläge werden empfangen und in den vom BIOS verwalteten 15-stelligen Type-Ahead-Puffer abgelegt.) Das Boot-Programm muss gesetzt werden einen eigenen Stack aufbauen, da die Größe des vom BIOS eingerichteten Stack unbekannt ist und seine Position ebenfalls variabel ist; Obwohl das Bootprogramm den Standard-Stack untersuchen kann, indem es SS:SP untersucht, ist es einfacher und kürzer, einfach einen neuen Stack bedingungslos einzurichten.

Beim Booten sind alle BIOS-Dienste verfügbar und der Speicher unter Adresse 0x00400 enthält die Interrupt-Vektortabelle. BIOS POST hat die System-Timer, Interrupt-Controller, DMA-Controller und andere Motherboard-/Chipsatz-Hardware nach Bedarf initialisiert, um alle BIOS-Dienste in den Bereitschaftsstatus zu bringen. Die DRAM-Auffrischung für alle System-DRAMs in konventionellem Speicher und erweitertem Speicher, aber nicht unbedingt im erweiterten Speicher, wurde eingerichtet und wird ausgeführt. Die den BIOS-Interrupts entsprechenden Interrupt-Vektoren wurden so eingestellt, dass sie auf die entsprechenden Eintrittspunkte im BIOS zeigen, Hardware-Interrupt-Vektoren für vom BIOS initialisierte Geräte wurden so eingestellt, dass sie auf die vom BIOS bereitgestellten ISRs zeigen, und einige andere Interrupts, einschließlich solcher die das BIOS für das Hooken von Programmen generiert, wurden auf einen Standard-Dummy-ISR gesetzt, der sofort zurückkehrt. Das BIOS verwaltet einen reservierten Block des System-RAM an den Adressen 0x00400–0x004FF mit verschiedenen Parametern, die während des POST initialisiert werden. Alle Speicher an und über Adresse 0x00500 kann vom Bootprogramm verwendet werden; es kann sich sogar selbst überschreiben.

Erweiterungen (Options-ROMs)[edit]

Peripheriekarten wie Hostbusadapter für Festplattenlaufwerke und Grafikkarten haben ihre eigenen BIOS-Erweiterungsoptions-ROMs, die dem BIOS zusätzliche Funktionen bieten. Code in diesen Erweiterungen wird ausgeführt, bevor das BIOS das Betriebssystem vom Massenspeicher bootet. Diese ROMs testen und initialisieren normalerweise Hardware, fügen neue BIOS-Dienste hinzu oder ersetzen vorhandene BIOS-Dienste durch ihre eigenen Dienste. Ein SCSI-Controller verfügt beispielsweise normalerweise über ein BIOS-Erweiterungs-ROM, das Unterstützung für über diesen Controller angeschlossene Festplatten bietet. Ein Erweiterungs-ROM könnte im Prinzip ein Betriebssystem enthalten oder einen völlig anderen Boot-Prozess implementieren, wie beispielsweise das Booten über das 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 geändert werden.

Das Motherboard-BIOS enthält normalerweise Code für den Zugriff auf Hardwarekomponenten, die für das Bootstrapping der integrierten Anzeige und des integrierten Speichers erforderlich sind. Darüber hinaus enthalten Plug-in-Adapterkarten wie SCSI, RAID, Netzwerkschnittstellenkarten und Videokarten oft ihr eigenes BIOS (zB Video-BIOS), das den System-BIOS-Code für die jeweilige Komponente ergänzt oder ersetzt. Sogar Geräte, die in das Motherboard eingebaut sind, können sich so verhalten; ihre Options-ROMs können Teil des Motherboard-BIOS sein.

Eine Add-In-Karte erfordert ein Options-ROM, wenn die Karte vom Motherboard-BIOS nicht unterstützt wird und die Karte initialisiert oder über BIOS-Dienste zugänglich gemacht werden muss, bevor das Betriebssystem geladen werden kann (normalerweise bedeutet dies, dass dies beim Bootvorgang erforderlich ist) ). Auch wenn es nicht benötigt wird, kann ein Options-ROM die Verwendung einer Adapterkarte ermöglichen, ohne dass nach dem Booten Treibersoftware von einem Speichergerät geladen wird – mit einem Options-ROM wird keine Zeit zum Laden des Treibers benötigt, der Treiber nimmt keine Zeit in Anspruch Speicherplatz im RAM oder auf der Festplatte, und die Treibersoftware auf dem ROM verbleibt immer beim Gerät, damit die beiden nicht versehentlich getrennt werden können. Auch wenn sich das ROM auf der Karte befindet, werden sowohl die Peripheriehardware als auch die vom ROM bereitgestellte Treibersoftware zusammen ohne zusätzlichen Aufwand zur Installation der Software installiert. Ein zusätzlicher Vorteil von ROM auf einigen frühen PC-Systemen (insbesondere dem IBM PCjr) bestand darin, dass das ROM schneller war als das Hauptsystem-RAM. (Auf modernen Systemen ist das Gegenteil der Fall, und der BIOS-ROM-Code wird normalerweise in den RAM kopiert (“verdunkelt”), damit er schneller ausgeführt wird.)

Es gibt viele Methoden und Dienstprogramme zum Untersuchen des Inhalts verschiedener Motherboard-BIOS- und Erweiterungs-ROMs, wie z. B. Microsoft DEBUG oder Unix dd.

Bootvorgang[edit]

Wenn ein Erweiterungs-ROM die Art und Weise, wie das System bootet (z. B. von einem Netzwerkgerät oder einem SCSI-Adapter) kooperativ ändern möchte, kann es die BIOS-Boot-Spezifikation (BBS) API, um seine Fähigkeit dazu zu registrieren. Nachdem sich die Erweiterungs-ROMs unter Verwendung der BBS-APIs registriert haben, kann der Benutzer innerhalb der Benutzeroberfläche des BIOS unter den verfügbaren Boot-Optionen auswählen. Aus diesem Grund erlauben die meisten BBS-kompatiblen PC-BIOS-Implementierungen dem Benutzer nicht, die Benutzeroberfläche des BIOS zu öffnen, bis die Erweiterungs-ROMs die Ausführung und Registrierung bei der BBS-API abgeschlossen haben.[citation needed]

Wenn ein Erweiterungs-ROM außerdem die Art und Weise ändern möchte, wie das System einseitig bootet, kann es einfach INT 19h oder andere Interrupts, die normalerweise von Interrupt 19h aufgerufen werden, wie INT 13h, den BIOS-Festplattendienst, anhängen, um den BIOS-Startvorgang abzufangen. Dann kann es den BIOS-Boot-Prozess durch einen eigenen ersetzen, oder es kann lediglich die Boot-Sequenz ändern, indem es seine eigenen Boot-Aktionen einfügt, indem es verhindert, dass das BIOS bestimmte Geräte als bootfähig erkennt, oder beides. Vor der Veröffentlichung der BIOS Boot Specification war dies die einzige Möglichkeit für Erweiterungs-ROMs, die Bootfähigkeit für Geräte zu implementieren, die nicht vom nativen BIOS des Motherboards zum Booten unterstützt werden.[citation needed]

Initialisierung[edit]

Nachdem das Motherboard-BIOS seinen POST abgeschlossen hat, suchen die meisten BIOS-Versionen nach Options-ROM-Modulen, auch BIOS-Erweiterungs-ROMs genannt, und führen diese aus. Das Motherboard-BIOS sucht nach Erweiterungs-ROMs in einem Teil des “oberen Speicherbereichs” (dem Teil des x86-Realmodus-Adressraums ab Adresse 0xA0000) und führt jedes gefundene ROM der Reihe nach aus. Um speicherabgebildete ISA-Options-ROMs zu erkennen, scannt eine BIOS-Implementierung den Realmodus-Adressraum von 0x0C0000 zu 0x0F0000 auf 2 KiB-Grenzen, auf der Suche nach einem 2-Byte-ROM Unterschrift: 0x55 gefolgt von 0xAA. In einem gültigen Erweiterungs-ROM folgt dieser Signatur ein einzelnes Byte, das die Anzahl der 512-Byte-Blöcke angibt, die das Erweiterungs-ROM im Realspeicher belegt, und das nächste Byte ist der Eintrittspunkt des Options-ROM (auch als “Eintrittsoffset” bekannt). . Eine Prüfsumme der angegebenen Anzahl von 512-Byte-Blöcken wird berechnet, und wenn das ROM eine gültige Prüfsumme hat, überträgt das BIOS die Kontrolle an die Eingangsadresse, die in einem normalen BIOS-Erweiterungs-ROM der Anfang der Initialisierungsroutine der Erweiterung sein sollte.

An diesem Punkt übernimmt der Erweiterungs-ROM-Code, der typischerweise die von ihm gesteuerte Hardware testet und initialisiert und Interrupt-Vektoren zur Verwendung durch Post-Boot-Anwendungen registriert. Es kann BIOS-Dienste (einschließlich der von zuvor initialisierten Options-ROMs bereitgestellten) verwenden, um eine Benutzerkonfigurationsschnittstelle bereitzustellen, Diagnoseinformationen anzuzeigen oder alles andere zu tun, was es erfordert. Es ist möglich, dass ein Options-ROM nicht zum BIOS zurückkehrt, wodurch die Boot-Sequenz des BIOS vollständig verhindert wird.

Ein Options-ROM sollte normalerweise nach Abschluss des Initialisierungsvorgangs zum BIOS zurückkehren. Sobald (und falls) ein Options-ROM zurückkehrt, fährt das BIOS mit der Suche nach weiteren Options-ROMs fort und ruft jedes auf, wenn es gefunden wird, bis der gesamte Options-ROM-Bereich im Speicherbereich gescannt wurde.

Physische Platzierung[edit]

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

Option-ROMs befinden sich normalerweise auf Adapterkarten. Der Original-PC, und vielleicht auch der PC XT, verfügen jedoch über einen freien ROM-Sockel auf dem Motherboard (im Sinne von IBM das “System Board”), in den ein Options-ROM gesteckt 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-Kassettensteckplätze auf der Vorderseite hat. Kassetten in diesen Steckplätzen werden demselben Bereich des oberen Speicherbereichs zugeordnet, der für Options-ROMs verwendet wird, und die Kassetten können Options-ROM-Module enthalten, die das BIOS erkennen würde. Die Kassetten können auch andere Typen von ROM-Modulen enthalten, wie beispielsweise BASIC-Programme, die anders gehandhabt werden. Eine PCjr-Cartridge kann mehrere ROM-Module unterschiedlichen Typs enthalten, die möglicherweise zusammen in einem ROM-Chip gespeichert sind.

Betriebssystemdienste[edit]

Das BIOS-ROM ist an die Hardware des jeweiligen Herstellers angepasst, so dass auf standardisierte Weise für Programme, einschließlich Betriebssystemen, Low-Level-Dienste (wie das Lesen eines Tastendrucks oder das Schreiben eines Datensektors auf Diskette) bereitgestellt werden können. Ein IBM-PC kann beispielsweise entweder über einen Monochrom- oder einen Farbdisplayadapter verfügen (unter Verwendung unterschiedlicher Displayspeicheradressen und Hardware), aber ein einzelner Standard-BIOS-Systemaufruf kann aufgerufen werden, um ein Zeichen an einer bestimmten Position auf dem Bildschirm in . anzuzeigen Textmodus oder Grafikmodus.

Das BIOS bietet eine kleine Bibliothek grundlegender Eingabe-/Ausgabefunktionen zum Betrieb von Peripheriegeräten (wie Tastatur, rudimentäre Text- und Grafikanzeigefunktionen usw.). Bei Verwendung von MS-DOS könnte auf BIOS-Dienste durch ein Anwendungsprogramm (oder durch MS-DOS) zugegriffen werden, indem ein INT 13h-Interrupt-Befehl ausgeführt wird, um auf Plattenfunktionen zuzugreifen, oder indem einer von mehreren anderen dokumentierten BIOS-Interrupt-Aufrufen ausgeführt wird, um auf Video zuzugreifen Display, Tastatur, Kassette und andere Gerätefunktionen.

Betriebssysteme und Ausführungssoftware, die diese grundlegende Firmware-Funktionalität ersetzen sollen, bieten Ersatzsoftwareschnittstellen zur Anwendungssoftware. Anwendungen können diese Dienste auch selbst bereitstellen. Dies begann sogar in den 1980er Jahren unter MS-DOS, als Programmierer beobachteten, dass die Verwendung der BIOS-Videodienste für die Grafikanzeige sehr langsam war. Um die Geschwindigkeit der Bildschirmausgabe zu erhöhen, haben viele Programme das BIOS umgangen und die Videoanzeigehardware direkt programmiert. Andere Grafikprogrammierer, insbesondere aber nicht ausschließlich in der Demoszene, stellten fest, dass es technische Fähigkeiten der PC-Grafikkarten gibt, die vom IBM BIOS nicht unterstützt werden und nicht ohne Umgehung genutzt werden können. Da das AT-kompatible BIOS im Intel-Realmodus lief, erforderten Betriebssysteme, die auf 286- und späteren Prozessoren im geschützten Modus ausgeführt wurden, Hardwaregerätetreiber, die mit dem Betrieb im geschützten Modus kompatibel sind, um BIOS-Dienste zu ersetzen.

In modernen PCs mit modernen Betriebssystemen (wie Windows und Linux) werden die BIOS-Interrupt-Aufrufe nur beim Booten und beim erstmaligen Laden von Betriebssystemen verwendet. Bevor der erste grafische Bildschirm des Betriebssystems angezeigt wird, werden Eingabe und Ausgabe normalerweise über das BIOS abgewickelt. Ein Bootmenü wie das Textmenü von Windows, das es Benutzern ermöglicht, ein zu bootendes Betriebssystem auszuwählen, in den abgesicherten Modus zu booten oder die letzte als funktionierend bekannte Konfiguration zu verwenden, wird über das BIOS angezeigt und empfängt Tastatureingaben über das BIOS.[5]

Viele moderne PCs können immer noch Legacy-Betriebssysteme wie MS-DOS oder DR-DOS starten und ausführen, die für ihre Konsolen- und Festplatten-I/O stark vom BIOS abhängig sind, vorausgesetzt, das System verfügt über ein BIOS oder eine CSM-fähige UEFI-Firmware.

Prozessor-Mikrocode-Updates[edit]

Intel-Prozessoren haben seit der P6-Mikroarchitektur umprogrammierbaren Mikrocode.[17][18]AMD-Prozessoren haben seit der K7-Mikroarchitektur umprogrammierbaren Mikrocode. Das BIOS enthält Patches für den Prozessor-Mikrocode, die Fehler im anfänglichen Prozessor-Mikrocode beheben; Mikrocode wird in den SRAM des Prozessors geladen, so dass eine Neuprogrammierung nicht dauerhaft ist, so dass das Laden von Mikrocode-Aktualisierungen jedes Mal durchgeführt wird, wenn das System eingeschaltet wird. Ohne umprogrammierbaren Mikrocode wäre ein teurer Prozessortausch erforderlich;[19] So wurde beispielsweise der Pentium-FDIV-Bug für Intel zu einem teuren Fiasko, da ein Produktrückruf erforderlich war, da der defekte Mikrocode des ursprünglichen Pentium-Prozessors nicht umprogrammiert werden konnte. Betriebssysteme können auch den Mikrocode des Hauptprozessors aktualisieren.[20][21]

Identifizierung[edit]

Einige BIOS enthalten eine Software-Lizenzierungsbeschreibungstabelle (SLIC), eine digitale Signatur, die vom Originalgerätehersteller (OEM), beispielsweise Dell, im BIOS platziert wird. Der SLIC wird in die ACPI-Datentabelle eingefügt und enthält keinen aktiven Code.[22][23]

Computerhersteller, die OEM-Versionen von Microsoft Windows und Microsoft-Anwendungssoftware vertreiben, können den SLIC verwenden, um die Lizenzierung für den OEM-Windows-Installationsdatenträger und den Systemwiederherstellungsdatenträger mit Windows-Software zu authentifizieren. Systeme mit SLIC können mit einem OEM-Produktschlüssel voraktiviert werden und sie verifizieren ein XML-formatiertes OEM-Zertifikat gegen die 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) und des digitalen Zertifikats für seinen SLIC sein, um die Aktivierung zu umgehen.[22] Dies kann erreicht werden, wenn der Benutzer eine Wiederherstellung mit einem vom OEM bereitgestellten vorgefertigten Image durchführt. Power-User 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 normalerweise den SLIC oder emulieren ihn, um die Windows-Aktivierung zu umgehen.[citation needed]

Übertaktung[edit]

Einige BIOS-Implementierungen ermöglichen Übertaktung, eine Aktion, bei der die CPU auf eine höhere Taktrate als die Herstellerbewertung eingestellt wird, um eine garantierte Leistungsfähigkeit zu gewährleisten. Übertakten kann jedoch bei unzureichend gekühlten Computern die Systemzuverlässigkeit ernsthaft beeinträchtigen und die Lebensdauer der Komponenten allgemein verkürzen. Übertakten kann bei unsachgemäßer Ausführung auch dazu führen, dass Komponenten so schnell überhitzen, dass sie sich mechanisch selbst zerstören.[24]

Moderne Nutzung[edit]

Einige ältere Betriebssysteme, zum Beispiel MS-DOS, verlassen sich auf das BIOS, um die meisten Eingabe-/Ausgabeaufgaben innerhalb des PCs auszuführen.[25]

Das direkte Aufrufen von BIOS-Diensten im Realmodus ist für Betriebssysteme im geschützten Modus (und im langen Modus) 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-, Linux- und BSD-Betriebssysteme bereit, wie Advanced Power Management (APM), Legacy Plug and Play (Legacy PnP), Desktop Management Interface (DMI), PCI BIOS,[26][27]VESA BIOS Extensions (VBE) und MultiProcessor Specification (MPS). Ab den 2000er Jahren bieten die meisten BIOSe ACPI-, SMBIOS- und VBE-Schnittstellen für moderne Betriebssysteme.[28][29][30][31] Moderne Betriebssysteme laden die e820-Speicherkarte beim Start.[32]

Nach dem Laden des Betriebssystems wird der Code des Systemverwaltungsmodus weiterhin im SMRAM ausgeführt. Seit 2010 befindet sich die BIOS-Technologie in einem Übergangsprozess in Richtung UEFI.[6]

Aufbau[edit]

Setup-Programm[edit]

Historisch gesehen hatte das BIOS im IBM PC und XT keine integrierte Benutzeroberfläche. Die BIOS-Versionen früherer PCs (XT-Klasse) waren nicht per Software konfigurierbar; Stattdessen stellen Benutzer die Optionen über DIP-Schalter auf dem Motherboard ein. Spätere Computer, einschließlich aller IBM-kompatiblen mit 80286-CPUs, hatten einen batteriegepufferten nichtflüchtigen BIOS-Speicher (CMOS-RAM-Chip), der BIOS-Einstellungen enthielt.[33] Diese Einstellungen wie Videoadaptertyp, Speichergröße und Festplattenparameter konnten nur konfiguriert werden, indem ein Konfigurationsprogramm von einer Festplatte ausgeführt wurde, die nicht in das ROM integriert ist. Eine spezielle “Referenzdiskette” wurde in einen IBM AT eingelegt, um Einstellungen wie die Speichergröße zu konfigurieren.

Frühe BIOS-Versionen hatten keine Kennwörter oder Optionen zur Auswahl von Boot-Geräten. Das BIOS war fest programmiert, um vom ersten Diskettenlaufwerk zu booten, oder, falls dies fehlgeschlagen ist, von der ersten Festplatte. Die Zugangskontrolle in frühen Maschinen der AT-Klasse erfolgte durch einen physischen Schlüsselschalter (der nicht schwer zu umgehen war, wenn das Computergehäuse geöffnet werden konnte). Jeder, der den Computer einschalten konnte, konnte ihn booten.[citation needed]

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

Award BIOS-Setup-Utility auf einem Standard-PC

Ein modernes BIOS-Setup-Dienstprogramm verfügt über eine Textbenutzeroberfläche (TUI) oder eine grafische Benutzeroberfläche (GUI), auf die durch Drücken einer bestimmten Taste auf der Tastatur beim Starten des PCs zugegriffen wird. Normalerweise wird die Taste während des frühen Starts für kurze Zeit angekündigt, zum Beispiel “Drücken Sie DEL, um das Setup zu öffnen”. Der tatsächliche Schlüssel hängt von der spezifischen Hardware ab. Zu den Funktionen des BIOS-Setup-Dienstprogramms gehören normalerweise:

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

Hardwareüberwachung[edit]

Ein moderner BIOS-Setup-Bildschirm bietet oft ein PC Gesundheitsstatus oder ein Hardwareüberwachung tab, der direkt mit einem Hardware-Monitor-Chip des Mainboards verbunden ist.[34] Dies ermöglicht die Überwachung der CPU- und Gehäusetemperatur, der vom Netzteil bereitgestellten Spannung sowie die Überwachung und Steuerung der Drehzahl der an das Motherboard angeschlossenen Lüfter.

Sobald das System gebootet ist, werden die Hardwareüberwachung und die Computerlüftersteuerung normalerweise direkt vom Hardwaremonitor-Chip selbst durchgeführt, der ein separater Chip sein kann, der über I²C oder SMBus angeschlossen ist oder als Teil einer Super-I/O-Lösung mit Schnittstelle geliefert wird durch Low Pin Count (LPC).[35] Einige Betriebssysteme, wie NetBSD mit envsys und OpenBSD mit sysctl hw.sensors, verfügen über eine integrierte Schnittstelle zu Hardwaremonitoren.

Unter bestimmten Umständen stellt das BIOS jedoch auch die zugrunde liegenden Informationen über die Hardwareüberwachung über ACPI bereit. In diesem Fall kann das Betriebssystem ACPI verwenden, um die Hardwareüberwachung durchzuführen.[36][37]

Umprogrammierung[edit]

BIOS-Ersatzkit für einen Dell 310 aus den späten 1980er Jahren. Im Lieferumfang enthalten sind zwei Chips, ein Kunststoffhalter für die Chips und ein Chip-Puller.

In modernen PCs ist das BIOS in einem wiederbeschreibbaren EEPROM oder NOR-Flash-Speicher gespeichert, sodass der Inhalt ausgetauscht und geändert werden kann. Dieses Umschreiben des Inhalts wird manchmal als blinkend. Dies kann durch ein spezielles Programm erfolgen, das normalerweise vom Systemhersteller bereitgestellt wird, oder beim POST mit einem BIOS-Image auf einer Festplatte oder einem USB-Flash-Laufwerk. Eine Datei, die solche Inhalte enthält, wird manchmal als “ein BIOS-Image” bezeichnet. Ein BIOS kann neu geflasht werden, um auf eine neuere Version zu aktualisieren, um Fehler zu beheben oder eine verbesserte Leistung bereitzustellen oder um neuere Hardware zu unterstützen.

Hardware[edit]

Das ursprüngliche IBM PC-BIOS (und Kassetten-BASIC) wurde auf maskenprogrammierten Read-Only-Memory-Chips (ROM) in Sockeln auf dem Motherboard gespeichert. ROMs könnten von Benutzern ersetzt, aber nicht verändert werden. Um Aktualisierungen zu ermöglichen, verwendeten viele kompatible Computer umprogrammierbare BIOS-Speichergeräte wie EPROM, EEPROM und spätere Flash-Speichergeräte (normalerweise NOR-Flash-Geräte). Laut Robert Braver, dem Präsidenten des BIOS-Herstellers Micro Firmware, Flash-BIOS Chips wurden um 1995 gebräuchlich, weil die elektrisch löschbaren PROM-(EEPROM)-Chips billiger und einfacher zu programmieren sind als standardmäßige ultraviolett-löschbare PROM-(EPROM)-Chips. Flash-Chips werden im Schaltkreis programmiert (und neu programmiert), während EPROM-Chips zur Neuprogrammierung von der Hauptplatine entfernt werden müssen.[38] BIOS-Versionen werden aktualisiert, um neuere Hardwareversionen zu nutzen und Fehler in früheren BIOS-Revisionen zu korrigieren.[39]

Beginnend mit dem IBM AT unterstützten PCs eine über das BIOS einstellbare Hardware-Uhr. Es hatte ein Jahrhundert-Bit, das es ermöglichte, das Jahrhundert manuell zu ändern, als das Jahr 2000 passierte. Die meisten BIOS-Revisionen, die 1995 erstellt wurden, und fast alle BIOS-Revisionen von 1997 unterstützten das Jahr 2000, indem das Jahrhundertbit automatisch gesetzt wurde, wenn die Uhr am 31. Dezember 1999 nach Mitternacht lief.[40]

Die ersten Flash-Chips wurden an den ISA-Bus angeschlossen. Ab 1998 wechselte der BIOS-Flash auf den LPC-Bus, einen funktionalen Ersatz für ISA, nach einer neuen Standardimplementierung, die als “Firmware Hub” (FWH) bekannt ist. Im Jahr 2006 wurde der BIOS-Flash-Speicher auf den SPI-Bus umgestellt.[41]

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

Ein anderer Typ von Firmware-Chip wurde auf dem IBM PC AT und frühen kompatiblen Geräten gefunden. Im AT wurde die Tastaturschnittstelle von einem Mikrocontroller mit eigenem programmierbaren Speicher gesteuert. Beim IBM AT war das ein Gerät mit 40-Pin-Sockel, während einige Hersteller eine EPROM-Version dieses Chips verwendeten, die einem EPROM ähnelte. Diesem Controller wurde auch die A20-Gate-Funktion zugewiesen, um Speicher oberhalb des Ein-Megabyte-Bereichs zu verwalten; gelegentlich war ein Upgrade dieses “Tastatur-BIOS” erforderlich, um Software zu nutzen, die den oberen Speicher nutzen konnte.[citation needed]

Das BIOS kann Komponenten wie den Memory Reference Code (MRC) enthalten, der für die Speicherinitialisierung (z. B. SPD und Speicher-Timing-Initialisierung) verantwortlich ist.[43]:8[44]

Modernes BIOS enthält Intel Management Engine[45] oder AMD Platform Security Processor-Firmware.

Anbieter und Produkte[edit]

Vergleich verschiedener BIOS-Implementierungen
Unternehmen AuszeichnungBIOS AMIBIOS Insyde SeaBIOS
Lizenz Proprietär Proprietär Proprietär LGPL v3
Gepflegt / weiterentwickelt Ja Ja Ja 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
Startmenü Ja Ja Ja Ja
Kompression Ja (LHA[46]) 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 Versammlung Versammlung Versammlung C
LBA Ja (48) Ja (48) Ja Ja (48)
Multiprozessor-Spezifikation Ja Ja Ja Ja
Options-ROM Ja Ja Ja Ja
Passwort Ja Ja Ja Nein
PMM ? Ja ? Ja
Einrichtungsbildschirm Ja Ja Ja Nein
SMBIOS Ja Ja Ja Ja
Begrüßungsbildschirm Ja (EPA)[47] Ja (PCX) Ja Ja (BMP, JPG)
TPM Unbekannt Unbekannt Unbekannt Etwas
USB-Booten Ja Ja Ja Ja
USB-Hub ? ? ? Ja
USB-Tastatur Ja Ja Ja Ja
USB-Maus Ja Ja Ja Ja

IBM veröffentlichte die gesamten BIOS-Listen für seinen ursprünglichen PC, PC XT, PC AT und andere zeitgenössische PC-Modelle in einem Anhang des Technisches Referenzhandbuch für IBM PC für jeden Maschinentyp. Die Veröffentlichung der BIOS-Listen bewirkt, dass jeder genau sehen kann, was ein endgültiges BIOS tut und wie es funktioniert.

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 das Portable getan hatte, und trug so zum Wachstum der PC- kompatibel mit Industrie und Vertrieb von Nicht-IBM-Versionen von DOS.[48] Und das erste American Megatrends (AMI) BIOS wurde 1986 veröffentlicht.

Neue Standards, die dem BIOS aufgepfropft werden, sind normalerweise ohne vollständige öffentliche Dokumentation oder BIOS-Auflistungen. Infolgedessen ist es nicht so einfach, die intimen Details über die vielen Nicht-IBM-Ergänzungen des BIOS zu erfahren wie über die BIOS-Kerndienste.

Die meisten Anbieter von PC-Motherboards lizenzieren einen BIOS-“Kern” und ein Toolkit von einem kommerziellen Drittanbieter, 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 BIOSe normalerweise direkt vom Motherboard-Hersteller bezogen. Zu den wichtigsten BIOS-Anbietern gehören American Megatrends (AMI), Insyde Software, Phoenix Technologies und Byosoft. Zu den früheren Anbietern gehören Award Software und Microid Research, die 1998 von Phoenix Technologies übernommen wurden; Phoenix hat den Markennamen Award später auslaufen lassen. General Software, ebenfalls 2007 von Phoenix übernommen, verkaufte BIOS für Embedded-Systeme auf Basis von Intel-Prozessoren.

Die Open-Source-Community verstärkte ihre Bemühungen, einen Ersatz für proprietäre BIOSe und ihre zukünftigen Versionen durch ein Open-Source-Gegenstück durch die Projekte libreboot, coreboot und OpenBIOS/Open Firmware zu entwickeln. AMD hat Produktspezifikationen für einige Chipsätze bereitgestellt und Google sponsert das Projekt. Mainboard-Hersteller Tyan bietet mit seiner Opteron-Mainboard-Linie neben dem Standard-BIOS auch Coreboot an.

Sicherheit[edit]

Ein amerikanisches Megatrends-BIOS zeigt einen “Intel CPU uCode Loading Error” nach einem fehlgeschlagenen Versuch, Microcode-Patches in die CPU hochzuladen

EEPROM- und Flash-Speicherchips sind vorteilhaft, da 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 beheben. Dieser Vorteil birgt jedoch das Risiko, dass ein unsachgemäß ausgeführtes oder abgebrochenes BIOS-Update den Computer oder das Gerät unbrauchbar macht. Um diese Situationen zu vermeiden, verwenden neuere BIOSe einen “Bootblock”; ein Teil des BIOS, der zuerst ausgeführt wird und separat aktualisiert werden muss. Dieser Code überprüft, ob der Rest des BIOS intakt ist (unter Verwendung von Hash-Prüfsummen oder anderen Methoden), bevor die Kontrolle an ihn übertragen wird. Wenn der Bootblock eine Beschädigung des Haupt-BIOS erkennt, wird der Benutzer normalerweise gewarnt, dass ein Wiederherstellungsprozess durch Booten von Wechselmedien (Diskette, CD oder USB-Flash-Laufwerk) eingeleitet werden muss, damit der Benutzer erneut versuchen kann, das BIOS zu flashen. Einige Motherboards haben eine Sicherung BIOS (manchmal auch als DualBIOS-Boards bezeichnet) zur Wiederherstellung nach BIOS-Korruptionen.

Es gibt mindestens fünf bekannte BIOS-Angriffsviren, von denen zwei zu Demonstrationszwecken dienten. Der erste in freier Wildbahn gefundene war Mebromi, die auf chinesische Nutzer ausgerichtet ist.

Der erste BIOS-Virus war BIOS Meningitis, der, anstatt BIOS-Chips zu löschen, sie infizierte. BIOS Meningitis ist im Vergleich zu einem Virus wie CIH relativ harmlos.

Der zweite BIOS-Virus war CIH, auch bekannt als “Chernobyl-Virus”, der Flash-ROM-BIOS-Inhalte auf kompatiblen Chipsätzen löschen konnte. CIH erschien Mitte 1998 und wurde im April 1999 aktiv. Oft konnten infizierte Computer nicht mehr booten, und die Leute mussten den Flash-ROM-IC vom Motherboard entfernen und neu programmieren. CIH zielte auf den damals weit verbreiteten Intel i430TX Mainboard-Chipsatz und machte sich den Umstand zunutze, dass die damals ebenfalls weit verbreiteten Windows 9x-Betriebssysteme einen direkten Hardwarezugriff auf alle Programme ermöglichten.

Moderne Systeme sind nicht anfällig für CIH, da eine Vielzahl von Chipsätzen verwendet wird, die mit dem Intel i430TX-Chipsatz und auch anderen Flash-ROM-IC-Typen nicht kompatibel sind. Es gibt auch zusätzlichen Schutz vor versehentlichem BIOS-Neuschreiben in Form von Bootblöcken, die vor versehentlichem Überschreiben geschützt sind, oder mit Dual- und Quad-BIOS ausgestatteten Systemen, 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 Programme im Benutzermodus keinen direkten Hardwarezugriff.[citation needed]

Infolgedessen ist CIH seit 2008 im Wesentlichen harmlos geworden und verursacht im schlimmsten Fall Ärger, indem es ausführbare Dateien infiziert und Antivirensoftware auslöst. Andere BIOS-Viren bleiben jedoch möglich;[49] Da die meisten Windows-Heimbenutzer ohne die UAC von Windows Vista/7 alle Anwendungen mit Administratorrechten ausführen, könnte ein moderner CIH-ähnlicher Virus im Prinzip immer noch Zugriff auf Hardware erhalten, ohne zuvor einen Exploit zu verwenden.[citation needed] Das Betriebssystem OpenBSD verhindert diesen Zugriff allen Benutzern und der grsecurity-Patch für den Linux-Kernel verhindert standardmäßig auch diesen direkten Hardwarezugriff, mit dem Unterschied, dass ein Angreifer einen viel schwierigeren Exploit auf Kernel-Ebene oder einen Neustart des Rechners erfordert.[citation needed]

Der zweite BIOS-Virus war eine Technik, die von John Heasman, dem leitenden Sicherheitsberater der in Großbritannien ansässigen Next-Generation Security Software, vorgestellt wurde. Im Jahr 2006 zeigte er auf der Black Hat Security Conference, wie man Berechtigungen erhöht und physischen Speicher ausliest, indem er bösartige Verfahren verwendet, die normale ACPI-Funktionen, die im Flash-Speicher gespeichert sind, ersetzten.[50][citation needed]

Der dritte BIOS-Virus war eine Technik namens “Persistent BIOS-Infektion”. Es erschien 2009 auf der CanSecWest-Sicherheitskonferenz in Vancouver und auf der SyScan-Sicherheitskonferenz in Singapur. Forscher Anibal Sacco[51] und Alfredo Ortega von Core Security Technologies demonstrierten, wie man bösartigen Code in die Dekompressionsroutinen im BIOS einfügt und so beim Start fast die volle Kontrolle über den PC hat, noch bevor das Betriebssystem gebootet wird. Der Proof-of-Concept nutzt keinen Fehler in der BIOS-Implementierung aus, sondern beinhaltet nur die normalen BIOS-Flashing-Prozeduren. Daher ist ein physischer Zugriff auf die Maschine erforderlich, oder der Benutzer muss als Root angemeldet sein. Trotz dieser Anforderungen unterstrich Ortega die tiefgreifenden Auswirkungen seiner und Saccos Entdeckung: “Wir können einen Treiber patchen, um ein voll funktionsfähiges Rootkit zu löschen. Wir haben sogar einen kleinen Code, der Antivirus entfernen oder deaktivieren kann.”[52]

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

In einem Interview im Dezember 2013 mit 60 Minuten, Deborah Plunkett, Information Assurance Director der US-amerikanischen National Security Agency, behauptete, die NSA habe einen möglichen BIOS-Angriff eines ausländischen Nationalstaats aufgedeckt und vereitelt, der auf das US-Finanzsystem abzielt.[56] Das Programm zitierte anonyme Quellen, die behaupteten, es handele sich um eine chinesische Verschwörung.[56] Jedoch Folgeartikel in Der Wächter,[57]Der Atlantik,[58]Verdrahtet[59] und Das Register[60] widerlegte die Behauptungen der NSA.

Auf neueren Intel-Plattformen ist die Intel Boot Guard (IBG)-Technologie aktiviert. Diese Technologie überprüft die digitale BIOS-Signatur beim Start und der öffentliche IBG-Schlüssel wird mit dem Motherboard-PCH verschmolzen. Endbenutzer können diese Funktion nicht deaktivieren.

Alternativen und Nachfolger[edit]

Ab 2011, wird das alte PC-BIOS in vielen neuen Maschinen durch das komplexere Unified Extensible Firmware Interface (UEFI) ersetzt. UEFI ist eine Spezifikation, die die Laufzeitschnittstelle des Legacy-BIOS ersetzt. Ursprünglich für die Intel Itanium-Architektur geschrieben, ist UEFI jetzt für x86- und x86-64-Plattformen verfügbar; Die Spezifikationsentwicklung wird vom Unified EFI Forum, einer Special Interest Group der Branche, vorangetrieben. EFI-Booten wurde nur in Microsoft Windows-Versionen unterstützt, die GPT unterstützen,[61] der Linux-Kernel 2.6.1 und höher und macOS auf Intel-basierten Macs.[62] Ab 2014, wird neue PC-Hardware überwiegend mit UEFI-Firmware ausgeliefert. Die Architektur des Rootkit-Schutzes kann auch verhindern, dass das System die eigenen Softwareänderungen des Benutzers ausführt, was UEFI als Legacy-BIOS-Ersatz in der offenen Hardware-Community umstritten macht.

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; es ist zusammen mit dem x86-basierten OLPC XO-1 in den SPARC-Computern von Sun, der RS/6000-Reihe von IBM und anderen PowerPC-Systemen wie den CHRP-Motherboards enthalten.

Seit mindestens 2015 hat Apple die Legacy-BIOS-Unterstützung von MacBook Pro-Computern entfernt. Daher unterstützt das BIOS-Dienstprogramm die Legacy-Option nicht mehr und druckt “Legacy-Modus wird auf diesem System nicht unterstützt”. Im Jahr 2017 kündigte Intel an, die Legacy-BIOS-Unterstützung bis 2020 zu entfernen. Seit 2019 unterstützen neue OEM-PCs der Intel-Plattform die Legacy-Option nicht mehr.

Siehe auch[edit]

  1. ^ Die Signatur bei Offset +0x1FE in Bootsektoren ist 0x55 0xAA, das ist 0x55 bei Offset +0x1FE und 0xAA bei Offset +0x1FF. Da im Kontext von IBM PC-kompatiblen Maschinen von Little-Endian-Darstellung ausgegangen werden muss, kann diese als 16-Bit-Wort geschrieben werden 0xAA55 in Programmen für x86-Prozessoren (beachten Sie die vertauschte Reihenfolge), wobei es geschrieben werden müsste als 0x55AA in Programmen für andere CPU-Architekturen unter Verwendung einer Big-Endian-Darstellung. Da dies in Büchern und sogar in Original-Microsoft-Referenzdokumenten mehrfach verwechselt wurde, verwendet dieser Artikel die offsetbasierte byteweise On-Disk-Darstellung, um mögliche Fehlinterpretationen zu vermeiden.

Verweise[edit]

  1. ^ “Ref – System-BIOS”. PCGuide. Archiviert von das Original am 2014-12-21. Abgerufen 2014-12-06.
  2. ^ ein b c Kildall, Gary Arlen (Juni 1975), CP/M 1.1 oder 1.2 BIOS und BDOS für Lawrence Livermore Laboratories
  3. ^ ein b c Kildall, Gary Arlen (Januar 1980). “Die Geschichte von CP/M – Die Entwicklung einer Branche: Die Sicht einer Person” (Bd. 5, Nr. 1, Nr. 41 Hrsg.). Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia. S. 6–7. Archiviert vom Original vom 24.11.2016. Abgerufen 2013-06-03.
  4. ^ ein b “Phoenix Technologies produziert das erste kommerziell erhältliche IBM PC kompatible ROM Bios: History of Information”. historyofinformation.com. Abgerufen 2020-09-19.
  5. ^ ein b “Booten · Linux Inside”. 0xax.gitbooks.io. Abgerufen 2020-11-10.
  6. ^ ein b Bradley, Tony. “RIP-BIOS: Ein UEFI-Primer”. PC Welt. Archiviert vom Original am 27.01.2014. Abgerufen 2014-01-27.
  7. ^ Swaine, Michael (1997-04-01). “Gary Kildall und kollegiales Unternehmertum”. Dr. Dobbs Tagebuch. Archiviert vom Original vom 24.01.2007. Abgerufen 2006-11-20.
  8. ^ ein b “IEEE-Meilenstein in Elektrotechnik und Informatik – CP/M – Mikrocomputer-Betriebssystem, 1974” (PDF). Museum für Computergeschichte. 2014-04-25. Archiviert (PDF) aus dem Original vom 03.04.2019. Abgerufen 2019-04-03.
  9. ^ Shustek, Len (2016-08-02). „In seinen eigenen Worten: Gary Kildall“. Bemerkenswerte Leute. Museum für Computergeschichte. Archiviert vom Original vom 2016-12-17.
  10. ^ Killian, A. Joseph “Joe” (2001). “Gary Kildalls CP/M: Einige frühe CP/M-Geschichte – 1976-1977”. Thomas “Todd” Fischer, IMSAI. Archiviert von das Original am 2012-12-29. Abgerufen 2013-06-03.
  11. ^ Fraley, Bob; Spicer, Dag (2007-01-26). “Mündliche Geschichte von Joseph Killian, Interviewt von: Bob Fraley, Herausgegeben von: Dag Spicer, Aufgenommen: 26. Januar 2007, Mountain View, Kalifornien, CHM Referenznummer: X3879.2007” (PDF). Museum für Computergeschichte. Archiviert von das Original (PDF) am 2014-07-14. Abgerufen 2013-06-03.
  12. ^ “HP BIOS-Konfigurationsdienstprogramm”. Hewlett Packard. 2013. Archiviert vom Original am 12.01.2015. Abgerufen 2015-01-12.
  13. ^ Sehen Softwareentwicklerhandbuch für Intel 64- und IA-32-Architekturen Archiviert 26.01.2012 bei der Wayback Machine, Band 3, Abschnitt 9.1.2
  14. ^ Seite 5-27 Technische Referenz der IBM Personal Computer Hardware Reference Library, 1984, Publikationsnummer 6361459
  15. ^ “IBM 5162 PC XT286 TechRef 68X2537 Technisches Referenzhandbuch” (PDF). August 1986. p. 35 (System-BIOS A-5). Archiviert (PDF) aus dem Original vom 2014-12-11. Abgerufen 2014-12-11.
  16. ^ Wie StuffWorks: Was das BIOS tut Archiviert 07.02.2008 an der Wayback-Maschine.
  17. ^ Müller, Scott (2001-06-08). Prozessor-Update-Funktion | Mikroprozessortypen und Spezifikationen. InformIT. Archiviert vom Original vom 16.04.2014. Abgerufen 2014-04-15.
  18. ^ “Linux*-Prozessor-Mikrocode-Datendatei”. Download-Center. Downloadcenter.intel.com. 2009-09-23. Archiviert vom Original vom 16.04.2014. Abgerufen 2014-04-15.
  19. ^ Scott Müller, Aktualisieren und Reparieren von PCs 15. Ausgabe, Que Publishing, 2003 ISBN 0-7897-2974-1, Seiten 109-110
  20. ^ “KB4100347: Intel Microcode-Updates”. support.microsoft.com. Abgerufen 2020-09-20.
  21. ^ “Mikrocode – Debian-Wiki”. wiki.debian.org. Abgerufen 2020-09-19.
  22. ^ ein b “Wie SLP und SLIC funktionieren”. guytechie.com. 2010-02-25. Archiviert vom Original am 03.02.2015. Abgerufen 2015-02-03.
  23. ^ “Erstellen und fügen Sie ein OEM ACPI SLIC-Tabellenmodul zu einem congatec BIOS hinzu” (PDF). congatec.com. 2011-06-16. Archiviert (PDF) vom Original am 02.08.2014. Abgerufen 2015-02-03.
  24. ^ Whitson Gordon. “Einführung für Anfänger in das Übertakten Ihres Intel-Prozessors”. Lifehacker. Gawker-Medien. Archiviert aus dem Original vom 2014-12-07. Abgerufen 2014-12-06.
  25. ^ Artikel zu Smart Computing – Was ist das BIOS? Archiviert 10.03.2012 auf der Wayback Machine – Computing Basics Juli 1994 • Vol.5 Issue 7
  26. ^ PCI-BIOS-Spezifikation, PCI-SIG
  27. ^ PCI-Firmware-Spezifikation, PCI-SIG
  28. ^ “Was ist ACPI (Advanced Configuration and Power Interface)? – Definition von WhatIs.com”. SucheWindowsServer. Abgerufen 2020-09-18.
  29. ^ “Ändern der Hardwareabstraktionsschicht in Windows 2000 / XP – Smallvoid.com”. Abgerufen 2020-09-18.
  30. ^ “Was ist ACPI?”. www.spo-comm.de. Abgerufen 2020-09-18.
  31. ^ lorihollasch. “Unterstützung für Headless-Systeme – Windows-Treiber”. docs.microsoft.com. Abgerufen 2020-12-05.
  32. ^ “Speicherkarte (x86) – OSDev Wiki”. wiki.osdev.org. Abgerufen 2020-12-11.
  33. ^ Torres, Gabriel (2004-11-24). “Einführung und Lithiumbatterie”. Ersetzen der Motherboard-Batterie. hardwaresecrets.com. Archiviert von das Original am 2013-12-24. Abgerufen 2013-06-20.
  34. ^ Constantine A. Murenin (2010-05-21). “11.1. Schnittstelle vom BIOS”. OpenBSD-Hardwaresensoren – Umgebungsüberwachung und Lüftersteuerung (MMath-Arbeit). Universität Waterloo: UWSpace. hdl:10012/5234. Dokument-ID: ab71498b6b1a60ff817b29d56997a418.
  35. ^ Constantine A. Murenin (2007-04-17). “2. Hardware-Überprüfung”. Generalisierte Schnittstelle mit Hardwaremonitoren von Mikroprozessorsystemen. Proceedings of 2007 IEEE International Conference on Networking, Sensing and Control, 15.–17. April 2007. London, Vereinigtes Königreich: IEEE. S. 901–906. mach:10.1109/ICNSC.2007.372901. ISBN 978-1-4244-1076-7. IEEE ICNSC 2007, S. 901–906.
  36. ^ “aibs – ASUSTeK AI Booster ACPI ATK0110 Spannungs-, Temperatur- und Lüftersensor”. OpenBSD, DragonFly BSD, NetBSD und FreeBSD. 2010.
  37. ^ “acpi_thermal(4)”. www.freebsd.org. Abgerufen 2021-02-24.
  38. ^ Dekodierung von RAM & ROM Archiviert 06.04.2012 bei der Wayback Machine.” Intelligente Computer. Juni 1997. Band 8, Ausgabe 6.
  39. ^ Aktualisieren Sie Ihr Flash-BIOS für Plug-and-Play Archiviert 06.04.2012 bei der Wayback Machine.” Intelligente Computer. März 1996. Band 7, Ausgabe 3.
  40. ^ Zeit, das BIOS zu überprüfen Archiviert 2011-07-16 bei der Wayback Machine.” Intelligente Computer. April 1999. Band 7, Ausgabe 4.
  41. ^ https://images.slideplayer.com/26/8671671/slides/slide_5.jpg
  42. ^ “Instant-On Linux Desktop von SplashTop | Geek.com”. Archiviert von das Original am 07.09.2008.
  43. ^ Gepostet von Alex Watson, möglicherweise Repost aus dem Originalinhalt auf custompc.com [unclear]. “Das Leben und die Zeiten des modernen Motherboards”. 2007-11-27 2007. Archiviert vom Original am 24.07.2012. Abgerufen 2013-02-02.
  44. ^ David Hilber Jr. (August 2009). “Überlegungen zum Entwerfen eines Embedded Intel Architecture Systems mit System Memory Down ®” (PDF). Intel. Archiviert (PDF) vom Original am 18.10.2012. Abgerufen 2013-02-02.
  45. ^ “ME – Flash-ROM”. www.flashrom.org. Abgerufen 2020-09-19.
  46. ^ Stiller, Andreas (2001). “Prozessor-Patches”. c’t (auf Deutsch). Heise (5): 240. Archiviert vom Original am 2015-11-22. Abgerufen 2015-11-21.
  47. ^ “BIOS-Logo vergeben”. 2015-06-15. Archiviert aus dem Original am 2015-12-21. Abgerufen 2015-12-06.
  48. ^ Phoenix wartet sehnsüchtig darauf, das IBM BIOS der nächsten Generation zu klonen. Archiviert 22.01.2014 bei der Wayback-Maschine, InfoWelt, 9. März 1987.
  49. ^ Neuer BIOS-Virus widersteht Festplattenlöschungen, 27. März 2009. Marcus Yam. Toms Hardware USA
  50. ^ “Black Hat 2006 Multimedia – Präsentations-, Audio- und Videoarchive”. www.blackhat.com. Abgerufen 2019-04-21.
  51. ^ Sacco, Anibal; Alfredo Ortéga (2009-03-23). “Persistente BIOS-Infektion”. Dinge ausnutzen. Archiviert vom Original vom 2009-08-04. Abgerufen 2010-02-06.
  52. ^ Fischer, Dennis. “Forscher enthüllen hartnäckige BIOS-Angriffsmethoden”. Bedrohungspost. Archiviert von das Original am 2010-01-30. Abgerufen 2010-02-06.
  53. ^ Giuliani, Marco (2011-09-13). “Mebromi: das erste BIOS-Rootkit in freier Wildbahn”. Blog. Archiviert aus dem Original am 23.09.2011. Abgerufen 2011-09-19.
  54. ^ “360发布”BMW病毒”技术分析报告”. Blog. Archiviert von das Original am 2011-09-25. Abgerufen 2011-09-19.
  55. ^ Yuan, Liang. “Trojaner.Mebromi”. Bedrohungsreaktion. Archiviert aus dem Original am 23.09.2011. Abgerufen 2011-09-19.
  56. ^ ein b “Wie hat 60 Minutes Kameras in eine Spionageagentur gebracht?”. CBS-Nachrichten. Archiviert vom Original vom 2014-04-22. Abgerufen 2014-04-15.
  57. ^ Spencer Ackerman in Washington (2013-12-16). “NSA geht 60 Minuten weiter: Die endgültigen Fakten hinter dem fehlerhaften Bericht von CBS”. theguardian.com. Archiviert vom Original am 25.01.2014. Abgerufen 2014-01-27.
  58. ^ Friedersdorf, Conor (2013-12-16). “Eine 60-minütige Frage: Warum sollte China die Weltwirtschaft zerstören wollen?”. Der Atlantik. Abgerufen 2019-03-26.
  59. ^ Poulsen, Kevin (2013-12-16). „60 Minutes Puff Piece behauptet, die NSA habe die USA vor Cyberterrorismus gerettet“. Verdrahtet. ISSN 1059-1028. Abgerufen 2019-03-26 – über www.wired.com.
  60. ^ tweet_btn(), Simon Sharwood 16. Dezember 2013 um 03:13 Uhr. „NSA behauptet ‚BIOS-Verschwörung zur Zerstörung von PCs‘. www.theregister.co.uk. Abgerufen 2019-03-26.
  61. ^ “Windows- und GPT-FAQ”. microsoft.com. Microsoft. Archiviert vom Original am 19.02.2011. Abgerufen 2014-12-06.
  62. ^ “Extensible Firmware Interface (EFI) und Unified EFI (UEFI)”. Intel. Archiviert vom Original am 2010-01-05. Abgerufen 2014-12-06.

Weiterlesen[edit]

Externe Links[edit]


after-content-x4