Optimisation d’un système Linux industriel

Publié par cpb
sept 27 2013

J’ai présenté ce matin une conférence « Optimisation d’un système Linux industriel » dans le cadre d’un séminaire Cap’tronic, LEA Valley et ID4CAR à Nantes. Les slides de ma présentation  sont disponibles. Je compte présenter plus en détails certains thèmes (accélération du boot, empreinte mémoire, etc.) dans des articles à venir.

Suivant :

Précédent :

3 Réponses

  1. Remi dit :

    Bonjour,

    Votre site est super enrichissant ! merci :) !

    J’ai une petite question qui me passe par la tête, pour un système industriel linux, robuste qui ne risque pas de faire un « kernel panic » en cas de coupure électrique.
    Que me conseillerez-vous ?
    Au niveau matériel, plus BeagleBone Black ou Raspberry PI ?
    Au niveau logiciel, quelle système d’exploitation linux est le plus fiable pour l’industriel ?

    Ce serait génial si vous pouvez prendre le temps de me répondre =)

    • cpb dit :

      Bonjour,

      Pour qu’un système soit résistant aux risques de coupures électriques, il est indispensable que tout ce qui représente le système proprement dit (noyau, bibliothèques, utilitaires, scripts de démarrage, application principale, etc.) soit stocké sur une partition qui reste montée en lecture seule. Pour cela, on peut utiliser l’option « ro » dans les paramètres de boot du kernel.

      Les fichiers qui doivent être modifiés pendant l’exécution du système sans persistance au reboot (/var/run, /var/log, /tmp, etc.) seront stockés sur des ramdisks (montés avec le système de fichiers tmpfs par exemple).

      Enfin les données qui doivent être modifiables et persistantes seront stockées sur des partitions que l’on monte temporairement en lecture-écriture au moment de la sauvegarde avant de les remonter en lecture-seule.

      Pour un client, j’ai construit il y a quelques temps un système où les données produites pendant l’utilisation sont stockées sur un ramdisk. Une fois par minute on monte temporairement une partition de sauvegarde où l’on écrit les données modifiées. Une fois la partition démontée, on monte une seconde partition de sauvegarde pour y écrire la même chose. En cas de crash pendant l’écriture nous sommes sûrs d’avoir une partition correcte.

      Pour une application industrielle, le Raspberry Pi ne convient pas. Ses composants ne supportent pas une gamme de température étendue, et ses entrées-sorties sont plutôt orientées media player qu’industrie. Je pense que le BeagleBone Black est un peu plus adapté (même si ce n’est pas du matériel durci), il contient directement une mémoire flash eMMC sans nécessiter de carte SD externe (fragile, sans compter les problèmes de mauvais contacts et vibrations). Ses possibilités d’entrées-sorties sont plus destinées à des interfaces industrielles (CAN, SPI, etc.)

      En ce qui concerne le système Linux à installer, je préfère dans les applications industrielle avoir une grande souplesse de mise au point et de configuration. Je conseille généralement d’utiliser un système « maison » construit à partir de Buildroot plutôt qu’une distribution toute faite. L’emploi de Yocto Project est également possible même si cela demande des ressources non négligeables (temps et espace de compilation) et un investissement intellectuel beaucoup plus important.

      • Remi dit :

        Bonjour,

        Merci beaucoup pour cette réponse ! J’ai déjà pensé à créer un système de partition en lecture seule pour le système mais je n’avais pas trouvé assez de sujets sur internet pour me lancer dans le projet. Grâce à vos explications ( mount -o ro ), tmpfs, etc… Je vais essayer de créer mon propre système avec Buildroot et essayer de faire ce système de partitions !

        J’ai utilisé le système Debian, par défaut sur Raspberry Pi, puis j’ai pris la distribution ArchLinux, plus dur à prendre en main, en espérant qu’il soit plus robuste. Je viens d’acheter un beaglebone afin de le tester, il est par défaut sous Angstrom. Je vais donc supprimer ce système pour utiliser Buildroot et faire mes premiers pas dessus !

        Encore merci de votre réponse, j’ai beaucoup de travail qui m’attendent et vos tutoriaux vont mettre utile :) !

URL de trackback pour cette page