¿Cuál es el mejor gestor de arranque para una placa Linux integrada?

Estoy diseñando una placa Linux integrada para usar como controlador basado en web. Se basará en un Atmel AT91SAM9G20, que utiliza un núcleo ARM926EJ-S. ¿Alguien ha tenido experiencias particularmente buenas o malas con los gestores de arranque? En términos más generales, ¿cómo debo construir/elegir una distribución de Linux para esta placa?

Tengo muchas malas experiencias con los cargadores de arranque, el consejo de Toby es el menos peor: use el que se use más comúnmente para ese hardware, ya que (con suerte) será mejor compatible / mejor entendido (y "mejor" es un término relativo).

Respuestas (4)

Tanto el cargador de arranque como la distribución de Linux dependen de cuál sea su aplicación final.

RedBoot y uBoot son cargadores de arranque populares para Linux integrado. Admiten escritura en flash, carga de código a través de serial/ethernet, etc. Pero, para un dispositivo profundamente integrado, un cargador mínimo podría ser mejor, dejando todo lo demás a Linux.

Si necesita acceder a muchos paquetes de software, puede probar el puerto ARM de Debian. Para cualquier otra cosa, recomendaría OpenEmbedded o Buildroot: ambos son sistemas de compilación configurables para generar kernels y sistemas de archivos de Linux con solo lo que necesita y nada más.

Gracias por la info. Usted mencionó "un cargador mínimo" como alternativa. ¿Estás sugiriendo que escriba el mío propio o hay cargadores de arranque más simples que RedBoot y uBoot? Además, ¿alguna preferencia entre los dos? (Me inclino por uBoot, ya que tengo un poco más de experiencia con él). También me interesaría cualquier experiencia que tenga con OpenEmbedded o Buildroot. He usado Buildroot con una placa Gumstix más antigua. Que hayan cambiado a OpenEmbedded sugiere que podría ser mejor.
Por cargador mínimo, sí, me refiero a escribir uno, aquí hay una descripción general: simtec.co.uk/products/SWLINUX/files/booting_article.html OpenEmbedded parece mejor para crear paquetes que se pueden instalar en tiempo de ejecución, Buildroot es bueno para apuntar estático incrustado sistemas Aunque no he usado ninguno durante un par de años...

Creo que su mejor apuesta para el cargador de arranque es U-Boot . Tiene un puerto para el procesador que está buscando en su carpeta "arch", y es probablemente uno de los cargadores de arranque más populares. Puede buscar en la carpeta de la placa atmel de la fuente para obtener una idea sobre cómo configurar su código alrededor de su chip.

He usado U-Boot antes y es bastante bueno, muy flexible. Debe comunicarse con Atmel para ver qué SDK ofrecen. Si tiene espacio en Flash, Debian es una buena opción. Es bastante grande, pero poder instalar un paquete con un simple "apt-get" es mucho más fácil que tener que intentar compilarlo usted mismo. Utilizo el TIAM335x para mis proyectos y la gente de la comunidad de BeagleBone incluso ha puesto a disposición archivos tar de Debian ya compilados para ARM. Instalar el sistema de archivos raíz es tan simple como descomprimir el archivo provisto.

No tengo mucha experiencia con cargadores de arranque, pero puedo responder a esta pregunta:

¿Cómo debo construir/elegir una distribución de Linux para esta placa?

Definitivamente debería usar Debian como base de su sistema, porque es el Linux más versátil que existe . Tiene una gran colección de paquetes (aplicaciones) para ARM y otras arquitecturas.

Hay algunas distribuciones dedicadas a ARM, pero después de 3 años de jugar con dispositivos como Raspberry, BeagleBone, etc., siento que Debian tiene más paquetes que funcionan en ARM que distribuciones especializadas en ARM.

De acuerdo con Kamil aquí, Debian ya ha hecho todo el trabajo duro de la compilación cruzada de todos los paquetes, por lo que instalar nuevos paquetes es muy sencillo. Una vez que tenga Debian, desarrollar en el objetivo es casi tan fácil como desarrollar en una PC completa.