In English
[ED3L - Logo] [ED3L - Etude et développement - Linux et Logiciels Libres]

 

Les formations proposées autour des systèmes GNU/Linux, du langage C, et des systèmes embarqués sont le fruit de plus de 15 ans d'expérience dans ces domaines.

Cette activité a fait l'objet d'une déclaration enregistrée sous le numéro 84 69 16875 69 auprès du préfet de la région Rhône-Alpes.

Les conditions et les tarifs varient selon les conditions (nombre de stagiaires, matériel disponible/fourni, ...), les demandes de personnalisation du contenu, et la localisation (frais de déplacement). Le tarif "de base" est autour de 840€ par jour (7 heures) pour une formation "intra-entreprise" pour 2 à 4 stagiaires, hors frais de déplacement et d'hébergement éventuels et hors matériel.
En cas de fourniture de matériel (systèmes embarqués par exemple), celui-ci est conservé par les stagiaires en fin de formation.
Les formations peuvent être suivies soit à distance, soit directement dans vos locaux.
La durée de ces formations est modulable selon vos connaissances initiales, votre maîtrise des prérequis, et le nombre d'exercices pratiques effectués pendant la formation.
En cas de suivi à distance les formations peuvent être découpées en sessions réparties selon un emploi du temps défini selon nos disponibilités respectives.
N'hésitez pas à me contacter par mail ou par téléphone pour connaître les disponibilités et planifier votre formation.

Chaque formation est précédée par un questionnaire permettant de préciser vos attentes vis-à-vis de la formation et de valider l'adéquation avec vos connaissances actuelles et vos objectifs.
En fin de chaque chapitre et en fin de formation, un questionnaire nous permet de valider vos acquis et de reprendre les éléments qui n'ont pas été suffisament clairs pendant la formation.

Un support de cours listant tous les points clés de la formation est fourni en format PDF. Attention, il ne s'agit pas d'une transcription écrite du contenu de la formation.
Les éléments pédagigiques (exemples, exercices, corrigés, ...) sont mis à disposition tout au long de la formation.

La liste des formations disponibles, ainsi que les plans de cours, sont indicatifs.
Le contenu peut être adapté à vos besoins spécifiques notamment en fonction de vos projets et des applications qui vous intéressent.

 
Les logiciels libres, une alternative viable
Durée : Entre 2 heures et 1 jour
Prérequis : Aucun

Cette formation peut aussi être dispensée sous forme de séminaire, de présentation, ou de sensibilisation aux sujets des logiciels libres, de l'open source, des modèles économiques associés, des licences utilisées et des droits et devoirs qui en découlent

Plan :
  • Introduction
    • Historique
    • Omniprésents
  • Enjeux
    • Formats ouverts
    • Interopérabilité : partage et échanges
    • Pérénité
    • Souveraineté
  • Libre et ouvert en pratique
    • Les licences
    • Conséquences
    • FSF et OSI
    • Matériel
    • Économie et société
  • Les modèles économiques
    • R&D
    • Support technique
    • Services
    • Matériel
    • Saas
    • Cas pratiques, quelques exemples très connus
 
Systèmes GNU/Linux - Les bases
Durée : Entre 1/2 journée et 1 jour
Prérequis : Aucun

Cette formation est un pré-requis aux formations suivantes :
  • Systèmes GNU/Linux : le Shell
  • Administration des systèmes GNU/Linux
  • Programmation C - Systèmes GNU/Linux
  • Programmation C - Drivers et Noyau Linux
  • Systèmes GNU/Linux en embarqué
Les travaux pratiques seront effectués sur un système Devuan GNU/Linux.

Plan :
  • Introduction
    • Historique des systèmes UNIX
  • Généralités
    • GNU
    • Linux
    • POSIX Compliant
    • Distributions GNU/Linux
    • Les licences
  • Architectures des systèmes GNU/Linux
    • Le noyau Linux au coeur du système
    • Syscalls et LibC
    • Modularité extrème
  • Principes généraux et fichiers
    • Tout est fichier
    • Fichiers spéciaux
    • Systèmes de fichiers
  • Démarrage du système
    • Étapes du démarrage
    • Systèmes d'init
    • Shell ou coquille vide ?
 
Systèmes GNU/Linux - Le Shell
Durée : 2 à 3 jours
Prérequis : Systèmes GNU/Linux - Les bases

Cette formation aborde en détail le shell bash et les commandes les plus courantes utilisées sur les systèmes GNU/Linux (et d'autres).
Les travaux pratiques seront effectués sur un système Devuan GNU/Linux.

Plan :
  • Le shell Bash
    • Shells : historique
    • Bash : introduction et astuces
    • Répertoires
    • Globing, crochets et accolades
    • Variables locales et variables d'environnement
    • Configuration du shell
  • La ligne de commande
    • Plusieurs niveaux de complexité
    • Redirections
    • Protection et substitution
    • Notion de Jobs
  • Tests, structures de contrôle et scripts
    • Principes généraux et tests
    • Les différentes structures de contrôle
    • Fonctions et Scripts
  • Commandes : partie 1
    • Opérations sur les fichiers
    • Processus et signaux
    • Affichage de fichiers
    • Transformation de fichiers
 
Administration des systèmes GNU/Linux
Durée : 2 à 5 jours
Prérequis : Systèmes GNU/Linux - Le Shell

Plus que l'exploration détaillé d'une (ou plusieurs) solution spécifique ("clés en main") dédiée à l'administration de systèmes GNU/Linux, cette formation a pour objectif de vous faire découvrir et maîtriser les principes et les rouages internes du fonctionnement des systèmes GNU/Linux pour vous permettre de prendre en main et de comprendre n'importe quelle solution ou outil d'administration.
Attention, certaines parties du plan, notées "(Hors formation)" ne sont pas détaillées pendant cette formation et seulement évoquées pour référence et approfondissement par les stagiaires après la formation.
Les travaux pratiques seront effectués sur un système Devuan GNU/Linux.

Plan :
  • Bases
    • Qu'est-ce que "Administrer un système GNU/Linux"
    • Noyau Linux
    • Informations système
    • Les utilisateurs, groupes et autres droits
    • Arborescence et Linux FHS
    • Disques et systèmes de fichiers
    • Système d'init
    • Connexion à distance
    • Gestionnaires de paquets
    • Services : bases communes
    • Gestion des processus
    • Réseau : introduction
    • Gestion du temps
  • Sécurité
    • DNS
    • SSH
    • Firewall : iptables et netfilter
    • Clés PGP, GPG, signatures et identification
    • VPN
    • SSL, certificats, HTTPS (Hors formation)
    • Détections d'intrusions (IDS/IPS) et pots de miel
    • SE-Linux et consorts (Hors formation)
  • Stockage, sauvegardes et partage de données
    • RAID et LVM
    • NFS, Samba et partage réseau
    • Synchronisation et sauvegardes
    • Solutions "Cloud"
    • FTP et TFTP
    • Git (Hors formation)
  • Services et réseaux
    • Bases
    • Apache, PHP et consorts
    • Alternatives à apache
    • Bases de données MySQL
    • Alternatives à MySQL (Hors formation)
    • Mails
  • Introduction à l'administration de parcs de machines
    • Gestion des services/parc informatiques (Hors formation)
    • Noyau Linux : installation et mise à jour
    • Installation et duplication manuelle de systèmes
    • Supervision
    • Installation et configuration automatique (Hors formation)
    • Introduction à la virtualisation
 
Systèmes de gestion de versions (git et autres)
Durée : 1 jour
Prérequis : Systèmes GNU/Linux - Les bases

Cette formation présente différentes solutions (libres) de gestion de versions de code source utilisées sur les systèmes GNU/Linux (et d'autres).
Les travaux pratiques seront effectués sur un système Devuan GNU/Linux.

Plan :
  • Introduction et tour d'horizon
    • Principes et Intérêts
    • CVS
    • Subversion (svn)
    • Bazaar
    • Git
    • Forges logicielles
  • CVS et Subversion : des solutions centralisées
    • CVS côté client
    • CVS côté serveur
    • SVN côté client
    • SVN côté serveur
    • Solutions hébergées
  • Bazaar et Git : des colutions décentralisées
    • Bazaar
    • Git
    • Git et intégration continue
    • Solutions hébergées
  • Exercices pratiques : SVN versus Git
    • Premiers pas avec SVN
    • Et avec Git ?
    • Git : un deuxième pas
    • Mettre ses source en ligne
 
Systèmes de fichiers
Durée : 1 jour
Prérequis : Bonne connaissance des systèmes GNU/Linux

L'objectif de cette formation est de comprendre les principes généraux de fonctionnement des systèmes de fichiers, puis d'explorer un peu plus en détail les spécificités des systèmes ext* utilisés avec le noyau Linux.

Les travaux pratiques seront effectués sur des cartes utilisant un SoC ARM, dont le choix peut varier en fonction des préférences des stagiaires et des disponibilités des différentes solutions.

Plan :
  • Introduction
    • Un peu d'histoire
    • Des solutions multiples ...
    • Et de grandes différences
  • Linux : FS - La théorie
    • Tout est fichier
    • Systèmes de fichiers
    • Accès : points de montage
    • Commandes mal connues
  • Linux : FS - Les commandes utiles
    • Configuration du noyau
    • Informations système
    • Stockage sous-jacent
    • Gestion des systèmes de fichiers
  • En pratique
    • Création et montage - tmpfs et options de mount
    • FS on file : Extended (ext) filesystem version 4 (ext4) example.
    • Création et suppression de fichiers
    • dumpe2fs et debugfs
 
Programmation C - Bases
Durée : 3 à 5 jours
Prérequis : Algorithmique ou connaissance d'un autre langage de programmation.

Découverte des bases du language C et de ses spécificités.

En cas de besoin un cours "Algorithmique et découverte des langages de programmation" peut être créé.

Ce cours est un prérequis pour les cours "Programmation C - Systèmes GNU/Linux" et "Programmation C - Niveau avancé".

Les travaux pratiques seront effectués sur un système Devuan GNU/Linux en utilisant la chaîne de compilation GNU.

Plan et points abordés :
  • Présentation du langage
    • Historique
    • Le langage C, principes généraux
    • Architecture d'un programme
    • Compilation : principe et bases
    • Syntaxe du C
    • Variables et types de données
    • Mots réservés
  • Premier niveau de complexité
    • Opérations et arithmétique simple
    • Structures de contrôle
    • Fonctions "simples"
    • Portée des variables
  • De mémoire ...
    • Stuctures, Énumérations et Unions
    • Pointeurs et allocation dynamique
    • Tableaux
    • Chaînes de caractères
    • Listes et types de données complexes
  • Un peu plus loin
    • Bibliothèque C
    • Entrées et sorties standard
    • Opérations binaires et arithmétique avancée
    • Fonctions, utilisation avancée
    • Introduction aux processus
    • Interactions avec le système
  • Préprocesseur et Compilation
    (Tout au long de la formation)
    • Makefiles
    • Étapes de compilation et édition des liens
    • Compilation conditionnelle et Macros
 
Programmation C - Niveau avancé
Durée : 2 à 3 jours
Prérequis : Programmation C - Bases

Pour aller plus loin et découvrir toutes les subtilités du language C, au delà de l'écriture du code C.

Ce cours et le cours "Programmation C - Systèmes GNU/Linux" sont complémentaires et peuvent être regroupés en un unique cours d'une durée de 4 à 5 jours.
Les travaux pratiques seront effectués sur un système Devuan GNU/Linux en utilisant la chaîne de compilation GNU.

Plan :
  • Rappels et plus
    • Systèmes UNIX et GNU/Linux
    • Le langage C
    • Architecture d'un programme
    • Syntaxe du C
    • Mots clés
    • Extensions GNU GCC
  • Préprocesseur et Compilation
    • Makefiles
    • Étapes de compilation et édition des liens
    • Compilation conditionnelle et Macros
    • Organisation, binaire et mémoire
  • De mémoire ...
    • Stuctures, Énumérations et Unions
    • Pointeurs et allocation dynamique
    • Fonctions
    • Chaînes de caractères
  • Voir plus loin que le programme
    • Bibliothèques
    • Debug et profiling
    • Portabilité
 
Programmation C - Systèmes GNU/Linux
Durée : 2 à 4 jours
Prérequis : Programmation C - Bases

Un programme C a très souvent besoin d'interagir avec le reste du système sur lequel il s'exécute.
La bibliothèque C donne accès aux fonctionnalité internes du noyau Linux via les appels systèmes, permettant au programme d'accéder à des fichiers, au matériel ou d'échanger des informations avec d'autres programmes.

Ce cours et le cours "Programmation C - Niveau avancé" sont complémentaires et peuvent être regroupés en un unique cours d'une durée de 4 à 5 jours.
Les travaux pratiques seront effectués sur un système Devuan GNU/Linux en utilisant la chaîne de compilation GNU.

Plan :
  • Rappels et plus
    • Systèmes UNIX et GNU/Linux
    • Le langage C
    • Architecture d'un programme
    • Syntaxe du C
    • Mots clés
  • Gestion des fichiers
    • Généralités
    • Manipulations "simples"
    • Gestion des droits
    • Utilisation avancée
  • Interaction avec le système
    • Paramètres du programme et environnement
    • Processus et threads
    • IPC
    • Signaux
    • Réseau
  • Voir plus loin que le programme
    • Bibliothèques
    • Portabilité
 
Programmation C - Drivers et Noyau Linux
Durée : 2 à 4 jours
Prérequis : Programmation C, et Systèmes GNU/Linux
Une bonne maîtrise du shell, du langage C, et des systèmes GNU/Linux est nécessaire.

Le noyau Linux est le cœur des systèmes GNU/Linux. Il donne accès au matériel à travers les appels systèmes utilisés par la bibliothèque C, passage obligé pour tous les programmes qui s'exécutent sur un ordinateur.
Le noyau a la responsabilité de gérer tout le matériel et de fournir aux applications une interface stable et simple, masquant toute la complexité et les spécificités du matériel.

Ce cours sur les drivers et le noyau Linux vous plonge dans les entrailles du noyau Linux pour vous aider à apréhender le fonctionnement du noyau et les principes spécifiques liés à la programmation de drivers.
Les travaux pratiques seront effectués sur un système Devuan GNU/Linux en utilisant la chaîne de compilation GNU, avec une cible ARM (carte type OrangePi zero).

Plan :
  • Rappels et introduction
    • Systèmes GNU/Linux
    • Le rôle du noyau Linux
    • Quelques rappels
  • Sources et compilation
    • Outils de développement
    • Récupération / Choix des sources
    • Patchs et dépôts Git
    • Configuration
    • Compilation native ou croisée
  • Exécution sur la cible
    • Bootloaders
    • Ligne de commande du noyau
    • Device tree
    • Système de fichiers racine, initrd et initramfs
    • Console et premier processus
  • Premiers pas
    • Messages du noyau
    • Hello World : un premier module
    • Mode protégé, espace noyau
    • Noeuds de périphériques
    • Interfaces avec l'espace utilisateur
  • Mécanismes internes
    • Allocations mémoires
    • Tâches et processus
    • Gestion du temps
    • Interruptions
  • Les sous-systèmes (introduction)
    • Bloc devices et systèmes de fichiers
    • Réseaux et protocoles
    • Bus USB, I2C, SPI, ...
    • Audio, vidéo et multimédia
  • Pour aller plus loin
    • Debug
    • Soumettre un patch pour le noyau officiel
    • Extensions temps réel
    • Virtualisation
 
Programmation C - Systèmes embarqués sur micro-contrôleurs
Durée : 3 à 5 jours
Prérequis : Bonne connaissance du language C

L'objectif de cette formation est de présenter l'approche inverse de l'arduino, en partant de zéro, "from scratch", pour découvrir le fonctionnement interne des micro-contrôleurs et de leurs blocs fonctionnels et comprendre les différences fondamentales entre la programmation pour un micro-contrôleur et la programmation d'applications pour un système d'exploitation.
Toujours dans la ligne "logiciels libres", cette formation s'appuie sur les outils GNU et les systèmes GNU/Linux pour le développement.
Les travaux pratiques seront effectués sur micro-contrôleurs LPC1224 (ARM Cortex-M0 de NXP).

Plan et points abordés :
  • Introduction
    • Qu'est ce qu'un micro-contrôleur (µC)?
    • Cas d'utilisation
  • Spécificités de la programmation pour µC
    • Ressources limitées
    • Jeu d'instructions réduit
    • Mémoire
    • Accès aux registres
    • Interruptions
    • Principes liés aux OS/RTOS (pour µC)
  • Chaîne de compilation et génération de code
    • Principes
    • Éléments constitutifs de la chaîne de (cross-)compilation
    • Création de l'image à envoyer au micro-contrôleur
    • Autres spécificités
  • Rappels de programmation C
    • Rappels généraux
    • Le pré-processeur
    • Mots clés
    • Opérateurs
    • Types et tailles
    • Extensions GNU GCC
    • Organisation en mémoire
    • Inclusion de code assembleur
  • Lien avec le matériel
    • Architecture interne
    • Les modules
    • Les registres
    • Lien avec l'électronique
    • Lien avec le monde physique
    • L'électronique pour l'informaticien
    • Bus de communication
    • Protocoles
  • En pratique
    (Tout au long de la formation)
    • Prise en main des cartes micro-contrôleur ARM
    • Micro-contrôleur ARM from scratch
    • Quelques drivers
    • Support MQTT (optionnel)
 
Systèmes GNU/Linux en embarqué
Durée : 3 à 5 jours
Prérequis : Bonne connaissance des systèmes GNU/Linux

Plutôt que de présenter une solution "clé en main" pour créer un système embarqué, cette formation présente les spécificités de la création de systèmes embarqués utilisant le noyau Linux, en présentant les différentes options mais en s'attardant sur la solution la moins commune et pourtant la plus efficace : créer un système "à la main" pour comprendre tous les éléments nécessaires et les interactions entre les différentes couches applicatives.

Les travaux pratiques seront effectués sur des cartes utilisant un SoC ARM, dont le choix peut varier en fonction des préférences des stagiaires et des disponibilités des différentes solutions.

Plan :
  • Introduction
    • Linux et son écosystème
    • Cas d'utilisation de Linux en embarqué
    • Rappels sur les licences
  • Architecture des systèmes */Linux
    • Empilement de couches
    • Syscalls et LibC
    • Fichiers et systèmes de fichiers
    • Systèmes d'init
  • Mise en œuvre : particularités Linux embarqué
    • Cross-compilation
    • Outils et remote Debugging
    • Noyau Linux
    • Système de fichier racine
    • Busybox
    • Solutions "clé en main" ?
    • Distributions GNU/Linux
    • Bootloader
    • Séquence de boot
    • Systèmes autonomes
    • Applicatif métier
    • Interfaces graphiques ?
  • En pratique
    • Prise en main des cartes
    • Compilation du bootloader et du noyau
    • Mise en Flash ?
    • Création du système de fichier racine
    • Configuration spécifique
  • Option "Linux et systèmes temps réel"
    • Principes des OS et RTOS (Real Time Operating Systems)
    • Les différentes solutions pour Linux
    • Pré-requis et conséquences
    • Alternatives
 
Systèmes Temps réel
Durée : 2 à 3 jours
Prérequis : Bonnes connaissances en programmation C et utilisation aisée des systèmes GNU/Linux

Loin de la présentation commerciale ou de l'étude de cas particuliers, cette formation vous fera découvrir aussi bien la théorie des systèmes temps-réels que les limites des diverses solutions, et les principes liés aux systèmes d'exploitations utilisés de façon spécifique dans ce cadre particulier.

Les travaux pratiques seront effectués sur des cartes utilisant tantôt un micro-contrôleur ARM, tantôt un SoC ARM, dont le choix peut varier en fonction des préférences des stagiaires et des disponibilités des différentes solutions.

Plan :
  • Introduction
    • Définitions
    • Principes liés à l'implémentation logicielle
    • Confusions courantes
    • Des solutions multiples et de grandes différences
  • Théorie
    • Principes liés à l'implémentation logicielle
    • Ordonancement
    • RTOS sur micro-contrôleurs
    • Ordonancement en pratique sous Linux
    • OS Temps réels – le cas du noyau Linux
    • Spécification des systèmes temps réels (tour d'horizon)
  • Mise en œuvre pratique
    • Micro-contrôleur : cas sans OS
    • Micro-contrôleur : RTOS
    • Linux Temps Réel
 
Introduction à l'électronique libre
Plan à venir

 

Ce site n'utilise pas de cookies, désolé pour les gourmands !