Nach dem Start des BIOS oder etwas vergleichbarem, das als Firmware dient, wird die Kontrolle meines Wissens an den Bootloader übergeben.
Warum kann das BIOS den Betriebssystemkernel nicht direkt laden?
Außerdem heißt es im GRUB-Handbuch:Kurz gesagt, ein Bootloader ist das erste Softwareprogramm, das beim Starten eines Computers ausgeführt wird.. Ist das BIOS nicht das erste Programm, das ausgeführt wird?
Antwort1
Ein BIOS müsste wissen, wie ein Kernel geladen wird, und dies würde das BIOS übermäßig kompliziert machen: Stellen Sie sich ein BIOS vor, das wissen muss, wie die vielen verschiedenen verfügbaren Betriebssysteme geladen werden, wie ihnen Kernel-Parameter übergeben werden usw. …
Es initialisiert also lediglich die Hardware und springt zu einem bekannten Ort, an dem der Bootloader gespeichert ist; anschließend wird ihm die Kontrolle übergeben.
AusDas HOWTO zu Unix- und Internet-Grundlagen:
Sie fragen sich vielleicht, warum das BIOS den Kernel nicht direkt lädt – warum der zweistufige Prozess mit dem Bootloader? Nun, das BIOS ist nicht sehr intelligent. Tatsächlich ist es sehr dumm, und Linux verwendet es nach dem Booten überhaupt nicht. Es wurde ursprünglich für primitive 8-Bit-PCs mit winzigen Festplatten geschrieben und kann buchstäblich nicht genug von der Festplatte abrufen, um den Kernel direkt zu laden. Der Bootloader-Schritt ermöglicht es Ihnen auch, eines von mehreren Betriebssystemen von verschiedenen Stellen auf Ihrer Festplatte zu starten, für den unwahrscheinlichen Fall, dass Unix für Sie nicht gut genug ist.
Das BIOS ist das erste Programm, das ausgeführt wird: (vonWikipedia)
Die BIOS-Software ist in den PC integriert und ist der erste Code, der von einem PC beim Einschalten ausgeführt wird („Boot-Firmware“).
Aber eine FirmwareIstSoftware. Ich würde also annehmen, dass das GRUB-Handbuch zumindest in diesem Punkt verwirrend ist; der Bootloader kann als ersterbenutzerdefinierteSoftware, die auf dem Computer ausgeführt wird.
Antwort2
Der Grund ist die Flexibilität. Sie können mehrere verschiedene Betriebssysteme auf einer Festplatte haben (Windows, Linux usw.) oder Sie können mehrere verschiedene Versionen desselben Betriebssystems haben. Daher ist es besser, einen betriebssystemunabhängigen Code zu haben, der weiß, wo sich jedes auf der Festplatte installierte Betriebssystem befindet, wie es geladen wird, welches geladen werden soll, ob ein Menü angezeigt werden soll oder nicht usw. Dies ist ein Bootloader.
Das BIOS lädt Code, der sich an einem vordefinierten Ort auf einer Festplatte befindet (erster Sektor), und führt ihn aus. Wir nennen diesen Code Bootloader, aber technisch gesehen wird dieser Code auch von Windows installiert, wenn Sie Windows auf einer leeren Festplatte installiert haben. Sie können ihn also als Teil von Windows bezeichnen, insbesondere da der Windows-Bootloader kein anderes Betriebssystem außer Windows laden kann.
In Bezug auf das erste Softwareprogramm, das beim Starten eines Computers ausgeführt wird: Die Unterscheidung zwischen Firmware und Software ist ziemlich dünn, und der Startvorgang moderner Computer ist sehr kompliziert. Das BIOS selbst ist auch kein monolithisches Programm, sondern mehrere unterschiedliche, miteinander verkettete Phasen. Der Bootloader ist jedoch das erstevom Benutzer änderbarCode, der ausgeführt wird. Dies ist der erste Code, den der Benutzer beschädigen, löschen, mit einem Virus infizieren usw. kann. Ich nehme also an, dass das BIOS zwar technisch gesehen die erste Software ist, die ausgeführt wird, der Bootloader aber insofern zuerst ausgeführt wird, als dass der Benutzer, wenn der Computer nicht bootet, prüfen muss, ob alles in Ordnung ist.
Antwort3
Warum kann das BIOS den Betriebssystemkernel nicht direkt laden?
Drei Gründe:
Das BIOS auf der ursprünglichen PC-Plattform sollte bei seiner Einführung im Jahr 1981 dieselbe Funktion erfüllen wie das im CP/M-Betriebssystem – nämlich eine dünne Abstraktionsschicht für einige Geräte und einen einfachen Festplatten-Bootloader. CP/M hatte eine weitere Schicht namens „BDOS“, die das Dateisystem verwaltete. DOS war CP/M in vielerlei Hinsicht ähnlich, da es damals das angesagte Betriebssystem war und ähnlich strukturiert war. Das BIOS sollte hardwarespezifische Aspekte der Plattform verwalten, eine Rolle, die heute Treiber in Betriebssystemen erfüllen.
Die Vorstellung eines vom Betriebssystem getrennten Dateisystems hatte sich noch nicht wirklich durchgesetzt.
Zu dieser Zeit waren RAM und ROM teuer und knappe Ressourcen. Der ursprüngliche IBM 5150 PC war mit nur 16 KB RAM erhältlich (Referenz). Die ROM-Größe dieses Systems betrug 48 KB und beinhaltete einen BASIC-Interpreter. So etwas wie ein Standarddateisystem gab es damals auch noch nicht.
Da sich DOS zum beliebtesten Betriebssystem für diese Plattform entwickelte und später auch Windows mit diesem Setup funktionierte, kam niemand auf die Idee, das BIOS auf diese Weise zu erweitern, um echte Bootloader-Funktionen einzubinden.
Ich bin mir über die Fähigkeiten von UEFI nicht im Klaren – es verfügt möglicherweise über echte Bootloader-Fähigkeiten, die aus irgendeinem Grund nicht von Windows verwendet werden (Windows besteht darauf, bei der Installation seinen eigenen Bootmanager zu verwenden). Andere Nicht-BIOS-Firmwares wie U-Boot und solche in vielen Telefonen und Routern laden und führen Kernel direkt aus. Es gab dafür keinen technischen Grund mehr, seit BIOSe im ROM Platz für mehr Dinge hatten.