Dónde, cómo ese primer gestor de arranque depende mucho del sistema. Es posible que tenga algún tipo de dispositivo de arranque usb que enumera y descarga el firmware para ram todo en hardware luego el procesador arranca desde ese RAM.
Normalmente, sí, el primer arranque es una especie de flash. Es una buena idea tener el primer gestor de arranque súper simple, esencialmente 100% libre de errores y duradero y confiable con tal vez una manera en serie o de otra manera para entrar para que pueda usarlo para reemplazar el segundo/cargador de arranque real.
Idealmente, el segundo gestor de arranque también quiere ser flash, el segundo gestor de arranque querría hacer la mayor parte del trabajo, inicializando ddr, configurando ethernet si quiere tener algún tipo de depuración o transferencia de archivos basada en ethernet, bootp, etc. Siendo significativamente más grande y más complicado, se espera que ambos tengan errores y necesiten ser actualizados con más frecuencia que el gestor de arranque principal. Se espera que el primario no se sobrescriba para que pueda reemplazar cómodamente el segundo gestor de arranque sin bloquear el sistema.
¿Todos los sistemas usan lo anterior? No, algunos/muchos solo pueden usar un solo gestor de arranque, y tal vez haya una pausa muy temprana, de modo que una pulsación de tecla en un puerto serie puede interrumpir el gestor de arranque y llevarlo a un lugar donde puede volver a cargar el gestor de arranque. Permitiendo el desarrollo de un gestor de arranque con menos posibilidades en la creación de bloques, pero aún existe la posibilidad de que desordese ese primer bit antes e incluya la pulsación de tecla y la carga del flash en serie. Una vez más, esa cosa del cargador en serie no siempre está presente, solo es una conveniencia para los desarrolladores de bootloader. A menudo la alternativa será jtag, o una fiesta de graduación removible u otra forma de sistema para entrar y reprogramar la fiesta de graduación cuando la enciendas (también, a veces, de la misma manera que la programas la primera vez en el sistema cuando se produce la placa, algunos diseños son fabricables para ahorrar costos y usar flashes preprogramados durante la fabricación, por lo que el primer arranque funciona).
Un cargador de arranque de Linux no requiere todo/nada de esto, un ram de configuración muy muy mínimo, prepara la línea de comando o atags o lo que sea y se ramifica a Linux.
Es una pregunta cargada, ya que la respuesta depende en gran medida de su sistema, procesador, ingenieros de diseño (incluyéndolo a usted). Tradicionalmente, los procesadores arrancan desde el flash y el gestor de arranque obtiene la memoria y algunas otras cosas para que el próximo bit de código pueda ejecutarse.El próximo bit de código puede provenir de muchos lugares, usb, disco, flash/rom, ethernet/bootp/tftp, pcie, mdio, spi, i2c, etc. Y puede haber tantas capas entre el inicio de reinicio y el inicio de linux como el diseño desea o requiere.