Arranque de Alpine Linux en el módulo de computación Raspberry Pi

En nuestro proyecto para un cliente estamos utilizando el módulo de computación Raspberry Pi, junto con una placa portadora de módulo de computación personalizada (llamada PCCB - Pi Control Carrier Board) que proporciona RS485, CAN, RS232, LAN, USB y un reductor para tensiones de entrada de 6 - 24 V. (Si está interesado en hardware personalizado y Desarrollo integrado de Raspberry Pi, póngase en contacto con nosotros. La conversación inicial con nosotros será gratuita para usted, y podría proporcionarle valiosas perspectivas e ideas).

Como sistema operativo hemos decidido utilizar Alpine Linux. Debido a su naturaleza de sólo lectura, residente en la RAM, es un ajuste perfecto para una solución embebida de larga duración que quiere ir fácil en la memoria Flash.

El PCCB ofrece la posibilidad de arrancar desde la tarjeta SD (con el módulo de computación lite), y de arrancar desde la Flash eMMC incorporada en los módulos de computación "normales".

Mientras que el arranque desde la tarjeta SD funciona sin problemas, al intentar arrancar desde la eMMC Flash, nos encontramos inicialmente con problemas.

Como ya sabrás, Alpine Linux (por defecto) reside completamente en la partición FAT de la tarjeta SD.

imagen

El problema: la pantalla se queda en negro, el LED de ACT parpadea 7 veces

Con el enfoque de simplemente copiar los archivos utilizados en la tarjeta SD a la eMMC (utilizando la herramienta de arranque Raspberry Pi rpiboot en Windows, para montar los módulos de computación eMMC) el módulo de computación no arrancó.

Muestra una pantalla negra, y el LED ACT parpadea siete veces, con una pausa, y luego vuelve a parpadear siete veces.

Consultoría esta página en elinux.orgpodemos ver que kernel.img no fue encontrado. El gestor de arranque de la Raspberry Pi no es capaz de localizar el kernel, y por lo tanto no puede arrancarlo.

La pantalla se queda en negro porque las pantallas de bienvenida están normalmente desactivadas en el config.txt que se entrega con Alpine Linux (disable_splash=1), de lo contrario se obtendría una pantalla de arco iris.

La solución: mover el kernel y el initramfs a la carpeta principal

Aparentemente hay diferencias en la capacidad de la cadena del cargador de arranque de la Raspberry Pi para acceder a los archivos en las subcarpetas para la flash eMMC y la tarjeta SD.

La solución, por tanto, es mover el kernel a la carpeta toplevel / "root" de la partición FAT de la eMMC Flash. (En Alpine Linux, el kernel está normalmente en la carpeta arranque subdirectorio):

Editar config.txt para decir:

disable_splash=1
boot_delay=0
gpu_mem=64
[pi2]
kernel=vmlinuz-rpi2
initramfs initramfs-rpi2-pi3g
[pi3]
kernel=vmlinuz-rpi2
initramfs initramfs-rpi2-pi3g
[pi3+]
kernel=vmlinuz-rpi2
initramfs initramfs-rpi2-pi3g
[todos]
incluir usercfg.txt

Mueve el kernel y el initramfs a la carpeta superior de la eMMC Flash:

imagen

Nota: hemos creado una versión personalizada del initramfs, para añadir claves para nuestro(s) paquete(s) personalizado(s) que se encuentran en la subcarpeta pi3g.

No es necesario mover el sistema de archivos del bucle (modloop-rpi2), el System.map-rpi2 o config-rpi2, de hecho habría que cambiar alguna configuración adicional para poder hacerlo.

Después de aplicar estos cambios, Alpine Linux arrancará en el módulo de computación.

Estaremos encantados de ayudarle a crear soluciones integradas sobre la Raspberry Pi: hardware y software. Póngase en contacto con nosotros.