Warum brauchen wir einen Bootloader?


29

Nachdem das BIOS oder etwas ähnliches, das als Firmware dient, gestartet wurde, wird die Steuerung meines Wissens an den Bootloader übergeben.

Warum kann das BIOS den Betriebssystemkern nicht direkt laden?

Außerdem heißt es im GRUB-Handbuch: 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?


Antworten:


28

Ein BIOS muss wissen, wie ein Kernel geladen wird, und dies würde das BIOS übermäßig komplizieren: Stellen Sie sich ein BIOS vor, das wissen muss, wie die vielen verschiedenen Betriebssysteme geladen werden, wie Kernelparameter an sie übergeben werden usw.

Daher wird nur die Hardware initialisiert und zu einem bekannten Ort gesprungen, an dem der Bootloader gespeichert ist. dann wird die Steuerung an sie übergeben.

Aus dem Unix- und Internet-Grundlagen-HOWTO :

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 schlau. 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 kleinen Festplatten geschrieben und kann buchstäblich nicht auf genügend Festplatten zugreifen, um den Kernel direkt zu laden. Mit dem Bootloader-Schritt können Sie auch eines von mehreren Betriebssystemen von verschiedenen Stellen auf Ihrer Festplatte aus 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: (aus Wikipedia )

Die BIOS-Software ist in den PC integriert und der erste Code, der beim Einschalten von einem PC ausgeführt wird ("Boot-Firmware").

Aber eine Firmware ist Software. Ich würde also annehmen, dass das GRUB-Handbuch in diesem Punkt zumindest verwirrend ist. Der Bootloader kann als die erste benutzerdefinierte Software angesehen werden, die auf dem Computer ausgeführt wird.


10

Der Grund ist Flexibilität. Auf einer Festplatte befinden sich möglicherweise mehrere verschiedene Betriebssysteme (Windows, Linux usw.) oder Sie haben möglicherweise mehrere verschiedene Versionen desselben Betriebssystems. Daher ist es besser, ein vom Betriebssystem unabhängiges Stück Code zu haben, das weiß, wo sich jedes auf der Festplatte installierte Betriebssystem befindet, wie jedes von ihnen geladen wird, welches geladen wird, ob ein Menü angezeigt wird oder nicht usw. Dies ist ein Bootloader.

Das BIOS lädt und führt Code aus, der sich an einer vordefinierten Stelle auf einer Festplatte befindet (erster Sektor). Wir nennen diesen Code einen Bootloader. Wenn Sie Windows jedoch auf einer leeren Festplatte installiert haben, wird dieser Code auch von Windows installiert, sodass Sie ihn als Teil von Windows bezeichnen können, zumal der Windows-Bootloader kein anderes Betriebssystem als Windows laden kann.

In Bezug auf das erste Softwareprogramm, das beim Starten eines Computers ausgeführt wird: Die Unterscheidung zwischen Firmware und Software ist recht gering, und der Startvorgang eines modernen Computers ist sehr kompliziert. BIOS an sich ist auch kein monolithisches Programm, sondern mehrere verschiedene Phasen, die miteinander verkettet sind. Der Bootloader ist jedoch der erste vom Benutzer änderbare Code, der ausgeführt wird. Dies ist der erste Code, der vom Benutzer beschädigt, gelöscht, mit einem Virus infiziert usw. werden kann. Ich nehme an, dass das BIOS zwar die erste Software ist, die ausgeführt wird um zu überprüfen, ob es in Ordnung ist.


1
Erfahrungsgemäß kann ein Benutzer das BIOS auf jeden Fall beschädigen.
Hören Sie auf, Monica

2

Warum kann das BIOS den Betriebssystemkern nicht direkt laden?

Drei Gründe:

  • Das BIOS auf der ursprünglichen PC-Plattform, als es 1981 eingeführt wurde, sollte dieselbe Rolle spielen wie das im CP / M-Betriebssystem - nämlich eine dünne Abstraktionsschicht für einige Geräte und einen einfachen Disk-Bootloader. CP / M hatte eine andere Schicht namens "BDOS", die das Dateisystem handhabte. DOS war CP / M in vielerlei Hinsicht ähnlich, da es zu dieser Zeit das in Mode gekommene Betriebssystem war, und es war ähnlich aufgebaut. BIOS sollte hardwarespezifische Aspekte der Plattform behandeln, eine Rolle, die Treiber in Betriebssystemen jetzt erfüllen.

  • Die Vorstellung eines vom Betriebssystem getrennten Dateisystems hat sich noch nicht wirklich durchgesetzt.

  • Zu dieser Zeit waren RAM und ROM teure und knappe Ressourcen. Der ursprüngliche IBM 5150-PC konnte mit nur 16 KB RAM ( Referenz ) beschafft werden . Die ROM-Größe dieses Systems betrug 48 KB und beinhaltete einen BASIC-Interpreter. Auch ein Standard-Dateisystem gab es damals nicht.

Da DOS zum beliebtesten Betriebssystem für diese Plattform wurde und Windows danach mit diesem Setup funktionierte, dachte niemand daran, das BIOS auf diese Weise um echte Boot-Funktionen zu erweitern.

Ich bin mir nicht sicher, ob UEFI wirklich bootfähig ist - möglicherweise wird es aus dem einen oder anderen Grund nicht von Windows verwendet (Windows besteht darauf, bei der Installation einen eigenen Boot-Manager zu verwenden). Andere Nicht-BIOS-Firmwares wie U-Boot und solche in vielen Telefonen und Routern laden Kernel und führen sie direkt aus. Es gab keinen technischen Grund dafür, seit BIOSes mehr Platz im ROM hatten, um mehr Dinge zu tun.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.