Stage BUT3 - Centralisation et automatisation avancée des tests BIOS/Firmware


Stage BUT3 - Centralisation et automatisation avancée des tests BIOS/Firmware
Photo d'un PiKVM V4 Plus

Photo d'un PiKVM V4 Plus (https://pikvm.org/products/)

Entreprise :
Nom : Kontron Modular Computers SAS
Secteur : Systèmes embarqués, informatique industrielle
Lieu : La Garde (83)
Stage :
Année : 2024-2025
Durée : 14 semaines
Sujet : Centralisation et automatisation avancée des tests BIOS, firmware et OS
Compétences développées :
Linux embarqué : Modification de distribution, gestion de services, udev, overlayFS, Docker
Python avancé : Framework de test, sous-modules, décorateurs, automatisation
Déploiement web : Flask, Gunicorn, Nginx, reverse proxy, services SystemD
Systèmes embarqués : PiKVM, gestion série/USB, powerswitch, scripts d'installation
Tests et validation : Plans de test, scripts de déploiement, gestion d'erreurs, reproductibilité

Note: Ce stage s'inscrit dans la continuité directe de mon stage de BUT2.



Logo Kontron
Contexte et continuité

J'ai effectué mon stage de troisième année de BUT GEII chez Kontron Modular Computers, dans la continuité directe de mon stage de BUT2. L'objectif était d'aller plus loin dans l'automatisation des tests de BIOS, firmwares et systèmes d'exploitation, en centralisant les interfaces matérielles et en intégrant les outils développés précédemment dans un environnement de test.

Ce stage m'a permis de passer d'un prototype fonctionnel (PiKVM-Utils) à une solution déployée et maintenable, intégrée au framework de test de l'entreprise et adaptée à des campagnes de validation à grande échelle.

Architecture technique et centralisation

J'ai repensé l'architecture du banc de test pour centraliser toutes les interfaces sur un seul PiKVM, basé sur un Raspberry Pi CM4. Cette évolution a permis de regrouper la gestion de la ligne série, du contrôle d'alimentation (powerswitch), du flux vidéo HDMI et de l'USB OTG sur une seule plateforme, simplifiant la maintenance et la reproductibilité des tests.

Architecture et interactions du système de test, à l’issue du deuxième stage
Architecture et interactions du système de test, à l’issue du deuxième stage

Pour garantir la robustesse, j'ai modifié le système d'exploitation du PiKVM (PiKVM-OS) afin d'y intégrer nativement la gestion des lignes série (via Telnet), des multiprises pilotables (powerswitch), et d'assurer la persistance des configurations grâce à des scripts d'installation automatisés.

ENV{ID_PATH_TAG}=="plateform-fd500000_pcie-pci-0000_01_00_0-usb-0_1_2_3_3_1_1_0", SYMLINK+="ttyPort17"
Exemple de règle udev pour nommer un port série de façon stable

La gestion des ports série a nécessité la création de règles udev spécifiques pour garantir une identification stable des ports, même après redémarrage ou rebranchement matériel.

Développements logiciels et intégration

J'ai intégré la librairie PiKVM-Utils comme sous-module du framework de test Python interne à Kontron. Ce framework, basé sur unittest, permet de séquencer des plans de tests complexes, de générer automatiquement des rapports et de mutualiser les routines de test entre différents projets matériels.

Pour cela, j'ai enrichi la configuration YAML du framework afin de décrire précisément la présence et les paramètres des PiKVM, rendant l'intégration transparente pour les utilisateurs et facilitant la réutilisation des scripts sur de nouveaux systèmes.

J'ai également développé un gestionnaire web pour les powerswitchs en Python-Flask, déployé via Gunicorn et intégré au reverse proxy Nginx du PiKVM. Cette interface permet de piloter à distance l'alimentation des machines à tester, tout en restant compatible avec les outils existants.

Automatisation des tests et déploiement

J'ai automatisé l'exécution de plans de tests bas-niveau, notamment sur les firmwares (PBIT, UEFI), en développant des scripts capables de naviguer dans les menus du BIOS, de vérifier l'intégrité des options et de flasher des firmwares à distance. L'utilisation de décorateurs Python a permis de clarifier la documentation des tests et de distinguer les tests automatiques des tests nécessitant une intervention humaine.

J'ai également conçu KDeployer, un outil de déploiement automatisé s'appuyant sur la configuration du framework de test. Il permet de préparer et d'installer des systèmes d'exploitation ou des firmwares sur les machines cibles, en exploitant l'USB OTG du PiKVM pour simuler une clé USB bootable.

Bilan technique et perspectives

Ce stage m'a permis de maîtriser la centralisation des interfaces matérielles sur une plateforme unique, la modification d'une distribution Linux embarquée (PiKVM-OS), l'intégration de services web légers (Flask, Gunicorn, Nginx) et la gestion avancée de configurations pour des campagnes de tests automatisés.

J'ai pu valider la robustesse de la solution en conditions réelles, sur des plans de tests comprenant plusieurs dizaines de cas, et en assurant la traçabilité et la reproductibilité des résultats. Les perspectives d'amélioration identifiées concernent la standardisation des formats de sortie des firmwares pour faciliter l'automatisation, et l'extension de la solution à d'autres environnements matériels.