Ich bin daran interessiert zu erfahren, wie Linux mit separaten Boot-Partitionen umgeht. Ich bin nicht daran interessiert, dies tatsächlich zu tun, aber ich würde gerne wissen, wie dies unter der Haube funktioniert.
Stellen Sie sich eine Festplatte vor sda
, die zwei Partitionen sda1
und hat sda2
. Angenommen, dies sda2
ist die root
Partition, /
die das Linux-Betriebssystem enthält.
Mein Verständnis ist, dass der Bootloader GRUB2
montiert ist /boot
. Wenn sich das Verzeichnis /boot
jedoch auf einer separaten Partition sda2
befindet, wie kann dies passieren, bevor /
es tatsächlich bereitgestellt wird?
Wie läuft die Interaktion zwischen dem BIOS, dem Master-Boot-Datensatz und GRUB (oder den Dateien /boot
) in diesem Fall erfolgreich ab? Ist es so, dass die Daten in diesem Stadium /boot
nicht tatsächlich im /
Dateisystem bereitgestellt werden?
Hinweis: Diese Frage befasst sich mit dem Mounten der Root-Partition, behandelt jedoch keine separate Boot-Partition.
/boot
nicht auf ein Verzeichnis, das auf der Root-Partition gemountet ist?run-init
wodurch alle Dateien in den initramfs gelöscht und dann in das Root-Dateisystem chroots werden.UEFI
er immer populärer wird ;-) @strugeeIch glaube nicht, dass Sie hier verstehen. Von der GNU GRUB Wikipedia-Seite :
Auszug
In GRUB Version 2 findet folgendes statt:
Auszug
ANMERKUNG: Wenn Sie das typische GRUB2-Menü sehen, in dem Sie auswählen, welches Betriebssystem / welcher Kernel gestartet werden soll, verweisen Sie
/boot/grub
an dieser Stelle auf das Systemverzeichnis .Verweise
quelle
Linux (der Kernel) ist es egal, wie viele Boot-Partitionen Sie haben. Den Kernel von der Festplatte zu laden ist die Aufgabe des Bootloader (zB
grub
,grub2
,lilo
) und diese Tools auch über die Anzahl der Stellen ist es egal , ein Kernel befinden könnte. Sie kümmern sich nur um den spezifischen Ort.Als Beispiel ist meine Boot-Partition
/dev/md1
ein MDADM-RAID-Spiegel, der von den physischen Partitionen/dev/sde1
und unterstützt wird/dev/sdf1
. Ich kann diese einzeln mounten, wenn ich wollte, und als solche zählt dies technisch als zwei Boot-Partitionen, obwohl sie die gleichen Daten enthalten sollten.Zwei Partitionen für / boot für mich zu haben, ist ein Verfügbarkeitsproblem, aber es können auch unterschiedliche / boot-Partitionen sein. Der nächste Schritt ist, woher weiß der Bootloader? Hier ist, wie:
Dies ist ein Auszug aus einer
grub2
Konfiguration , und Sie werden bemerken , dass die einzigen Unterschiede sindroot=hd0,1
und ausroot=hd1,1
denen sich die Boot - Partition , dass Eintrag Referenzen.Nun, um Sie durch einen Stiefel zu führen, damit Sie verstehen können, was hier vor sich geht.
grub2
) ist so konfiguriert, dass er weiß, welches Gerät und welche Partition Ihren Kernel enthält. Grub2 greift direkt auf diese Partition zu und lädt Ihren Kernel in den Speicher.Dem Bootloader ist es egal, wie viele Boot-Partitionen Sie haben, es ist nur wichtig, wo sie sich befinden, und Sie müssen ihm diese Informationen mitteilen.
Dem Kernel ist es egal, wie viele Boot-Partitionen Sie haben, da er sie nie sehen muss (Sie müssen sie nur zur Verfügung haben, um beispielsweise neue Kernel hinzuzufügen).
quelle