Um zu verstehen, wofür jede Datei verantwortlich ist, sollten Sie verstehen, wie MPU startet.
Wie ich aus Ihrer Frage verstanden habe, verwenden Sie die i.MX-Mikroprozessorfamilie von NXP (Freescale). Es enthält einen kleinen ROM-Loader, der die grundlegende Systemeinrichtung (Schnittstellen zum Speicher, Taktbaum usw.) durchführt, nach Medien zum Booten sucht (basierend auf gebrannten OTP-Bits oder GPIO) und den Bootloader (in Ihrem Fall u-boot) findet Genaue Adresse, die im Datenblatt angegeben ist, laden und starten. U-boot initialisiert weitere Schnittstellen (z. B. Ethernet), findet Argumente, die an Kernel übergeben werden sollen (Bildschirmeinstellungen, Konsole, Netzwerkeinstellungen, wenn Sie NFS verwenden), kopiert Kernel nach DDR und leitet alle Argumente weiter. Der Kernel lädt alle Treiber und sucht nach rootfs mit allen Bibliotheken, Anwendungen usw. Danach startet der Kernel Init-Skripte, die alle Systeme initialisieren und Ihre Anwendung starten.
- u-boot ist das erste, was nach dem ROM-Bootloader gestartet wird. Sie können es durch Ihren eigenen Code ersetzen, wenn Sie möchten, dass MPU Bare-Metal-Code ohne Betriebssystem (wie Mikrocontroller) ausführt.
- zImage ist eine komprimierte Version des selbstextrahierenden Linux-Kernel-Image.
- rootfs ist ein Root-Dateisystem, das alle Anwendungen, Bibliotheken und in den meisten Fällen alles enthält, einschließlich des Home-Ordners.
- Das SD-Karten-Image ist einfach alles oben Erwähnte, das (mit dd) auf die Karte kopiert werden kann, nach dem Kopieren sehen Sie die FAT-Partition mit Kernel und Gerätebaum und die EXT-Partition mit Rootfs, u-boot befindet sich im nicht partitionierten Bereich vor FAT (in falls Sie i.MX6 verwenden, ist es 0x80000). Es soll Ihnen das Leben leichter machen.
zImage
ist das eigentliche binäre Image des kompilierten Kernels. Es ist das, was der Bootloader lädt und auszuführen versucht (ich glaube, dass es bei eingebettetem Linux irgendwie direkt in den Bootsektor geschrieben wird; Anweisungen finden Sie in Ihrem Handbuch der eingebetteten Linux-Distribution)rootfs
ist das sogenannte INITial RamDisk (auch bekannt als initrd) Image, das alles enthält, was der Kernel benötigt, um in einen Zustand zu booten, in dem das eigentliche Root-Dateisystem gemountet werden kann.uboot
ist der Bootloader, der von eingebettetem Linux verwendet wird; Es weist im Grunde das BIOS (Basic Input Output System) an,zImage
auszuführen mit den Optionen, diezImage
mitteilen wo das Root-Dateisystem zu finden ist, damit es weiß, wie es beginnen soll.
Wenn ich raten müsste, würde ich riskieren, dass all diese Dateien während des Generierens des eigentlichen SD-Karten-Images erstellt werden, selbst wenn Sie die ersten drei nicht mehr manuell zum endgültigen Image hinzufügen müssen.