Der Konflikt zwischen dem, was Sie sagen, dass sich der Bootloader im ROM befindet, und dem, was sich im MBR befindet, ist möglicherweise darauf zurückzuführen, dass der Bootloader für jeden Code verwendet wird, der festlegt, wie das Minimum an Code geladen werden muss, damit der Computer etwas Nützliches ausführt, einschließlich der einzelnen Zustand in einem mehrstufigen Boot.
Der Ausgangszustand ist also ein Computer, der ein programmierbares Gerät ist, aber nicht weiß, wie Software zum Ausführen geladen wird, da keine Software geladen ist. (Und daher booten von sich selbst von den Bootstraps hochziehen ).
In der Vergangenheit gab es ein paar verschiedene Lösungen für dieses Problem, aber heutzutage beginnen wir mit einem Code im ROM (meistens streng EEPROM), der ausreicht, um verschiedene Geräte zu untersuchen und sie der Reihe nach zu testen, bis ein passender gefunden wird bootfähig.
(Dies ist der Grund, warum viele Systeme von einer CD oder DVD booten, wenn Sie eine OS-Installationsdiskette in die Festplatte einlegen und von der Festplatte, andernfalls das BIOS [der Code auf dem ROM, einschließlich des Codes, von dem wir sprechen, und einige andere niedrige -level stuff that get things started] wird zuerst das CD / DVD-Laufwerk und dann, wenn auf einer Festplatte nichts gefunden wird, das CD / DVD-Laufwerk ignoriert, sofern dies nicht manuell angefordert wird verschwendet keine Zeit damit, eine nicht bootfähige Festplatte hochzufahren, die im Laufwerk verblieben ist.
Dieser Code im ROM wird manchmal als Bootloader bezeichnet .
Wenn bekannt ist, welches Laufwerk angezeigt werden soll, wird der MBR angezeigt, der Informationen zu primären Partitionen enthält. Wie könnten Sie später / oder / boot oder C: / (auf einem Windows-System) anzeigen, wenn Sie dies nicht getan haben? Wissen Sie, welcher Teil der Festplatte welche Partition war, egal wie jede Partition gemountet wurde? - und etwas Code mit weiteren Anweisungen zum Ausführen. (Dies erklärt im Übrigen, warum einige Betriebssysteme - wie Windows - nur auf einer primären Partition installiert werden können. Die Details dieser Partitionen sind im MBR enthalten. Dies ist die einzige Partitionsinformation, die der Bootloader gelesen hat und in die der EBR nicht geladen wird Erfahren Sie mehr über die logischen Partitionen (soweit es die Partitionen betrifft, gibt es sie noch nicht einmal).
Dieser ausführbare Code wird auch als Bootloader bezeichnet . Wenn wir zwischen diesem und dem, was als nächstes kommt, unterscheiden wollen, spricht man von einem primären Bootloader (denn wenn wir kein eigenes BIOS erstellen, ignorieren wir das ROM-Bit als außerhalb unserer Kontrolle).
Dieser Code ist sehr klein, da nur ca. 400 Byte Platz bieten. Um also etwas reales zu tun, wird mehr Code geladen, der größer sein kann, da er sich nicht mit dieser Einschränkung auseinandersetzen muss.
Dieser Code wird auch als Bootloader bezeichnet . Wenn wir zwischen diesem und dem, was vorher war, unterscheiden wollen, spricht man von einem sekundären Bootloader .
Dieser Code könnte vielleicht die letzte Stufe des Prozesses sein. Wenn Sie nur ein Betriebssystem haben oder wenn alle Betriebssysteme auf Ihrem System kompatible Bootloader verwenden (z. B. zwei Linux-Installationen, bei denen beide GRUB verwenden, sodass das zuletzt aktualisierte GRUB das Booten eines dieser Betriebssysteme anbieten kann), ist dies der Fall präsentiert Menüs (falls gewünscht), die in einen Kernel geladen werden, und übergibt die Kontrolle über das Betriebssystem.
Falls Sie ein Betriebssystem haben, das nicht mit diesem Bootloader kompatibel ist, kann es zu einer Verkettung kommen. Wenn Sie z. B. Windows und Linux auf demselben Computer haben, lädt die GRUB-Option zum Laden von Windows tatsächlich einen weiteren Bootloader, der nur über die Windows-Installation (en) Bescheid weiß, und leitet ihn weiter. Dies war zwar eine Tertiärphase in diesem Prozess, es wird jedoch weiterhin als sekundärer Bootloader bezeichnet , da es weder weiß noch kümmert, dass ein anderer sekundärer Bootloader vor ihm ausgeführt wurde. Dies ist auch bei einer Linux-Installation der Fall, bei der ein anderer Typ eines sekundären Bootloaders verwendet wird.
Wenn wir über den Bootloader in Bezug auf Linux sprechen , meinen wir im Allgemeinen nicht den ROM-Code (er ist nicht Teil von Linux oder wurde durch die Installation von Linux geändert). Wenn wir dies tun update-grub
, ändern wir den sekundären Bootloader, der normalerweise in / boot einer bestimmten Installation enthalten ist. Wenn wir dies tun install-grub
, ändern wir es und auch den primären Bootloader im MBR, sodass er über genügend Code verfügt, um zu wissen, wo sich / boot befindet (möglicherweise wird ein Software-RAID gestartet, sobald es ausgeführt wird), und laden diesen und führen ihn aus .
Zusammenfassend waren Sie also falsch, als Sie sagten, ROM sei Teil des Hauptspeichers *, weil es separat ist. (In der Tat wird RAM als zu ROM anonym angesehen). Sie haben zu Recht gesagt, dass es dort und im MBR einen Bootloader gibt, da es sich um zwei Prozessschritte handelt und beide manchmal mit diesem Namen bezeichnet werden. Und die Antwort auf "Speichern verschiedene Betriebssysteme ihren Bootloader an verschiedenen Orten?" ist "meistens", da inkompatible sekundäre Bootloader entweder andere Bootloader verbergen (wenn Sie Windows nach der Installation von Linux installieren) oder bei Aufforderung in den anderen Bootloader verketten (wenn Sie diese Situation beheben oder Linux nach Windows installieren), jedoch ein Betriebssystem kann einen sekundären Bootloader freigeben, wenn diese kompatibel sind (wenn Sie Linux nach einem anderen Linux installieren, das denselben sekundären Bootloadertyp verwendet, und das andere Linux erkennt [manchmal verwirrt Software-RAID die Dinge und macht Chainloading erforderlich).
* In Tagen, in denen man sowohl ROM als auch RAM programmgesteuert nutzte, war dies anders. Auf einem ZX Spectrum wäre das ROM beispielsweise 16 kB groß und würde einen BASIC-Interpreter enthalten. Damit hätten Sie auch den Ausgangspunkt, um etwas in seine 48 kB oder 128 kB (seitenweise) oder in den RAM zu laden (in diesem Fall wird im Wesentlichen gebootet) jenem BASIC-Interpreter, der dann verwendet wird, um das zu booten, was sich auf dem Band befand, gab es eine ganze Reihe von Funktionen des BASIC-Interpreters, die Programme im RAM verwenden konnten (warum sollte eine Trigger-Funktion geschrieben werden, wenn der Computer bereits eine an einer bekannten Position hat) (vor allem, wenn Sie nur 48 KB haben, in denen Sie Ihren gesamten Code ausführen können). Dieses ROM war auf die gleiche Weise wie das RAM sichtbar, nur an verschiedenen Adressen. In einem solchen Fall war der ROM ebenso Teil des Hauptspeichers wie der RAM, aber nicht beschreibbar.
A small portion of a computer's main memory where the CPU expects to find its initial program is constructed from special nonvolatile memory cells. Such memory is known as read-only memory(ROM)
wie er sagt . Der Hauptspeicher besteht aus zwei Teilen, RAM und ROM. Ich möchte nur wissen, ob der sogenannte Bootloader im ROM-Teil des Hauptspeichers installiert ist ... @Sergey