SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
1
Mise à jour d’un système Linux embarqué
« Over The Air »
Pierre-Jean Texier
Epita / LAFON - Journées Technologiques 2021
Mardi 20 Avril 2021
2
Pierre-Jean Texier

Tech Lead Linux Embarqué - LAFON (groupe Madic)

30 ans

FOSS enthusiast

Contributions : U-Boot, Kernel Linux, Yocto/OE, Buildroot …

Co-auteur "Yocto for Raspberry Pi" and contributeur/auteur GNU/Linux magazine France et Open
silicium (RIP)
3
Agenda

LAFON

Mise à jour des systèmes embarqués

Quelques projets Open-Source

SWUpdate

Cas d’usage

Conclusion
4
5
LAFON

En quelques mots ...
●
Créé en 1959
●
Fait partie du groupe Madic depuis 2006
●
Industriel français leader dans les Énergies automobiles (stockage, distribution et gestion) et
les Paiements sans surveillance
●
Environ 400 salariés

Métiers
6
Lafon

Implantations :
7
LAFON : BE paiement

2 services
●
Orienté monétique
●
Orienté système

Contraint par les normes … :
●
PCI DSS
●
GIE Carte Bancaire
●
P2PE
●
...

Contraint par la sécurité … :
●
Trustzone
●
Secure Boot, ...
●
...

Utilisation de l’Open Source
●
Qt (GUI)
●
Yocto/OpenEmbedded (build system)
●
cURL, libevent, libxml2, … (applicatif)

Un produit : APL3.5 (nouvelle génération)
●
Spécifications
8
LAFON : BE paiement
9
LAFON : APL3 « legacy »
10
Lafon : quelques clients
11
Mise à jour des systèmes embarqués
12
Pourquoi ?

Bugs logiciels

Ajouts de fonctionnalités

Correctifs liés à la sécurité (CVE) - https://cve.mitre.org/
CVE-2021-27138
13
Spécial dans l'embarqué ?

Accessibilité : pas d’accès physique ...

Disponibilité : pas toujours facile de prendre le contrôle ...

Alimentation : peu fiable dans certains cas ...

Connectivité : faible bande-passante

Durée de vie sur site : > 10 ans

...
14
Quels composants ?
15
Sur quelle base ?

Fichier
●
A éviter, difficile de garantir l’atomicité (-)

Gestionnaire de paquets
●
rpm, deb, opkg
●
Facile (+) mais difficile à maintenir -> gestion des dépendances (-)
●
Non Atomique et non applicable pour l’embarqué (-)

Container (docker, ...)
●
Concept intéressant (+)
●
Implique de gérer les applications dans un container (-)

Image complète
●
Cas le plus courant dans l’embarqué
●
Facile à mettre en œuvre (+)

Delta (xdelta3, zchunk, casync, librsync, ...)
●
Faible bande-passante (+)
●
Complexe (-)
●
Risques sur la corruption du système de fichiers principal (-)
16
Quels mécanismes ?

En fonctionnement :
●
Non Atomique (quelques exceptions)
●
Donwtime très court
●
Qui ? : Package managers, AGL

« Maintenance » : initrd/initramfs
●
Robuste
●
Retour en arrière impossible si erreur
●
Downtime -> long
●
Qui ? : Android (avant Nougat)

A/B ou Seamless update :
●
Robuste, mais coûteux en espace de
stockage
●
Retour en arrière possible si erreur
●
Downtime -> court
●
Toujours opérationnel
●
Qui ? : Android (depuis Nougat)
17
Et comment ?

Mises à jour sur site
●
Pas de connectivité
●
Accès physique :
●
Gestion par clé USB/carte SD
●
Interactif
●
Déplacement d’un technicien €€€

Mises à jour distantes : OTA
●
Pas d’accès physique :
●
HTTPS, FTP, SFTP, …
●
Pas ou peu d’interaction (forcé, planifié)
●
Serveur pour la gestion des périphériques :
●
Mise à jour programmée
●
Campagne de mise à jour
●
Inventaire des périphériques
●
Statut des périphériques
●
Version logicielle courante
●
Gestion des artefacts
18
Exigences clés

Doit être capable de mettre à jour l’ensemble des composants
●
Bootloader = dangereux

Doit s’interfacer avec le Bootloader (e.g Environnement U-Boot)

Doit être Robuste (coupures de courant et pertes de connexions réseau)
●
L’opération doit être atomique = Pas d’installation partielle

Ne doit pas rendre le périphérique inutilisable (Fail-safe)
●
Notion de Rollback

Doit disposer d’un espace pour les données persistentes (Stateless FS)
●
Partition dédiée

Doit être sécurisé
●
Empêcher une action non autorisée

Doit permettre une gestion Locale et Distante (OTA)

Doit permettre d’effectuer des tests (Sanity check) avant validation
19
Downtime
20
Exemple 1/4
21
Exemple 2/4
22
Exemple 3/4
23
Exemple 4/4
24
Exemple(s) ...
25
Robuste ?
26
Coupure de courant ?!
27
Coupure de courant ?!
28
Atomicité : schéma A/B
●
Démarrage sur A

Mise à jour de B

Coupure de courant !

Démarrage sur A

Mise à jour de B
29
Rollback ...
30
« Être capable de revenir sur une version stable (et fonctionnelle)
lors de la détection d’un problème »
31
Pour éviter ...
32
Pour éviter ...
33
Rollback : Quand ?
Plusieurs cas de figures :
●
Echec d’une mise à jour
●
Détecté par l’updater
●
Mise à jour réussie mais problème Noyau (Kernel Panic)
●
BUG logiciel !
●
Mise à jour réussie mais problème sur l’applicatif métier
●
BUG logiciel !
34
Rollback : Scénario
●
Démarrage sur A

Mise à jour de B
●
Mise à jour du flag active_partition (flag bootloader)

Reboot

Démarrage sur B

Détection de l’anomalie (kernel panic, sanity check, watchdog, ...)
●
Reboot

Rollback
●
Mise à jour du flag active_partition (flag bootloader)

Démarrage sur A
35
Rollback : fondamentaux !
Gestion des « Kernel panic » :
●
Utilisation de CONFIG_PANIC_TIMEOUT
●
Pour définir le timeout avant redémarrage sur un Kernel Panic
Sanity check :
●
Après la mise à jour, il faut vérifier si le système est opérationnel avant de valider celle-ci :
●
Vérification de l’applicatif métier (UI, services, serveur, ...),
●
Vérification de la configuration système (base de donnée, ...),
●
…
Gestion des défaillances :
●
Watchdog :
●
Pour détecter les « freezes »
●
Solution matérielle
●
« dev/watchdog »
Sans "panic timeout" Avec "panic timeout"
36
Rollback : fondamentaux !
Gestion des cycles de redémarrage répétitif : exemple avec U-Boot
●
Implémentation Bootcount Limit
●
bootcount : variable incrémentée à chaque (re)démarrage
●
bootlimit : pour définir le nombre maximal de redémarrage
●
altbootcmd : séquence alternative si bootcount > bootlimit
●
upgrade_available : pour activer/désactiver la gestion de bootcount
diff --git a/configs/sama5d27_som1_ek_mmc_defconfig
b/configs/sama5d27_som1_ek_mmc_defconfig
index 5176dbbb08..1302ebce9a 100644
--- a/configs/sama5d27_som1_ek_mmc_defconfig
+++ b/configs/sama5d27_som1_ek_mmc_defconfig
@@ -50,6 +50,9 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_DM=y
CONFIG_SPL_DM=y
CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_BOOTCOUNT_LIMIT=y
+CONFIG_BOOTCOUNT_ENV=y
+CONFIG_BOOTCOUNT_BOOTLIMIT=1
CONFIG_CLK=y
CONFIG_SPL_CLK=y
CONFIG_CLK_AT91=y
--
https://asciinema.org/a/407543
37
Sécurité
38
Rollback : fondamentaux !
De façon générale :
●
Gestion des compatibilités (Même matériel != Même produit)
●
Contrôle d’intégrité (sha256)
Sécurité :
●
Communication sécurisée (OTA)
●
Cryptographie (signature/vérification/chiffrement)
●
Secure Boot
●
garantir l’intégrité de l’ensemble des éléments de la chaîne de démarrage
pouvant être mis à jour.
39
Pour résumer ...
40
41
Quelques projets « Open Source »
42
Les plus connus ...
updatehub
Balena OS
mender updatehub
SWUpdate
RAUC
43
SWUpdate
44
SWUpdate ...

https://github.com/sbabic/swupdate

Maintenu par Stefano Babic de la société DENX

Bien documenté

Principalement écrit in C, avec un « binding » LUA

Client léger (environ 400 Ko)

Format simple : CPIO archive (.swu)

HTTP(S), FTP, SSH -> (libcurl) pour l’aspect réseau

SD/eMMC, UBI, Raw NAND, NOR/SPI NOR
« software update agent for embedded system »
45
… SWUpdate

Rollback non intégré (quelques implémentions disponibles)

IPC : Unix Domain Socket pour interagir avec le « core » (progression, inventaire, ...)

Mise à jour locale (USB et serveur web) ou distante (Hawkbit)

Interface graphique en Lua pour le mode recovery (RescueGUI)

Gestion scripts pre/post install

Gestion microcontrôleur en UART (ucfw), gestion maître/esclave (SWU forwarder) et beaucoup
d’autres « handlers »

Build system : Buildroot et Yocto/OE

De nombreux exemples (raspberrypi, sama5d27, wandboard, beaglobone)

https://swupdate.org/
46
Démo !
47
Démo : programme

Mise à jour via le webserver interne

Mise à jour via Hawkbit avec inventaire « custom »
...
identify : (
{ name = "manufacturer"; value = "EPITA"; },
{ name = "version"; value = "1.0.0"; },
{ name = "hardware"; value = "Microchip"; },
{ name = "model"; value = "SAMA5d27-SOM1-EK1"; }
);
...
48
Conclusion
49
Conclusion

Un mécanisme de mise à jour est obligatoire (le penser au début du projet)

Toujours déployer un logiciel bien testé (CI/CD) :
●
Gitlab,
●
TBOT,
●
Labgrid,
●
Jenkins,
●
…

Faire l’état de l’art en début de projet

Oublier les solutions « Maison »
●
Moins d’efforts, moins de coûts …
●
Utiliser un « framework » open source permet de bénéficier de la communauté (code review,
features, ...)
50
recrute !
51
Q&A
@texierp
@pjtexier

Contenu connexe

Tendances

QEMU - Binary Translation
QEMU - Binary Translation QEMU - Binary Translation
QEMU - Binary Translation Jiann-Fuh Liaw
 
Introduction to yocto
Introduction to yoctoIntroduction to yocto
Introduction to yoctoAlex Gonzalez
 
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバーBtrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバーFuminobu Takeyama
 
Embedded Recipes 2018 - swupdate: update your embedded device - Charles-Anto...
Embedded Recipes 2018 -  swupdate: update your embedded device - Charles-Anto...Embedded Recipes 2018 -  swupdate: update your embedded device - Charles-Anto...
Embedded Recipes 2018 - swupdate: update your embedded device - Charles-Anto...Anne Nicolas
 
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CSW2017 Qinghao tang+Xinlei ying vmware_escape_finalCSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CSW2017 Qinghao tang+Xinlei ying vmware_escape_finalCanSecWest
 
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessNanik Tolaram
 
Advanced Namespaces and cgroups
Advanced Namespaces and cgroupsAdvanced Namespaces and cgroups
Advanced Namespaces and cgroupsKernel TLV
 
Coredns nodecache - A highly-available Node-cache DNS server
Coredns nodecache - A highly-available Node-cache DNS serverCoredns nodecache - A highly-available Node-cache DNS server
Coredns nodecache - A highly-available Node-cache DNS serverYann Hamon
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeTeerapat Khunpech
 
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月VirtualTech Japan Inc.
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3Linaro
 
ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)The Linux Foundation
 
Linux power management: are you doing it right?
Linux power management: are you doing it right?Linux power management: are you doing it right?
Linux power management: are you doing it right?Chris Simmonds
 
Systemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveSystemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveAlison Chaiken
 
Android power management
Android power managementAndroid power management
Android power managementJerrin George
 
Android Storage - Vold
Android Storage - VoldAndroid Storage - Vold
Android Storage - VoldWilliam Lee
 
Basic of virtual memory of Linux
Basic of virtual memory of LinuxBasic of virtual memory of Linux
Basic of virtual memory of LinuxTetsuyuki Kobayashi
 

Tendances (20)

QEMU - Binary Translation
QEMU - Binary Translation QEMU - Binary Translation
QEMU - Binary Translation
 
Introduction to yocto
Introduction to yoctoIntroduction to yocto
Introduction to yocto
 
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバーBtrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
 
Embedded Recipes 2018 - swupdate: update your embedded device - Charles-Anto...
Embedded Recipes 2018 -  swupdate: update your embedded device - Charles-Anto...Embedded Recipes 2018 -  swupdate: update your embedded device - Charles-Anto...
Embedded Recipes 2018 - swupdate: update your embedded device - Charles-Anto...
 
SystemV vs systemd
SystemV vs systemdSystemV vs systemd
SystemV vs systemd
 
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CSW2017 Qinghao tang+Xinlei ying vmware_escape_finalCSW2017 Qinghao tang+Xinlei ying vmware_escape_final
CSW2017 Qinghao tang+Xinlei ying vmware_escape_final
 
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting Process
 
Advanced Namespaces and cgroups
Advanced Namespaces and cgroupsAdvanced Namespaces and cgroups
Advanced Namespaces and cgroups
 
Qt creatorでremote_debug
Qt creatorでremote_debugQt creatorでremote_debug
Qt creatorでremote_debug
 
Coredns nodecache - A highly-available Node-cache DNS server
Coredns nodecache - A highly-available Node-cache DNS serverCoredns nodecache - A highly-available Node-cache DNS server
Coredns nodecache - A highly-available Node-cache DNS server
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTree
 
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
 
ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)
 
Linux power management: are you doing it right?
Linux power management: are you doing it right?Linux power management: are you doing it right?
Linux power management: are you doing it right?
 
Systemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveSystemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to love
 
Android power management
Android power managementAndroid power management
Android power management
 
Android Storage - Vold
Android Storage - VoldAndroid Storage - Vold
Android Storage - Vold
 
QEMU in Cross building
QEMU in Cross buildingQEMU in Cross building
QEMU in Cross building
 
Basic of virtual memory of Linux
Basic of virtual memory of LinuxBasic of virtual memory of Linux
Basic of virtual memory of Linux
 

Similaire à Mise à jour d’un système Linux embarqué « Over The Air »

Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Solution d'OTA
Solution d'OTASolution d'OTA
Solution d'OTASidereo
 
Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linuxembedded-linux-bdx
 
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...Trésor-Dux LEBANDA
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Pierre-jean Texier
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introductionsabrine_hamdi
 
Les solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarquésLes solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarquésAlexandre LAHAYE
 
Mdl ocsinventory 20100330
Mdl ocsinventory 20100330Mdl ocsinventory 20100330
Mdl ocsinventory 20100330robertpluss
 
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel librePierre Ficheux
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2tikok974
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2tikok974
 

Similaire à Mise à jour d’un système Linux embarqué « Over The Air » (20)

Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Solution d'OTA
Solution d'OTASolution d'OTA
Solution d'OTA
 
Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linux
 
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
Mise en place d’un laboratoire de sécurité « Scénarios d’Attaques et Détectio...
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Fully Automated Nagios Jm2L 2009
Fully Automated Nagios Jm2L 2009Fully Automated Nagios Jm2L 2009
Fully Automated Nagios Jm2L 2009
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
Parinux 2009
Parinux 2009Parinux 2009
Parinux 2009
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introduction
 
Les solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarquésLes solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarqués
 
Installation open erp
Installation open erpInstallation open erp
Installation open erp
 
Mdl ocsinventory 20100330
Mdl ocsinventory 20100330Mdl ocsinventory 20100330
Mdl ocsinventory 20100330
 
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2Mdl ocsinventory 20100330-2
Mdl ocsinventory 20100330-2
 

Dernier

Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEBONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEgharebikram98
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 

Dernier (14)

Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEBONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 

Mise à jour d’un système Linux embarqué « Over The Air »

  • 1. 1 Mise à jour d’un système Linux embarqué « Over The Air » Pierre-Jean Texier Epita / LAFON - Journées Technologiques 2021 Mardi 20 Avril 2021
  • 2. 2 Pierre-Jean Texier  Tech Lead Linux Embarqué - LAFON (groupe Madic)  30 ans  FOSS enthusiast  Contributions : U-Boot, Kernel Linux, Yocto/OE, Buildroot …  Co-auteur "Yocto for Raspberry Pi" and contributeur/auteur GNU/Linux magazine France et Open silicium (RIP)
  • 3. 3 Agenda  LAFON  Mise à jour des systèmes embarqués  Quelques projets Open-Source  SWUpdate  Cas d’usage  Conclusion
  • 4. 4
  • 5. 5 LAFON  En quelques mots ... ● Créé en 1959 ● Fait partie du groupe Madic depuis 2006 ● Industriel français leader dans les Énergies automobiles (stockage, distribution et gestion) et les Paiements sans surveillance ● Environ 400 salariés  Métiers
  • 7. 7 LAFON : BE paiement  2 services ● Orienté monétique ● Orienté système  Contraint par les normes … : ● PCI DSS ● GIE Carte Bancaire ● P2PE ● ...  Contraint par la sécurité … : ● Trustzone ● Secure Boot, ... ● ...  Utilisation de l’Open Source ● Qt (GUI) ● Yocto/OpenEmbedded (build system) ● cURL, libevent, libxml2, … (applicatif)  Un produit : APL3.5 (nouvelle génération) ● Spécifications
  • 8. 8 LAFON : BE paiement
  • 9. 9 LAFON : APL3 « legacy »
  • 11. 11 Mise à jour des systèmes embarqués
  • 12. 12 Pourquoi ?  Bugs logiciels  Ajouts de fonctionnalités  Correctifs liés à la sécurité (CVE) - https://cve.mitre.org/ CVE-2021-27138
  • 13. 13 Spécial dans l'embarqué ?  Accessibilité : pas d’accès physique ...  Disponibilité : pas toujours facile de prendre le contrôle ...  Alimentation : peu fiable dans certains cas ...  Connectivité : faible bande-passante  Durée de vie sur site : > 10 ans  ...
  • 15. 15 Sur quelle base ?  Fichier ● A éviter, difficile de garantir l’atomicité (-)  Gestionnaire de paquets ● rpm, deb, opkg ● Facile (+) mais difficile à maintenir -> gestion des dépendances (-) ● Non Atomique et non applicable pour l’embarqué (-)  Container (docker, ...) ● Concept intéressant (+) ● Implique de gérer les applications dans un container (-)  Image complète ● Cas le plus courant dans l’embarqué ● Facile à mettre en œuvre (+)  Delta (xdelta3, zchunk, casync, librsync, ...) ● Faible bande-passante (+) ● Complexe (-) ● Risques sur la corruption du système de fichiers principal (-)
  • 16. 16 Quels mécanismes ?  En fonctionnement : ● Non Atomique (quelques exceptions) ● Donwtime très court ● Qui ? : Package managers, AGL  « Maintenance » : initrd/initramfs ● Robuste ● Retour en arrière impossible si erreur ● Downtime -> long ● Qui ? : Android (avant Nougat)  A/B ou Seamless update : ● Robuste, mais coûteux en espace de stockage ● Retour en arrière possible si erreur ● Downtime -> court ● Toujours opérationnel ● Qui ? : Android (depuis Nougat)
  • 17. 17 Et comment ?  Mises à jour sur site ● Pas de connectivité ● Accès physique : ● Gestion par clé USB/carte SD ● Interactif ● Déplacement d’un technicien €€€  Mises à jour distantes : OTA ● Pas d’accès physique : ● HTTPS, FTP, SFTP, … ● Pas ou peu d’interaction (forcé, planifié) ● Serveur pour la gestion des périphériques : ● Mise à jour programmée ● Campagne de mise à jour ● Inventaire des périphériques ● Statut des périphériques ● Version logicielle courante ● Gestion des artefacts
  • 18. 18 Exigences clés  Doit être capable de mettre à jour l’ensemble des composants ● Bootloader = dangereux  Doit s’interfacer avec le Bootloader (e.g Environnement U-Boot)  Doit être Robuste (coupures de courant et pertes de connexions réseau) ● L’opération doit être atomique = Pas d’installation partielle  Ne doit pas rendre le périphérique inutilisable (Fail-safe) ● Notion de Rollback  Doit disposer d’un espace pour les données persistentes (Stateless FS) ● Partition dédiée  Doit être sécurisé ● Empêcher une action non autorisée  Doit permettre une gestion Locale et Distante (OTA)  Doit permettre d’effectuer des tests (Sanity check) avant validation
  • 28. 28 Atomicité : schéma A/B ● Démarrage sur A  Mise à jour de B  Coupure de courant !  Démarrage sur A  Mise à jour de B
  • 30. 30 « Être capable de revenir sur une version stable (et fonctionnelle) lors de la détection d’un problème »
  • 33. 33 Rollback : Quand ? Plusieurs cas de figures : ● Echec d’une mise à jour ● Détecté par l’updater ● Mise à jour réussie mais problème Noyau (Kernel Panic) ● BUG logiciel ! ● Mise à jour réussie mais problème sur l’applicatif métier ● BUG logiciel !
  • 34. 34 Rollback : Scénario ● Démarrage sur A  Mise à jour de B ● Mise à jour du flag active_partition (flag bootloader)  Reboot  Démarrage sur B  Détection de l’anomalie (kernel panic, sanity check, watchdog, ...) ● Reboot  Rollback ● Mise à jour du flag active_partition (flag bootloader)  Démarrage sur A
  • 35. 35 Rollback : fondamentaux ! Gestion des « Kernel panic » : ● Utilisation de CONFIG_PANIC_TIMEOUT ● Pour définir le timeout avant redémarrage sur un Kernel Panic Sanity check : ● Après la mise à jour, il faut vérifier si le système est opérationnel avant de valider celle-ci : ● Vérification de l’applicatif métier (UI, services, serveur, ...), ● Vérification de la configuration système (base de donnée, ...), ● … Gestion des défaillances : ● Watchdog : ● Pour détecter les « freezes » ● Solution matérielle ● « dev/watchdog » Sans "panic timeout" Avec "panic timeout"
  • 36. 36 Rollback : fondamentaux ! Gestion des cycles de redémarrage répétitif : exemple avec U-Boot ● Implémentation Bootcount Limit ● bootcount : variable incrémentée à chaque (re)démarrage ● bootlimit : pour définir le nombre maximal de redémarrage ● altbootcmd : séquence alternative si bootcount > bootlimit ● upgrade_available : pour activer/désactiver la gestion de bootcount diff --git a/configs/sama5d27_som1_ek_mmc_defconfig b/configs/sama5d27_som1_ek_mmc_defconfig index 5176dbbb08..1302ebce9a 100644 --- a/configs/sama5d27_som1_ek_mmc_defconfig +++ b/configs/sama5d27_som1_ek_mmc_defconfig @@ -50,6 +50,9 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_DM=y CONFIG_SPL_DM=y CONFIG_SPL_DM_SEQ_ALIAS=y +CONFIG_BOOTCOUNT_LIMIT=y +CONFIG_BOOTCOUNT_ENV=y +CONFIG_BOOTCOUNT_BOOTLIMIT=1 CONFIG_CLK=y CONFIG_SPL_CLK=y CONFIG_CLK_AT91=y -- https://asciinema.org/a/407543
  • 38. 38 Rollback : fondamentaux ! De façon générale : ● Gestion des compatibilités (Même matériel != Même produit) ● Contrôle d’intégrité (sha256) Sécurité : ● Communication sécurisée (OTA) ● Cryptographie (signature/vérification/chiffrement) ● Secure Boot ● garantir l’intégrité de l’ensemble des éléments de la chaîne de démarrage pouvant être mis à jour.
  • 40. 40
  • 41. 41 Quelques projets « Open Source »
  • 42. 42 Les plus connus ... updatehub Balena OS mender updatehub SWUpdate RAUC
  • 44. 44 SWUpdate ...  https://github.com/sbabic/swupdate  Maintenu par Stefano Babic de la société DENX  Bien documenté  Principalement écrit in C, avec un « binding » LUA  Client léger (environ 400 Ko)  Format simple : CPIO archive (.swu)  HTTP(S), FTP, SSH -> (libcurl) pour l’aspect réseau  SD/eMMC, UBI, Raw NAND, NOR/SPI NOR « software update agent for embedded system »
  • 45. 45 … SWUpdate  Rollback non intégré (quelques implémentions disponibles)  IPC : Unix Domain Socket pour interagir avec le « core » (progression, inventaire, ...)  Mise à jour locale (USB et serveur web) ou distante (Hawkbit)  Interface graphique en Lua pour le mode recovery (RescueGUI)  Gestion scripts pre/post install  Gestion microcontrôleur en UART (ucfw), gestion maître/esclave (SWU forwarder) et beaucoup d’autres « handlers »  Build system : Buildroot et Yocto/OE  De nombreux exemples (raspberrypi, sama5d27, wandboard, beaglobone)  https://swupdate.org/
  • 47. 47 Démo : programme  Mise à jour via le webserver interne  Mise à jour via Hawkbit avec inventaire « custom » ... identify : ( { name = "manufacturer"; value = "EPITA"; }, { name = "version"; value = "1.0.0"; }, { name = "hardware"; value = "Microchip"; }, { name = "model"; value = "SAMA5d27-SOM1-EK1"; } ); ...
  • 49. 49 Conclusion  Un mécanisme de mise à jour est obligatoire (le penser au début du projet)  Toujours déployer un logiciel bien testé (CI/CD) : ● Gitlab, ● TBOT, ● Labgrid, ● Jenkins, ● …  Faire l’état de l’art en début de projet  Oublier les solutions « Maison » ● Moins d’efforts, moins de coûts … ● Utiliser un « framework » open source permet de bénéficier de la communauté (code review, features, ...)