Démarrage de Alpine Linux sur le module de calcul Raspberry Pi

Dans le projet que nous réalisons pour un client, nous utilisons le module de calcul Raspberry Pi, ainsi qu'une carte porteuse de module de calcul personnalisée (appelée le PCCB - Pi Control Carrier Board) qui fournit RS485, CAN, RS232, LAN, USB et un abaisseur de tension pour des tensions d'entrée de 6 - 24 V. (Si vous êtes intéressé par du matériel personnalisé et par des services d'assistance technique, veuillez contacter le service clientèle de l'entreprise. Développement embarqué Raspberry Pi, veuillez nous contacter.. La conversation initiale avec nous sera gratuite pour vous, et pourrait vous apporter des idées et des renseignements précieux).

Comme système d'exploitation, nous avons décidé d'utiliser Alpine Linux. En raison de sa nature de lecture seule et de résident RAM, il convient parfaitement à une solution intégrée et durable qui veut ménager la mémoire Flash.

Le PCCB offre la possibilité de démarrer à partir d'une carte SD (avec le module de calcul lite), et de démarrer à partir de la mémoire flash eMMC intégrée sur les modules de calcul "normaux".

Alors que le démarrage à partir de la carte SD fonctionne sans problème, lorsque nous avons essayé de démarrer à partir de la carte eMMC Flash, nous avons rencontré des problèmes.

Comme vous le savez peut-être, Alpine Linux (par défaut) réside entièrement sur la partition FAT de la carte SD.

image

Le problème : l'écran reste noir, la LED ACT clignote 7 fois.

Avec l'approche consistant à simplement copier les fichiers utilisés sur la carte SD vers la carte eMMC (en utilisant l'outil de démarrage Raspberry Pi rpiboot sous Windows, pour monter la carte eMMC du module de calcul), le module de calcul n'a pas démarré.

Il affiche un écran noir, et le voyant ACT clignote sept fois, avec une pause, puis il clignote à nouveau sept fois.

Conseil cette page sur elinux.orgnous pouvons voir que kernel.img n'a pas été trouvé. Le chargeur de démarrage de Raspberry Pi n'est pas capable de localiser le noyau, et donc incapable de le démarrer.

L'écran reste noir parce que les écrans d'accueil sont normalement désactivés dans le système d'exploitation. config.txt livré avec Alpine Linux (disable_splash=1), sinon vous obtiendrez un écran arc-en-ciel.

La solution : déplacer le noyau et les initramfs dans le dossier principal.

Apparemment, il existe des différences dans la capacité de la chaîne du chargeur de démarrage du Raspberry Pi à accéder aux fichiers dans les sous-dossiers pour la flash eMMC et la carte SD.

La solution consiste donc à déplacer le noyau vers le dossier toplevel / "root" de la partition eMMC Flash FAT. (Sous Alpine Linux, le noyau se trouve normalement dans le dossier démarrer sous-répertoire) :

Modifier config.txt pour dire :

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
[tous]
inclure usercfg.txt

Déplacez le noyau et l'initramfs dans le dossier supérieur de la clé eMMC :

image

Note : nous avons créé une version personnalisée de l'initramfs, afin d'ajouter des clés pour nos paquets personnalisés qui sont situés dans le sous-dossier pi3g.

Il n'est pas nécessaire de déplacer le système de fichiers de la boucle (modloop-rpi2), le System.map-rpi2 ou le config-rpi2, il faudrait en effet modifier certaines configurations supplémentaires pour pouvoir le faire.

Après avoir appliqué ces changements, Alpine Linux démarrera sur le module de calcul.

Nous sommes heureux de vous aider à construire des solutions embarquées à partir du Raspberry Pi - matériel et logiciel. Veuillez prendre contact avec nous.