Ich versuche, den Startvorgang einer Maschine als Ganzes ab dem Zeitpunkt zu verstehen, an dem Sie den Netzschalter drücken. Es gibt dieses eine Stück vom Bootloader bis zur Initramfs-Phase, das ich unter einigen anderen kleineren Teilen nicht ganz verstehe.
Angesichts dieser Grub-Konfiguration für einen Eintrag aus einer aktuellen Ubuntu-Standardinstallation:
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 96fb7310-5adb-4f66-bf59-04acd08d76a3
echo 'Loading Linux x.y.z ...'
linux /vmlinuz-x.y.z root=/dev/mapper/some-device-name ro nomodeset
echo 'Loading initial ramdisk ...'
initrd /initrd.img-x.y.z
Was macht das eigentlich in Bezug auf Systemstatus und Speicher? Ich verstehe, dass Grubs Aufgabe darin besteht, "den Kernel zu laden und auszuführen", und es hat seine eigenen Module, um auf Dateien auf Geräten (oder im Netzwerk) zuzugreifen, um zu ihnen zu gelangen. Im Beispiel hier insmod
s set root
und search
- aber das ist nur aus der Sicht von Grub und nicht mit dem Kernel geteilt, oder?
Ich vermute auch, dass Grub (eine Kopie?) Des Kernels in den Speicher lädt ( linux
Befehl ) und ihn tritt, um die Ausführung zu starten. (Anscheinend zwei verschiedene Schritte - also wie?) Die angegebenen Parameter können im Kernel gelesen und interpretiert werden (ist dies eine große Zeichenfolge, die irgendwo im Speicher abgebildet ist?) und bieten die Optionen zum Anordnen der angeforderten Dinge.
Ich sehe auch diese initrd
Option. Dies verweist auf meine gzip-komprimierten initramfs, die zum Starten des tatsächlichen Root-Geräts benötigt werden, das von angegeben wird root=
. Aber wie werden diese Initramfs dem Kernel zur Verfügung gestellt? Es werden keine Speicheradressen an den Ort übergeben, an den es geladen werden kann, und es kann auch nicht darauf zugreifen, da es bereits vor dem Start des Kernels geladen wurde. In einigen Kerneldokumentationen heißt es, dass auf dieses initramfs-Dateisystem 'Gerät' zugegriffen werden kann /dev/ram0
, aber ich sehe nicht, wie es zunächst zu einer zugänglichen Gerätedatei wird. Unter Wasser passiert etwas, das ich nicht sehe, denke ich.
Ich sehe auch nicht, wie dies mit anderen Bootloadern zusammenhängt, einschließlich eingebetteter Plattformen, zum Beispiel mit U-Boot / Coreboot. Tut dies dasselbe wie Grub (gleiche Standardspeicheradressen?) Und inwieweit sind diese hinsichtlich des Ladens von Kernel / initrd mit Grub vergleichbar?
Um meine Fragen klar zu stellen, ich glaube, ich verstehe, warum die verschiedenen Startphasen existieren und welche Übergänge stattfinden, aber ich sehe nicht, wie sie stattfinden und welche genauen Verantwortlichkeiten für jede der Phasen bestehen. Ich habe das Gefühl, dass ich einen "Standard" verpasse, auf den das alles hinausläuft.
Ich würde mich über eine Erklärung dazu freuen.
boot
Befehl am Ende der Sequenz. Ich bin mir nicht sicher , was genau es in Grub macht, aber wenn Sie die Grub-Befehlszeile verwenden, um diese Befehle manuell einzugeben, müssen Sieboot
oder es wird einfach für immer bleibengrub>
(oder zumindest, bis Sie sich langweilen und den Computer ausschalten ). Die vorhergehenden Befehle richten "lediglich" eine Umgebung ein.