De eLinux.org:
http://elinux.org/Panda_How_to_MLO_%26_u-boot
El cargador de arranque de primera etapa se ejecuta directamente en la placa desde el encendido. No sé el nombre de este gestor de arranque (del wiki oficial de TI, se llama Boot Rom). Este gestor de arranque inicializa una cantidad mínima de CPU y hardware de placa, luego accede a la primera partición de la tarjeta SD (que debe estar en formato FAT), carga un archivo llamado "MLO" y lo ejecuta. "MLO" es el cargador de arranque de segunda etapa.
Aparentemente, el cargador de arranque de la segunda etapa puede ser uno de los X-loader o SPL. Aparentemente, este gestor de arranque solo lee la primera partición de la tarjeta SD, carga un archivo llamado "u-boot.bin" y lo ejecuta. "u-boot.bin" es el gestor de arranque de tercera etapa.
El cargador de arranque de la tercera etapa es U-boot, que es un cargador de arranque popular para muchas placas y productos integrados diferentes. Este cargador de arranque tiene muchas características diferentes, que incluyen un shell interactivo, variables, la capacidad de acceder a la tarjeta SD y mostrar su contenido, etc. Lo que suceda a continuación depende de la versión de U-boot que tenga para la placa Panda y cómo esté configurado. En una configuración muy simple, U-Boot buscará el archivo "uImage" en la raíz de la primera partición de la tarjeta SD (que, nuevamente, debe estar formateada como una partición FAT), y lo ejecutará. Este es el kernel de Linux. U-Boot pasa el argumento de la línea de comandos del núcleo. Dependiendo de cómo esté configurado el núcleo, puede aceptar la línea de comando de U-Boot o usar una que se compiló cuando se creó.
Esta es una "cosa de Panda Board", no necesariamente cierta para Linux en general.
Sin embargo, la mayoría todas los sistemas tienen algún tipo de arranque de "múltiples etapas" como el de arriba. Por ejemplo, al iniciar una PC con Windows, verá:
- Arranque del BIOS
- El sector de arranque se carga desde el disco o USB; o se lee un registro de arranque PXE de la red
- El kernel de Windows se inicia (lo que ve antes/durante la "pantalla de inicio")
- Finalmente, "Windows" se inicia
Así que no es ni "ineficiente", ni inusual.
PD:Este enlace también tiene una buena descripción de la secuencia de carga de arranque:
- http://omappedia.org/wiki/Bootloader_Proyecto
PPS:"MLO" significa "Mmc LOader"
Cuando aparece la placa, la Unidad de administración de memoria (MMU) aún debe configurarse antes de que la CPU pueda comenzar a usar la SDRAM. El SoC tiene 56 KB de SRAM que se pueden usar en ese momento, pero es demasiado pequeño para que se ejecute u-boot. El paso adicional es que el código que se ejecuta desde SRAM se cargará e iniciará u-boot.