Was ist UEFI oder Legacy BIOS?

Mit der Einführung von Windows 11 sind viele mit dem Begriff UEFI konfrontiert worden.

Wer seinen „alten“ Rechner von Windows 10 auf Windows 11 aktualisieren will, kann daran scheitern, dass bei der Hardwareprüfung angezeigt wird, dass UEFI erwartet wird. UEFI steht für Unified Extensible Firmware Interface.

Bei vielen Fachleuten ist bereits bekannt, dass UEFI und die PI-Umgebung (Platform Initialization) das BIOS ersetzen sollen. Dennoch gibt es immer noch einige Firmware-Architekten, Ingenieure und Nutzer, die nicht wissen, was UEFI ist und warum es entstanden ist.

In diesem Beitrag werden die beiden Technologien untersuchen und beschrieben. Wenn man denkt, dass UEFI eine neue Technologie ist, dem sei gesagt, dass die Einführung von UEFI mit der UEFI-1.0-Spezifikation im Jahr 2005 bereits definiert und 2007 eingeführt wurde. Windows 10 war der BIOS Typ noch egal. Windows 11 verlangt UEFI. Apple hat schon seit Jahren EFI im Einsatz.

UEFI bedeutet mehrere Dinge. Es ist der Name der Gruppe für Industriestandards, des „UEFI- Forums“, das für die Verwaltung der UEFI-Spezifikationen verantwortlich ist. Außerdem gibt es innerhalb der UEFI-Organisation mehrere Gruppen. Zunächst verwaltet die UEFI Specification Working Group (USWG) die Entwicklung des wichtigsten Schnittstellendokuments. Die UEFI- Spezifikation 2.1 stellt derzeit die neueste Version dar. Dann gibt es die Platform Initialization Working Group (PIWG). Da die UEFI-Spezifikation die Schnittstelle zwischen dem Betriebssystem und den Options-ROMs darstellt, beschreiben die PIWG-Spezifikationen für die Plattforminitialisierung (PI) ein Mittel, mit dem eine Initialisierungsumgebung aufgebaut werden kann. Diese PI-Umgebung ist eine Möglichkeit, die wichtigsten UEFI-Schnittstellen bereitzustellen, und die PI-Infrastruktur kann auch andere Boot-Schnittstellen veröffentlichen, unter anderem die BIOS-Laufzeit.

Was passiert, wenn man den Rechner einschaltet.

Zwischen dem Einschalten eines Rechners und der Anmeldeaufforderung des Betriebssystems eines modernen Computers findet eine erstaunliche Menge an Aktivitäten statt. Auf Plattformen mit PC/AT-Architektur ist dies ein langer, mühsamer Prozess, da das BIOS kein Treibermodell oder einen Richtlinienmechanismus hat, um zu wissen, welche Hardware für ein bestimmtes Hardwaregerät initialisiert werden muss. Daher initialisiert das BIOS  beispielsweise jedes mögliche Speichergerät in Erwartung, dass es passen ist.

Die Komplexität der Pre-OS-Boot-Firmware stieg ebenfalls mit der Komplexität der Plattform. In den frühen Tagen des PCs war der Speicher der Industry Standard Architecture (ISA Bus) an denselben Bus angeschlossen wie die Geräte. Die E/A-Geräte waren einfach „da“, und der Benutzer konnte die Funktionalität nur durch Einfügen oder Entfernen von Jumpern ausschalten. Der Speicher funktionierte einfach und war mit dem Bus verbunden.

Mit der Zeit wurde der Speicher immer komplexer. Schnelles Page-Mode-DRAM und sein Speicher-Controller hatten einige mögliche Einstellungen. Die Boot-Firmware konnte einige Einstellungen ausprobieren, den Speicher überprüfen und sehen, welche funktionierte.

Moderne Speichercontroller mit Double-Data-Rate (DDR) Speicherinitialisierungsroutinen mit Tausenden von C-Code-Zeilen zu erstellen, machte irgendwann keinen Sinn mehr und war aufwendig.

Beim E/A-Bus ging der ehrwürdige ISA-Bus mit den festen ISA-E/A-Decodes über zu Plug- and-Play-ISA mit einer gewissen programmatischen Konfigurierbarkeit bis hin zum heutigen Peripheral Component Interconnect (PCI) [12], der eine vollständige Busaufzählung mit Brückengeräten usw. mit sich bringt. Diese Plattform-Hardware-Beschränkungen sind  harte, steinerne Mauern, die den UEFI-Einsatz begünstigen.

Das Gleiche gilt für die Initialisierung der Zentraleinheit (CPU). Der 286er im PC/AT brauchte nur wenig Initialisierung durch das ursprüngliche BIOS, und es gab nur einen im System. Andererseits kann eine moderne CPU mehrere physische Sockel haben, von denen jeder mehrere Kerne und möglicherweise mehrere Hardware-Threads hat. Jeder dieser Sockel kann über Dutzende von modellspezifischen Registern (MSR) verfügen, zusätzlich zu anderen Steuer- und Statusregistern (CSR), die synchron mit allen anderen CPUs initialisiert werden müssen.

Das ursprüngliche PC/AT-BIOS aus dem Jahr 1979 war nicht für die stark unterschiedlichen Hardware-Designs von heute ausgelegt – die ursprünglichen Entwickler hatten einfach keine langfristige Verwendung vorgesehen und daher nicht an langfristige Erweiterbarkeit gedacht. Im Gegensatz dazu ist bei modernen E/A-Bussen, CPUs und Speichercontrollern die Fähigkeit, einen modularen Treiber für jede Fähigkeit zu verteilen, wie es die UEFI Platform Initialization Architecture ermöglicht, von entscheidender Bedeutung.

Selbst heute kennen wir das Phänomen, dass auf einem X470 Motherboard mit AM4 Sockel nicht automatisch alle AMD Prozessoren der Serie 5000 erkannt werden. Erst ein Update des BIOS kann Abhilfe schaffen, wenn der Hersteller seine Hardware noch unterstützt.

Auch die Schnittstelle des Betriebssystems hat sich im Laufe der Zeit weiterentwickelt. Die ursprüngliche Schnittstelle zwischen dem BIOS und dem Betriebssystem bestand aus einer Reihe von 16-Bit-Schnittstellen, die über Software-Interrupts. Interrupt 13-hex, oder „Int13h“, war der Satz von Diensten zum Lesen oder Schreiben eines Blockgeräts. Ähnlich war Int16h für den Zugriff auf eine Eingabekonsole, z. B. eine Tastatur.

Ursprünglich hätte1 eine API wie die in der Abbildung gezeigte

  • AH = 02h
  • AL = Number of Sectors to Read
  • CH = Cylinder Number (low 8 bits, 0- based)
  • CL = Bits 7-6 Cylinder Numbers (2 high bits, 0-based); Bits 5-0 Beginning Sectors Numbers (1-based)
  • DH = Head Number (0-based)
  • DL = 80h Hard Drive C: (0-based) = 81h-87h are valid. 81h = D:; 82h = E: usw.
  • ES:BX = Buffer Segment Offset Adress

ausgereicht.

Diese ursprüngliche API war auf 8 GByte begrenzt. Im Laufe der Zeit, als die Festplatten größer wurden, musste die Int13h-API erweitert werden.

Genauso wie die Network Address Translation (NAT) halfen, den Mangel an IP-Adressen Version 4 zu decken, verfolgten diese Int13h- Erweiterungen die Größe von Festplatten im Laufe der Zeit. Aber auch IPv4 hat, trotz NAT, seine Grenzen erreicht. IPv6 löst den Standard Zug um Zug ab.

Andere Artefakte von BIOS und Boot, nämlich die Partitionstabelle im Master Boot Record, beschränken Partitionen auf Zwei-Terabyte-Platten. Dies ist eine Codierung auf der Festplatte, die nicht über BIOS-APIs entwickelt werden kann.

Ich kann mich sehr gut daran erinnern, dass man bei der Einrichtung eines Computers alle Daten vorab von der Festplatte lesen und dann manuell eingeben musste. Nur war die Maximalwerte beschränkt und größere Nachfolgefestplatten konnten nicht eingerichtet werden.

UEFI hebt den Mangel. Um beliebig große Partitionen bereitzustellen, definiert die UEFI-Spezifikation eine Guided Partition Table (GPT).

Die Geschichte von Bootstrap und PC Booten

Letztlich besteht der Hauptzweck eines BIOS und damit des Boot-Prozesses eines Rechners darin, eine Zielsoftware, in der Regel ein Betriebssystem, zu starten. Bei den ersten Systemen wurde das Booten durch die Eingabe von Boot-Befehlen über Kippschalter erreicht. Das Ziel solcher Anweisungen waren damals Lochstreifen/Lochkarten für das „Betriebssystem“. Diese ersten Anweisungen dienten dazu, die Maschine zu starten.

Im Laufe der Jahre haben sich die Ziele geändert:

Beim PC der späten 1970er und frühen 1980er Jahre war das Ziel ein ROM-basiertes Element, wie ein in das System eingebauter BASIC-Interpreter, zu etablieren. Ursprünglich wurde der Benutzer beim Starten des typischen PCs mit einer BASIC-Eingabeaufforderung konfrontiert, und die einzigen Programme, die geladen werden konnten, stammten von einem Kassettenband. Dies war die übliche Benutzerschnittstelle der ersten PCs. Mit der Zeit wurden auch Disketten, Festplatten (MBR), CDs, Netzwerke usw. zu möglichen Zielen.

Im Laufe der Jahre hat sich auch das BIOS weiterentwickelt:

Das ursprüngliche PC-BIOS war für wenige Geräte mit einer Produktionsdauer von mehr als zwei Jahren gedacht. Die damalige Planung war, dass ein Rechner lange lief. Die Veröffentlichung der Schaltpläne und vor allem des BIOS-Quellcodes für den PC/AT durch IBM führte zu zahlreichen Klonen und Nachahmern.

Um sich gegen Nachahmungen zu wehren, entwickelte IBM 1987 den PS/2. Diese Maschine hatte einen proprietären Bus, der als „Microchannel“ (MCA) bezeichnet wurde. Mit „ABIOS“ oder „Advanced BIOS“ versuchte IBM auch, vom ursprünglichen BIOS wegzukommen. ABIOS war ein geschütztes BIOS, das in 32-Bit lief, um mit der neu eingeführten Intel ®-CPU386 kompatibel zu sein.

Ein weiterer Versuch zur Weiterentwicklung von BIOS ist LinuxBIOS. Wie beim Linux- Betriebssystem beruht der Erfolg von LinuxBIOS jedoch eher auf dem Kooperationsmodell als auf der Technologie. LinuxBIOS bietet eine Möglichkeit, einen Teil der Plattforminitialisierung (z. B. etwas Ähnliches wie PI oder BIOS POST) über das Open-Source-Entwicklungsmodell zu implementieren. Aber LinuxBIOS bietet keine Innovationen, die über das heutige BIOS oder UEFI hinausgehen. Es emuliert das BIOS in einem Software-Emulator und in seinem nativen Betrieb. LinuxBIOS bietet keine Neuerungen für den PI-Teil. Die Hersteller müssen den gesamten Quellcode miteinander verknüpfen, und da es sich um eine statische Verknüpfung und nicht um eine Binärdatei handelt, gilt die Ausnahmeregelung der GPL für Binärdateien nicht. Das heißt, Hardwarehersteller müssen ihren gesamten Quellcode respektive ihre Design-Spezifikationen offenlegen, wenn sie ihren Code in LinuxBIOS einbinden.

Überdies besteht die Boot-Umgebung genauer gesagt die Übergabe an das Betriebssystem entweder aus der Emulation von PC/AT und 16-Bit-BIOS mit etwas wie BOCHS, zweitens der Nachbildung der UEFI-Schnittstellen mit GNUFI oder drittens der direkten Übergabe an den Linux-Kernel mit kexec. Das erste ist nur ein „BIOS“, wie wir es heute kennen, das zweite ist eine alternative PI-Implementierung, und das dritte ist eine einmalige, eingebettete OS- Einführungsstrategie, die von vielen Herstellern bereits unterstützt wird (d.h. eingebettetes Recovery OS in der Plattform-Firmware). Angesichts der GPL-Problematik im Zusammenhang mit dem geistigen Eigentum ist es unwahrscheinlich, dass Hardwarehersteller und OEMs LinuxBIOS in Zukunft übernehmen werden.

Man erkennt also sehr einfach, dass es schon mehrere Versuche gab, das BIOS, wie wir es kennen, zu ersetzen.

Schaffung und Weiterentwicklung von PC-Plattformstandards

Die PC-Industrie hat sich im Laufe der Zeit so entwickelt, dass sie verschiedene unterschiedliche Technologien umfasst, die unweigerlich miteinander interagieren müssen, während des normalen Initialisierungsprozesses der Plattform.

Bei der Systeminitialisierung sind viele verschiedene Komponenten beteiligt. Jede dieser Komponenten muss ihrerseits Informationen weitergeben oder irgendwie mit den anderen kommunizieren.

Diese Kommunikation wird zusätzlich erschwert, wenn man bedenkt, dass viele dieser Komponenten von verschiedenen Unternehmen hergestellt oder geliefert werden. Mit der Entwicklung der PC-Industrie ist der Bedarf an einer Standardmethode für die Interaktion dieser Komponenten untereinander deutlich geworden.

Es gibt unterschiedliche Auffassungen über die Definition einer „Norm“, aber es gibt zwei Hauptanwendungen dieses Konzepts. Die erste Verwendung ist die einer privaten Organisation (z. B. des Betriebssystemherstellers X), die einen Standardsatz von APIs für die Verwendung ihres Betriebssystems definiert. Dies wird oft durch ein Software Development Kit (SDK) repräsentiert, das von einem bestimmten Anbieter zur Verfügung gestellt wird, um Kunden die ordnungsgemäße Nutzung seines Produkts zu ermöglichen. Dieses Konzept erstreckt sich auch auf Add-in-Hardwaregeräte, z. B. wenn ein bestimmtes Hardwaregerät, das in eine PC- Plattform eingebaut werden kann, ein Datenbuch zur Verwendung dieser Hardware anbietet. Ein konkretes Beispiel hierfür könnte ein CPU-Handbuch sein, in dem die Punkte beschrieben werden, die ein Verbraucher dieser CPU verstehen muss, wie z. B. die verfügbaren Op-Codes, Pinbelegungen usw. Diese herstellerspezifischen Standards waren bis in die späten 1980er Jahre die Norm für die Komponenten der PC-Industrie.

Erst mit der Einführung des proprietären MCA-Busses im Jahr 1987 (der eine Weiterentwicklung des früheren ISA-Busses war) kam es zu einem starken Impuls für die Zusammenarbeit der Industrie. Diese Zusammenarbeit führte zur gemeinsamen Verwendung einer zweiten Art von „Standard“ in verschiedenen Bereichen der PC-Industrie. Bei diesen Standards handelt es sich um solche, die von mehreren interessierten Parteien in der Industrie mitentwickelt wurden. Zum Beispiel definierte 1988 eine Gruppe von Förderunternehmen eine Erweiterung des ursprünglichen ISA-Busses, EISA. Daraus entwickelte sich schließlich das, was gemeinhin als PCI-Bus bekannt ist, und Erweiterungen dazu sind im Gange.

Seit den späten 80er-Jahren hat sich diese Art der Zusammenarbeit in der PC-Branche immer weiter ausgebreitet. Die Standards entwickeln sich im Laufe der Zeit weiter und konzentrieren sich in der Regel auf bestimmte Fragen oder Themen, die ein Teil der Branche für wichtig hält, ohne dass dadurch ihre Fähigkeit, sich von anderen abzuheben, wesentlich beeinträchtigt wird.

Abbildung 1 beschreibt den Boot-Prozess von UEFI PI-Komponenten, einschließlich der Frage, wann die UEFI-Schnittstellen verfügbar ist.

Im Laufe der Zeit bildeten die inhärenten Annahmen der zugrundeliegenden Plattform eine Reihe von Designeinschränkungen, die die Flexibilität für Systementwickler, die Innovationen auf der Plattform vornehmen wollten, einschränkten. Diese Design-Zwänge machten es schwierig, das BIOS für viele verschiedene PC-Architekturen (z. B. XScale, Itanium, x64, x86 usw.) zu verwenden und zu übernehmen. Zum Beispiel:

  • Das BIOS ist 16-Bit-basiert, während sich die Prozessorarchitektur größtenteils zu 64-Bit entwickelt hat.
  • Das BIOS stellt eine harte Begrenzung für die Größe des Option-ROM-Ausführungsbereichs dar, was die Unterstützung bootfähiger Geräte auf Servern stark einschränkt, und zwar sowohl hinsichtlich der Größe des ausführbaren Abbilds als auch der Anzahl der zum Booten unterstützten Geräte.
  • Das BIOS hängt von der veralteten PC-AT-Interrupt-Steuerung und Timer-Hardware ab, was die Freiheit bei der Entwicklung von Serverhardware stark einschränkt. Im Vergleich dazu sind die Mainstream- Betriebssysteme dazu übergegangen, sich auf eine fortschrittliche Interrupt-Steuerung und hochpräzise Timer zu verlassen.
  • BIOS-Schnittstellenerweiterungen sind ad hoc, anfällig für Konflikte und Interoperabilitätsprobleme.

Schlussfolgerung

Das BIOS, wie wir es heute kennen, ist betagt und stößt ständig an seine Grenzen. Eine Ablöse ist nur die logische Schlussfolgerung. Die Welt um das BIOS hat sich stetig verändert. Es ist Zeit, dass man auch das BASIC INPUT OUTPUT SYSTEM (BIOS) erneuert. UEFI ist der aktuelle Standard. Was bei Apple schon seit Jahren im Einsatz ist, kommt nun auch für Windows.

 

BIOS und UEFI im Vergleich

BIOS UEFI
eingeführt 1975 2007
Architektur 16-bit 32-bit/64-bit
Kapazität
des Boot-Laufwerks
2,1 TB 9,4 ZB (9,4 Milliarden Terabytes)
Partitionierungschema MBR GPT
Programmsprache Assembly C
primäres Partitionslimit        4 kein Limit

 

QUELLEN:

https://www.intel.com/content/www/us/en/architecture-and-technology/unified-extensible-firmware-interface/efi-homepage-general-technology.html?wapkw=EFI

http://download.microsoft.com/download/a/f/d/afdfd50d-6eb9-425e-84e1- b4085a80e34e/SYS-T303_WH07.pptx

https://www.bochs.sourceforge.io  – Emulator (U)EFI

https://www.pdfbear.com/linuxbios – Linux BIOS

https://www.uefi.org – Definition und Beschreibung UEFI

 

Post by Digitales Erbe

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert