![Wie funktionieren Multiboot-Betriebssysteme](https://rvso.com/image/1476419/Wie%20funktionieren%20Multiboot-Betriebssysteme.png)
Ich habe gelesen, dass der Computer ein Betriebssystem lädt, indem er die ersten 512 KB jedes angeschlossenen Geräts durchsucht. Wenn dieser Speicherplatz als Bootsektor fungiert, beginnt er, den Speicherplatz dahinter zu laden.
Laut diesem Artikel:https://www.gnu.org/software/grub/manual/multiboot/multiboot.html
Mehrere Betriebssysteme, die auf derselben Festplatte vorhanden sind, führen eine „Verkettung“ durch. Wenn sich alle Betriebssysteme auf derselben Festplatte befinden, woher weiß der Computer dann, nach wie vielen Sprüngen er einen anderen Bootsektor finden wird?
Und was ist Verkettung?
Antwort1
Ich habe gelesen, dass der Computer ein Betriebssystem lädt, indem er die ersten 512 KB jedes angeschlossenen Geräts durchsucht.
Dies geschieht durch das PC-BIOS. Dabei werden nicht unbedingt alle angeschlossenen Geräte erfasst, sondern nur diejenigen, die es lesen kann und für die es so konfiguriert ist, dass es aus den Einstellungen liest.
PCs mit dem neueren UEFI-Standard können eine Datei direkt von einer EFI-Partition auf einer Festplatte laden. Normalerweise versteht das BIOS keine Dateisysteme wie NTFS oder FAT, aber UEFI ist etwas intelligenter und kann tatsächlich Dateien von einem Gerät lesen.
Im Falle des BIOS wird nie ein vollständiges Betriebssystem geladen, sondern ein kleines Programm, dasBootloader der ersten Stufe. Dieser Bootloader der ersten Stufe kann ein vollständiges Betriebssystem laden, aber eigentlich nur im Fall von DOS oder einem anderen sehr einfachen Betriebssystem.
Normalerweise passiert Folgendes: Der Bootloader der ersten Stufe wird ausgeführt und lädt einen Bootloader der zweiten Stufe. Dies kann der alte NT/XP- NTLDR
, der Windows Vista+-Bootloader winload.exe
oder GRUB sein.
Bootloader (zweite Stufe und höher) können mehr als das BIOS. Sie lesen beispielsweise eine Konfigurationsdatei oder Daten und können Ihnen ein Menü mit den zu bootenden Betriebssystemen präsentieren. Der Bootloader wird überschrieben, sobald das Betriebssystem geladen ist.
Verkettungist, wenn ein Bootloader einen anderen Bootloader aufruft. Da Windows nur mit seinem eigenen Bootloader bootet, lädt GRUB, wenn Sie GRUB installiert haben, Windows, indem es einfach den Bootloader der ersten Stufe lädt, den das BIOS sowieso geladen hätte. Ich glaube, dieser wird im ersten Sektor seiner Partition gespeichert. Dasselbe wird mit DOS gemacht.
Es ist nicht erforderlich, wenn GRUB das Betriebssystem direkt booten kann, was bei jedem Linux möglich ist. Im Gegensatz zu anderen Betriebssystemen ist es Linux ziemlich egal, wie es und seine Initramdisk in den Speicher gelangen.
UEFI kann ein Betriebssystem direkt laden, aber Windows unterstützt dies meines Wissens nach nicht, daher wird winload.exe
dies normalerweise von UEFI-Systemen direkt geladen und ausgeführt.
Andere Nicht-PC-Bootloader wie U-Boot (das möglicherweise auf Ihrem Heimrouter läuft) verstehen FAT- und Linux-Dateisysteme, laden Linux direkt von ihnen und starten dann das Betriebssystem direkt.
Antwort2
Ich habe gelesen, dass der Computer ein Betriebssystem lädt, indem er die ersten 512 KB jedes angeschlossenen Geräts durchsucht.
Fast richtig. PC-Hardware liest den ersten Sektor, der 512 Byte groß ist (nicht Kilobyte).
Wenn dieser Speicherplatz als Bootsektor fungiert, beginnt er mit dem Laden des Speicherplatzes dahinter.
Auch fast richtig. Die Firmware klassischer Motherboards enthielt etwas, das BIOS genannt wurde. Beim Einschalten des PCs wurde es ausgeführt. Eine seiner Aufgaben bestand darin, die Kontrolle an ein anderes Gerät zu übergeben (z. B. an ein Diskettenlaufwerk).
Fortgeschrittenere Versionen unterstützten nicht nur ein einziges Gerät, sondern prüften mehrere Geräte und gingen zum nächsten über, falls eines keine Boot-Lösung bot. Beispielsweise konnte versucht werden, von einer Diskette zu booten, und wenn dies fehlschlug, wurde versucht, von einer CD zu booten, und wenn dies fehlschlug, wurde versucht, von der ersten Festplatte zu booten. (wobeiErsteist auch interessant, wenn Sie mehrere Festplatten haben).
Meistens wurde der erste Sektor einer Festplatte gelesen. Und eine Festplatte hatte normalerweise ein Partitionierungsschema (MBR für IBM-kompatible PCs) und einen Bootcode. Dann folgte eine Kette von Ladern.
Beispielsweise würde die Firmware einen einzelnen Bootsektor laden und den Code darin starten.
Der aus diesem Sektor gelesene Code würde mehr über die Festplatte erfahren und ein größeres Programm laden. (Bei Bedarf mit mehreren Stufen wiederholen).
Wenn mehrere Betriebssysteme auf derselben Festplatte vorhanden sind, wird eine „Verkettung“ durchgeführt.
Das Betriebssystem führt keine Verkettung durch. Wenn jedoch eine Ihrer späteren Phasen ein erweitertes Bootloaderprogramm (z. B. Grub) ist, kann dieses nach Benutzereingaben fragen und abhängig davon auf unterschiedliche Weise fortfahren. Beispielsweise könnte es einen Linux-Kernel laden und den NTloader laden und starten.