Per capire di cosa è responsabile ogni file, dovresti capire come si avvia MPU.
Come ho capito dalla tua domanda, usi la famiglia di microprocessori i.MX NXP (Freescale). Include un piccolo caricatore ROM, che eseguirà l'installazione di base del sistema (interfacce alla memoria, albero dell'orologio ecc.), cercherà il supporto da cui eseguire l'avvio (basato su bit OTP o GPIO masterizzati), troverà il bootloader (u-boot nel tuo caso) in indirizzo esatto specificato nel datasheet, caricarlo e avviarlo. U-boot avvierà più interfacce (ad es. Ethernet), troverà gli argomenti che dovrebbero essere passati al kernel (impostazioni dello schermo, console, impostazioni di rete se usi NFS), copierà il kernel in DDR e passerà tutti gli argomenti. Il kernel caricherà tutti i driver e cercherà rootfs con tutte le librerie, le applicazioni, ecc. Dopo questo Kernel avvierà gli script init, che initeranno tutto il sistema e avvieranno la tua applicazione.
- u-boot è la prima cosa che verrà avviata dopo il bootloader della ROM. Puoi sostituirlo con il tuo codice se desideri che MPU esegua codice bare-metal senza sistema operativo (come il microcontrollore).
- zImage è una versione compressa dell'immagine del kernel Linux autoestraente.
- rootfs è il file system root, che contiene tutte le applicazioni, le librerie e nella maggior parte dei casi tutto, inclusa la cartella home.
- l'immagine sdcard è solo tutto ciò che è stato menzionato sopra che può essere copiato (con dd) sulla scheda, dopo la copia vedrai la partizione FAT con il kernel e l'albero dei dispositivi e la partizione EXT con rootfs, u-boot è in un'area non partizionata prima di FAT (in caso usi i.MX6è 0x80000). È lì solo per semplificarti la vita.
zImage
è l'effettiva immagine binaria del kernel compilato. È ciò che il boot loader caricherà e tenterà di eseguire (credo che su Linux embedded sia scritto direttamente nel settore di avvio in qualche modo; consulta il manuale della distribuzione di Linux embedded per le istruzioni)rootfs
è la cosiddetta immagine INITial RamDisk (nota anche come initrd) che contiene tutto ciò di cui il kernel avrà bisogno per avviarsi in uno stato in cui l'effettivo filesystem di root può essere montato.uboot
è il boot loader usato da embedded linux; Fondamentalmente dice al BIOS (Basic Input Output System) di eseguirezImage
con le opzioni che indicanozImage
dove trovare il filesystem root in modo che sappia come iniziare.
Se dovessi indovinare, rischierei che tutti questi file vengano creati nel processo di generazione dell'immagine effettiva della scheda SD, anche se non è più necessario aggiungere manualmente i primi tre all'immagine finale.