Booten ist hart
Booten ... na ja ... es ist wirklich der schwierigste Teil. Jedes Mal, wenn ein Computer hochfährt, trifft er sich im Grunde genommen neu. Es macht sich mit seinen verschiedenen Teilen vertraut, und für jedes, dem es begegnet, gewinnt es an Fähigkeit. Aber es muss sich jedes Mal sozusagen von selbst an den Bootstraps hochziehen.
Beim Entwerfen eines Startvorgangs besteht der Trick darin, die Maschine schrittweise hochzufahren. Ihr Boot muss schnell und zuverlässig sein, und es muss jedes Mal beides in einer völlig unbekannten Umgebung sein . Ich werde mich nicht einmal in ein Gespräch im Real / Protected-Modus wagen (was nicht einmal heißen soll, dass ich es könnte) , aber beim Booten ist eine Menge los. Wenn der Computer die verschiedenen Komponenten jedes Mal in abgestuften Schritten aufnimmt. Das wahrscheinlich wichtigste ist der Übergang von der Ausführung von On-Board-Code zur Ausführung von On-Disk-Code, oder mit anderen Worten: der Kernel-Exec. Dies ist der Zeitpunkt, an dem sich die Firmware (angeblich) dem Betriebssystem unterwirft.
Vor vielen Jahren war dies nicht so sehr der Fall. Früher war das BIOS wirklich das Basic In / Out - normale Programme riefen die Firmware auf, um beispielsweise den Bildschirm zu zeichnen und auf die Festplatte zuzugreifen. Diese wurden als Interrupts bezeichnet - alte Hüte erinnern sich vielleicht am besten an sie, weil sie sich über die Zuweisung von IRQs für ihre neue Punktmatrix oder USR freuten.
INT13H
Dies ist die 13H- Funktionsserie des Interrupts ( oder INT
in der Assemblysprache ) , die das BIOS als Dienste für den Datenträgerzugriff anbietet. Diese werden auch heute noch für BIOS-Systeme im Bootprozess verwendet, um den Sprung von der Firmware auf die Festplatte zu schaffen.
Ein BIOS-System überprüft die ersten Bytes jeder gefundenen Festplatte und sucht nach einem Muster, das es als Master Boot Record ( oderMBR
) erkennt . Dies ist ein jahrzehntealter De-facto-Standard, der ein Stück rohe, ausführbare Binärdatei enthält, die auf den Kopf der Festplatte geschrieben wird. Der MBR kennzeichnet eine BIOS-Diskette als bootfähig. Es hört auf zu prüfen, wenn es eines findet, und so ist praktisch eines alles, was Sie ohne clevere Tricks bekommen. Wenn es eines findet, ordnet es es dem Speicher zu und führt es aus (im Real-Modus, aber ich gehe immer noch nicht dorthin) .
Der ausgeführte MBR ist mit ziemlicher Sicherheit nicht Ihr Systemkern - 512 Bytes (Geben oder Nehmen) wären in dieser Abteilung ziemlich nutzlos. Dies ist wahrscheinlich ein Bootloader - ein Programm, das speziell entwickelt wurde, um eine der vielen Adressierungsbeschränkungen des BIOS zu überwinden - insbesondere, dass es überhaupt kein Dateisystem versteht.
Wenn der Bootloader im eigentlichen Kernel liest und führt sie im Speicher (wie wir alle beten , es jedes Mal so will) , wird es wahrscheinlich tun, indem Sie das BIOS über eine fragen INT13H
Interruptaufrufen. Und wenn dies nicht der Fall ist - viele anspruchsvollere Bootloader werden Dateisysteme im herkömmlichen Sinne mounten und den Code auf eine andere Weise ausführen -, ist es sehr unwahrscheinlich, dass der Bootloader ohne ein INT13H
oder zwei so ausgefallen ist . Oft müssen Bootloader sich selbst oder in verschiedenen Phasen hintereinander laden, da die zuerst zugewiesenen 512 Byte nicht einmal ihren Anforderungen entsprechen.
HUHN UND EI
All dies ist meines Wissens ein Umweg über die Diskette, aber zu diesem Zeitpunkt sollte klar sein, dass das Hauptproblem - man könnte es als Henne-Ei- Typ bezeichnen - darin besteht, auf die Diskette zuzugreifen, die die Programmanweisungen enthält etwa , wie man Zugang Scheiben . Der Schlüssel zu diesem Problem liegt in der Firmware - und dies ist auch auf EFI-Systemen nach wie vor sehr unterschiedlich - und die Firmware ist das wichtigste Glied in der Boot-Kette.
Sobald der Kernel ausgeführt wird und all seine unzähligen Routinen für den Zugriff auf und die Steuerung der Hardware ausgelöst werden, verschwinden diese Probleme (oder ändern sich zumindest etwas) , da moderne Betriebssysteme die vollständige Kontrolle über ein System übernehmen. Bis dahin reichen die Systemgrenzen jedoch nur so weit, wie es die Firmware zulässt. Dies sagt viel aus - das BIOS hat sich seit dem INT13H
8086 nicht wesentlich verändert. Der Aufruf ist ein 8086-Original. Ja, es gab (unzählige) Erweiterungen und Hacks, aber Neuerungen ...?
BESSER UND BESSER
Die meisten Änderungen am BIOS waren bestenfalls Verbände. Früher musste eine Festplatte physisch zugeordnet werden. Verschiedene und spezifische Aspekte ihrer Geometrie wurden beim Speichern oder Abrufen von Daten berücksichtigt. Schließlich wuchs die konventionelle Festplatte auf eine Größe, die dies verbot. Selbst die abstrakte Karte enthielt zu viele Informationen, als dass ein BIOS sie verarbeiten könnte. Da es nur im Real-Modus betrieben werden kann, ist das BIOS auf 1 MB pro Speicherregister beschränkt. Schwellen Sie die Zylinderkarte an oder machen Sie eine der Eigenschaften größer, als in so vielen Bits adressiert werden kann, und das BIOS geht buchstäblich verloren.
Diese Barriere wurde viele Male erreicht und durchbrochen . Jedes Mal, wenn die Karte in einer neueren, cleveren und weniger genauen Weise abstrahiert und kodiert wurde. Und so ist es heutzutage für ein BIOS buchstäblich unmöglich, ein Laufwerk genau zuzuordnen. Die logische Blockadressierung ist derzeit der De-facto-Standard, obwohl noch einige Übersetzungen für Zylinder / Kopf / Sektor (oder CHS) erforderlich sind. Was die Mainboard-Firmware an Genauigkeit / Verantwortung verloren hat, wurden solche Erweiterungen abstrahiert und zu den Verantwortlichkeiten für die Festplatten-Firmware hinzugefügt, um die Lücken zu füllen.
Auf dieses Katz-und-Maus-Spiel wird in Ihrer Frage verwiesen. Wenn das BIOS eine Festplatte aufgrund ihrer Größe über einen bestimmten Punkt hinaus nicht versteht, sollten alle Daten, die Sie möglicherweise beim Booten abrufen möchten, wie z. B. ein Bootloader oder ein Kernel, nicht über diesen Punkt hinaus gefunden werden. Dies ist, woher /boot
kam.
Vielleicht sogar besser
Heutzutage sind solche Dinge glücklicherweise durch den Untergang des BIOS irrelevant geworden. Es dauerte 30 Jahre, wurde aber in den letzten Jahren weitgehend durch den UEFI- Standard (oder EFI 2.0- Standard) ersetzt. UEFI bietet einen Ladevorgang von der ersten Minute an, wird im geschützten Modus initialisiert, enthält einen eigenen Bootloader, bietet einen für den Neustart beständigen Speicher für Flash-Speichervariablen, ist für die Verarbeitung von mehreren Zetabyte oder was auch immer pro Festplatte vorgesehen ... und vieles mehr sonst. Es ist alles andere als perfekt, aber es ist eine enorme Verbesserung gegenüber dem Vorgänger.
Selbst Argumente für spezialisierte Bootloader mit Festplattenverschlüsselung oder geschichteten Dateisystemen fallen ins Stocken, wenn Sie bedenken, dass all diese vom Betriebssystemkern verarbeitet werden müssen, und wenn Sie beim Booten einen Mount erhalten , haben Sie immer ein klares Verständnis. Ein Schuss für die Ausführung (vor allem, wenn man bedenkt, dass der Linux-Kernel in seiner Standardkonfiguration eine eigenständige EFI-ausführbare Datei ist) .
Eine separate /boot
Partition sollte Sie also wahrscheinlich nicht übermäßig beschäftigen, und wenn Sie sich auf einem EFI-System befinden, haben Sie wahrscheinlich ohnehin bereits eine analoge Partition in der EFI-System-Partition, da dies eine Voraussetzung für den Start des EFI-Modus ist.