Bootloader - Bootloader

GNU GRUB, ein beliebter Open-Source-Bootloader
Windows-Bootloader

Ein Bootloader , auch Bootloader oder Bootmanager und Bootstraploader genannt , ist ein Computerprogramm , das für das Booten eines Computers verantwortlich ist.

Wenn ein Computer ausgeschaltet wird, bleibt seine Software – einschließlich Betriebssysteme, Anwendungscode und Daten‍ – im nichtflüchtigen Speicher gespeichert . Wenn der Computer eingeschaltet ist, verfügt er normalerweise nicht über ein Betriebssystem oder seinen Loader im Arbeitsspeicher (RAM). Der Computer führt zuerst ein relativ kleines Programm aus, das im Nur-Lese-Speicher (ROM und später EEPROM , NOR-Flash ) gespeichert ist, zusammen mit einigen benötigten Daten, um den RAM zu initialisieren (insbesondere auf x86-Systemen), um auf das nichtflüchtige Gerät (normalerweise Blockgerät , zB NAND-Flash) oder Geräte, von denen die Betriebssystemprogramme und Daten in den Arbeitsspeicher geladen werden können.

Einige frühere Computersysteme können beim Empfang eines Boot-Signals von einem menschlichen Bediener oder einem Peripheriegerät eine sehr kleine Anzahl fester Anweisungen an einer bestimmten Stelle in den Speicher laden, mindestens eine CPU initialisieren und dann die CPU auf die Anweisungen verweisen und ihre Ausführung beginnen. Diese Anweisungen starten typischerweise eine Eingabeoperation von einem Peripheriegerät (das durch den Bediener durch Schalter wählbar sein kann). Andere Systeme können Hardwarebefehle direkt an Peripheriegeräte oder E/A-Controller senden, die bewirken, dass eine extrem einfache Eingabeoperation (wie "Sektor Null des Systemgeräts in den Speicher beginnend bei Position 1000 einlesen") ausgeführt wird, wodurch effektiv eine kleine . geladen wird Anzahl von Bootloader-Anweisungen in den Speicher; ein Beendigungssignal vom E/A-Gerät kann dann verwendet werden, um die Ausführung der Befehle durch die CPU zu starten.

Kleinere Computer verwenden oft weniger flexible, aber mehr automatische Bootloader-Mechanismen, um sicherzustellen, dass der Computer schnell und mit einer vorgegebenen Softwarekonfiguration startet. In vielen Desktop - Computern, zum Beispiel, beginnt der Bootstrap - Prozess mit der CPU Ausführung von Software in ROM enthalten (zum Beispiel das BIOS von einem IBM PC oder einem IBM - PC - kompatiblen ) an einer vordefinierten Adresse (einige CPUs, einschließlich der Intel x86 - Reihe sind entwickelt, um diese Software nach dem Zurücksetzen ohne fremde Hilfe auszuführen). Diese Software enthält eine rudimentäre Funktionalität, um nach Geräten zu suchen, die am Booten teilnehmen können, und um ein kleines Programm aus einem speziellen Abschnitt (meistens dem Bootsektor ) des vielversprechendsten Geräts zu laden , normalerweise beginnend an einem festen Einstiegspunkt wie dem Start des Sektor.

Bootloader der ersten Stufe

Bootloader können besonderen Einschränkungen unterliegen, insbesondere in Bezug auf die Größe; Auf früheren IBM-PCs und kompatiblen Computern sollte ein Bootsektor beispielsweise in der Regel nur in 32 KB (später auf 64 KB gelockert) Systemspeicher arbeiten und nur Anweisungen verwenden, die von den ursprünglichen 8088 / 8086- Prozessoren unterstützt werden. Die erste Stufe von PC-Bootloadern (FSBL, First Stage Bootloader) auf Festplatten und Wechseldatenträgern muss in die ersten 446 Byte des Master Boot Record passen , um Platz für die standardmäßige 64-Byte- Partitionstabelle mit vier Partitionseinträge und die 2-Byte- Boot-Signatur , die das BIOS für einen richtigen Bootloader benötigt – oder noch weniger, wenn zusätzliche Funktionen wie mehr als vier Partitionseinträge (bis zu 16 mit jeweils 16 Byte), eine Festplattensignatur (6 Byte) , ein Festplatten-Zeitstempel (6 Byte), eine Advanced Active Partition (18 Byte) oder spezielle Multi-Bootloader müssen in manchen Umgebungen ebenfalls unterstützt werden. Bei Disketten- und Superfloppy- Volume-Boot-Records werden für den Extended BIOS Parameter Block auf FAT12- und FAT16- Volumes seit DOS 4.0 bis zu 59 Byte belegt , während der mit DOS 7.1 eingeführte FAT32- EBPB sogar 87 Byte benötigt, sodass nur 423 Byte für den Bootloader übrig bleiben wenn eine Sektorgröße von 512 Byte angenommen wird. Microsoft-Bootsektoren legten daher traditionell gewisse Einschränkungen für den Boot-Vorgang fest, zum Beispiel musste die Boot-Datei an einer festen Position im Root-Verzeichnis des Dateisystems liegen und als aufeinanderfolgende Sektoren gespeichert werden, Bedingungen wurden durch den SYSBefehl und geringfügig in späteren Versionen von DOS entspannt. Der Bootloader war dann in der Lage, die ersten drei Sektoren der Datei in den Speicher zu laden, der zufällig einen weiteren eingebetteten Bootloader enthielt, der den Rest der Datei in den Speicher laden konnte. Als Microsoft LBA- und FAT32-Unterstützung hinzufügte , wechselten sie aus Größengründen sogar zu einem Bootloader, der über zwei physische Sektoren reicht und 386-Anweisungen verwendet. Gleichzeitig gelang es anderen Anbietern, viel mehr Funktionalität in einen einzigen Bootsektor zu packen, ohne die ursprünglichen Beschränkungen auf nur minimalen verfügbaren Speicher (32 KB) und Prozessorunterstützung (8088/8086) zu lockern. DR-DOS-Bootsektoren sind beispielsweise in der Lage, die Bootdatei im Dateisystem FAT12, FAT16 und FAT32 zu finden und als Ganzes über CHS oder LBA in den Speicher zu laden , auch wenn die Datei nicht an einem festen Ort gespeichert ist und in aufeinanderfolgenden Sektoren.

BIOS und UEFI laden nicht nur das Betriebssystem von einem nichtflüchtigen Gerät, sondern initialisieren auch die Systemhardware für das Betriebssystem.

Beispiele für Bootloader der ersten Stufe sind BIOS , Coreboot , Libreboot und Das U-Boot .

Bootloader der zweiten Stufe

Bootloader der zweiten Stufe wie GNU GRUB , rEFInd , BOOTMGR , Syslinux , NTLDR oder iBoot sind selbst keine Betriebssysteme, können aber ein Betriebssystem richtig laden und die Ausführung darauf übertragen; das Betriebssystem initialisiert sich anschließend selbst und lädt möglicherweise zusätzliche Gerätetreiber . Der Bootloader der zweiten Stufe benötigt keine Treiber für seinen eigenen Betrieb, sondern kann stattdessen generische Speicherzugriffsmethoden verwenden, die von der Systemfirmware wie dem BIOS oder Open Firmware bereitgestellt werden , jedoch normalerweise mit eingeschränkter Hardwarefunktionalität und geringerer Leistung.

Viele Bootloader (wie GNU GRUB, rEFInd, BOOTMGR von Windows, Syslinux und NTLDR von Windows NT/2000/XP) können so konfiguriert werden, dass sie dem Benutzer mehrere Auswahlmöglichkeiten beim Booten bieten. Diese Auswahlmöglichkeiten können verschiedene Betriebssysteme (für Dual- oder Multi-Boot von verschiedenen Partitionen oder Laufwerken), verschiedene Versionen desselben Betriebssystems (falls eine neue Version unerwartete Probleme hat), verschiedene Ladeoptionen des Betriebssystems (z Rescue oder abgesicherter Modus ) und einige eigenständige Programme, die ohne Betriebssystem funktionieren können, wie Speichertester (zB memtest86+ ), eine Basis-Shell (wie in GNU GRUB) oder sogar Spiele (siehe Liste der PC-Booter-Spiele ). Einige Bootloader können auch andere Bootloader laden; GRUB lädt beispielsweise BOOTMGR, anstatt Windows direkt zu laden. Normalerweise wird eine Standardauswahl mit einer Zeitverzögerung vorausgewählt, während der ein Benutzer eine Taste drücken kann, um die Auswahl zu ändern; Nach dieser Verzögerung wird die Standardauswahl automatisch ausgeführt, sodass ein normaler Bootvorgang ohne Interaktion erfolgen kann.

Der Bootvorgang kann als abgeschlossen betrachtet werden, wenn der Computer bereit ist, mit dem Benutzer zu interagieren, oder das Betriebssystem in der Lage ist, Systemprogramme oder Anwendungsprogramme auszuführen.

Viele eingebettete Systeme müssen sofort booten. Eine Minute zu warten, bis ein digitales Fernsehen oder ein GPS-Navigationsgerät gestartet wird, ist im Allgemeinen nicht akzeptabel. Daher verfügen solche Geräte über Softwaresysteme im ROM oder Flash-Speicher, so dass das Gerät sofort mit dem Betrieb beginnen kann; Es ist nur wenig oder kein Laden erforderlich, da das Laden im Voraus berechnet und auf dem ROM gespeichert werden kann, wenn das Gerät hergestellt wird.

Große und komplexe Systeme können Bootprozeduren haben, die in mehreren Phasen ablaufen, bis schließlich das Betriebssystem und andere Programme geladen und zur Ausführung bereit sind. Da Betriebssysteme so konzipiert sind, dass sie niemals starten oder stoppen, kann ein Bootloader das Betriebssystem laden, sich selbst als reinen Prozess innerhalb dieses Systems konfigurieren und dann die Kontrolle unwiderruflich an das Betriebssystem übertragen. Der Bootloader wird dann wie jeder andere Prozess normal beendet.

Netzwerk-Booten

Die meisten Computer können auch über ein Computernetzwerk booten . In diesem Szenario wird das Betriebssystem auf der Festplatte eines Servers gespeichert und bestimmte Teile davon werden mit einem einfachen Protokoll wie dem Trivial File Transfer Protocol (TFTP) an den Client übertragen . Nach der Übertragung dieser Teile übernimmt das Betriebssystem die Steuerung des Bootvorgangs.

Wie beim Bootloader der zweiten Stufe beginnt der Netzwerkstart mit generischen Netzwerkzugriffsmethoden, die vom Boot-ROM der Netzwerkschnittstelle bereitgestellt werden, das normalerweise ein Preboot Execution Environment (PXE)-Image enthält. Es sind keine Treiber erforderlich, aber die Systemfunktionalität ist eingeschränkt, bis der Betriebssystemkernel und die Treiber übertragen und gestartet wurden. Als Ergebnis ist es nach Abschluss des ROM-basierten Bootens durchaus möglich, über das Netzwerk in ein Betriebssystem zu booten, das selbst nicht die Fähigkeit besitzt, die Netzwerkschnittstelle zu verwenden.

Siehe auch

Anmerkungen

Verweise

Externe Links