GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum wird MLO im Boot-Schritt benötigt?

Von eLinux.org:

http://elinux.org/Panda_How_to_MLO_%26_u-boot

Der Bootloader der ersten Stufe läuft vom Einschalten direkt auf der Platine. Ich kenne den Namen dieses Bootloaders nicht (aus dem offiziellen TI-Wiki heißt er Boot Rom). Dieser Bootloader initialisiert eine minimale Menge an CPU- und Board-Hardware, greift dann auf die erste Partition der SD-Karte zu (die im FAT-Format vorliegen muss), lädt eine Datei namens „MLO“ und führt sie aus. "MLO" ist der Bootloader der zweiten Stufe.

Der Bootloader der zweiten Stufe kann anscheinend entweder der X-Loader oder SPL sein. Dieser Bootloader liest anscheinend auch nur die erste Partition der SD-Karte, lädt eine Datei namens "u-boot.bin" und führt sie aus. "u-boot.bin" ist der Bootloader der dritten Stufe.

Der Bootloader der dritten Stufe ist U-boot, ein beliebter Bootloader für viele verschiedene Embedded-Boards und -Produkte. Dieser Bootloader verfügt über viele verschiedene Funktionen, darunter eine interaktive Shell, Variablen, die Möglichkeit, auf die SD-Karte zuzugreifen und deren Inhalt anzuzeigen usw. Was als nächstes passiert, hängt von der Version von U-Boot ab, die Sie für das Panda-Board haben, und davon, wie es konfiguriert ist. In einer sehr einfachen Konfiguration sucht U-Boot im Stammverzeichnis der ersten Partition der SD-Karte (die wiederum als FAT-Partition formatiert sein muss) nach der Datei „uImage“ und führt diese aus. Das ist der Linux-Kernel. U-Boot übergibt dem Kernel ein Befehlszeilenargument. Je nachdem, wie der Kernel konfiguriert ist, kann er die Befehlszeile von U-Boot akzeptieren oder eine verwenden, die beim Erstellen hineinkompiliert wurde.

Dies ist eine "Panda-Board-Sache", die nicht unbedingt auf Linux im Allgemeinen zutrifft.

Allerdings die meisten alle Systeme haben eine Art "mehrstufiges" Booten wie das obige. Wenn Sie beispielsweise einen PC mit Windows starten, sehen Sie:

  1. BIOS-Start
  2. Bootsektor wird von Festplatte oder USB geladen; oder ein PXE-Boot-Record aus dem Netzwerk gelesen wird
  3. Der Windows-Kernel startet (das Zeug, das Sie vor/während des "Begrüßungsbildschirms" sehen)
  4. Schließlich startet "Windows" selbst

Es ist also weder "ineffizient" noch ungewöhnlich.

PS:Dieser Link enthält auch eine gute Beschreibung der Boot-Ladesequenz:

  • http://omappedia.org/wiki/Bootloader_Project

PPS:"MLO" steht für "Mmc LOader"


Wenn das Board hochfährt, muss die Memory Management Unit (MMU) noch eingerichtet werden, bevor die CPU mit der Verwendung des SDRAM beginnen kann. Das SoC verfügt über 56 KB SRAM, die zu diesem Zeitpunkt verwendet werden können, aber es ist zu klein, um von u-boot ausgeführt zu werden. Der zusätzliche Schritt besteht darin, dass Code, der vom SRAM ausgeführt wird, geladen und u-boot gestartet wird.


Linux
  1. Warum ist Cd kein Programm?

  2. Df vs. Du:Warum so viel Unterschied??

  3. Warum wird das verschlüsselte LVM-Volume (luks-Gerät) beim Booten nicht gemountet?

  4. Warum wird die Probe-Methode zusätzlich zu init in Linux-Gerätetreibern benötigt?

  5. Warum brauchen wir einen Bootloader in einem eingebetteten Gerät?

Warum kann ich Windows 10 mit Ubuntu 18.04 nicht dual booten?

Warum heißt Kubernetes K8s?

Problembehebung:Mindestens xMB mehr Speicherplatz im /boot-Dateisystem erforderlich

Linux-Startvorgang:Schritt für Schritt für Anfänger erklärt

Warum darf ich auf geschützte Windows-Dateien zugreifen, wenn ich Ubuntu von USB starte?

Bootloader finden