2022 02 18 Container docker pour vieux BSP

From ArmadeusWiki
Revision as of 16:26, 18 February 2022 by FabienM (Talk | contribs) (Lancement de Docker)

Jump to: navigation, search

Introduction

Avec la pénurie de composants actuelle beaucoup d'entreprises sont contraintes de modifier leurs cartes électroniques de manière à supporter des variantes de leurs composants. Ce changement de composants impose souvent de retoucher le logiciel et de «remettre les mains dans le code» archivé depuis belle lurette. Le temps du développement n'étant pas celui de la production, les projets sont souvent «figés» de longue date. Et les machines qui permettaient de compiler le matériel sont totalement obsolète quand le produit est en «full-prod».

Réinstaller les vieux logiciels qui ont permis de développer le produit se révèle souvent une gageur sur des systèmes actuels.

Heureusement pour Armadeus, tout le développement de ses cartes se fait sous Linux. Et nous avons aujourd'hui un outils formidable pour faire tourner de vieux logiciel sur des systèmes «à jour» : la virtualisation légère, avec notamment le logiciel docker.

Docker, la virtualisation légère

Selon Wikipedia Docker est «une plateforme permettant de lancer certaines applications dans des conteneurs logiciels. Docker étend le format de conteneur Linux standard, LXC, avec une API de haut niveau fournissant une solution pratique de virtualisation qui exécute les processus de façon isolée2.»

Dit simplement, Docker est une machine virtuelle qui émule le système d'exploitation et les librairies mais pas les instructions machine. Ce qui en fait une machine virtuelle très performante.

Docker est très intéressant pour faire tourner un programme dans un environnement logiciels contrôlé avec des versions figées. C'est par exemple le cas pour compiler un BSP en utilisant une vieille distribution linux.

Compilation du BSP armadeus pour APF27

L'APF27 est typiquement la carte qui est encore actuellement en production chez armadeus mais dont le BSP n'est plus utilisable avec les outils actuels. À l'origine, le BSP de l'apf27 était compilé sur des version d'ubuntu datant des années 2010 !

Si l'on veut pouvoir reprendre son projet sans avoir à redémarrer un ordinateur de cette époque, voici comment faire avec docker. L'exemple de cet article a été réalisé sur une distribution ubuntu version Ubuntu 20.04.3 LTS.

Lancement de Docker

Docker est un «deamon» qu'il faut lancer en tâche de fond sur son système. Sur Ubuntu c'est systemd qui contrôle ça :

$ sudo systemctl start docker

Une fois que docker tourne en tâche de fond, on peu lancer directement une console `bash` ubuntu version 12.04 avec la commande

$ sudo docker run -it ubuntu:12.04 /bin/bash
root@1a5b88e1759c:/# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.5 LTS"
root@1a5b88e1759c:/#

Notre shell bash tourne bien dans une distribution ubuntu version 12.04. Pour visualiser les container actifs dans docker on lancera la commande suivant dans une autre console :

$ sudo docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES
1a5b88e1759c   ubuntu:12.04   "/bin/bash"   2 minutes ago   Up 2 minutes             stoic_noether

Si l'on quitte la console avec `exit`, le container sera mis en inactif et il faudra le relancer pour pouvoir s'y réattacher :

root@1a5b88e1759c:/# exit
exit
$ sudo docker container start stoic_noether
stoic_noether
$ sudo docker attach stoic_noether
root@1a5b88e1759c:/# history
    1  ls
    2  top
    3  cat /etc/lsb-release 
    4  exit
    5  history
root@1a5b88e1759c:/#