Cours Linux Embarqué
Cours Linux Embarqué
LINUX EMBARQUÉ
- Cours -
Département :
3M - Industrie Automobile & Aéronautique
Email :
[email protected]
CHAPITRE I :
Introduction au Système d’exploitation LINUX
CHAPITRE II :
LINUX pour les systèmes embarqués
PLAN DU COURS
CHAPITRE I :
Introduction au Système d’exploitation LINUX
CHAPITRE II :
LINUX pour les systèmes embarqués
CHAPITRE Introduction
I aux Systèmes
1- Introduction d’exploitation
aux systèmes d’exploitation
1.1 - DÉFINITION
• Un Système d’Exploitation (S.E.), comme Windows, MAC OS, Linux ou autres, est un programme abstrait conçue pour :
• C’est un ensemble de programmes qui dirigent l'utilisation des ressources d'un ordinateur par des logiciels applicatifs
(Navigation, édition, calcul…).
• Composé d’un noyau et d’un ensemble d'outils système (appelés Services), le S.E. permet de développer des applications
portables, qui ne sont pas spécifiques à un ordinateur ou un système donné.
4
CHAPITRE Introduction
I aux Systèmes
1- Introduction d’exploitation
aux systèmes d’exploitation
1.1 - DÉFINITION
• L’emplacement des systèmes d’exploitation sont généralement chargés en mémoire centrale au démarrage.
Stockage
U.C. Programmes
Assurer l’interface avec l’utilisateur. Données
Fichiers
Niveau Matériel
Périphériques de sortie + SE + Programmes
5
CHAPITRE Introduction
I aux Systèmes
1- Introduction d’exploitation
aux systèmes d’exploitation
6
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux
2.1 - HISTORIQUE
PHASE I
1969 Création d’Unix - Ken Tompson (Laboratoires Bell)
1970 Adaptation au DEC PDP-11/20 par Thompson&Ritchie et naissance du premier langage portable : le langage C
1987 Diffusion de X Window, interface graphique pour Unix développée par le MIT
7
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux
2.1 - HISTORIQUE
PHASE III
1991 Linux 0.1 et diffusion du code source sur Internet
• Au début de son histoire, le développement du noyau Linux était assuré par des développeurs bénévoles,
• Les principaux contributeurs sont aujourd'hui un ensemble d'entreprises, souvent concurrentes, comme Red Hat, Novell,
IBM ou Intel.
9
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux
Définition :
• GNU est un système d'exploitation constitué uniquement de logiciels libres. Il comprend des logiciels GNU (programmes
publiés par le projet GNU) ,ainsi que des logiciels libres publiés par des tiers,
• Les versions installables de GNU n'incluent que des logiciels libres, et le code source de GNU est sous licence GPL.
• Le libre accès au code source accélère le progrès en matière d'informatique car l'innovation dépend de la diffusion du
code source
La licence du noyau Linux est une licence publique générale GNU (Gnu Not Unix). Cette licence est libre, ce qui
permet d'utiliser, copier et modifier le code source selon ses envies ou ses besoins,
Ainsi, quiconque a les connaissances nécessaires peut participer aux tests et à l'évolution du noyau Linux.
10
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux
• La licence informatique est un contrat avec l'utilisateur, donnant le droit à celui-ci d'utiliser le logiciel, en lui imposant
en contrepartie des obligations plus ou moins restrictives ainsi qu'une redevance plus ou moins élevée.
Licence GPL :
Autorise la vente du logiciel freeware (gratuit...) sous sa forme originelle ou modifiée, à condition que le vendeur
autorise la diffusion (même gratuite) de ce logiciel,
Les logiciels sous la licence GPL appartiennent à leurs auteurs et personne ne peut s'approprier une partie ou
l'intégralité des droits d'auteur,
11
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux
• Linux est un système d'exploitation de type Unix créé par Linus Torvalds en 1991. Contrairement à Windows et macOS
qui sont des systèmes d'exploitation propriétaires, Linux est open-source sous Licence GPL, ce qui signifie que son code
source est accessible à tous et peut être modifié et distribué librement.
Caractéristiques de Linux :
• Open-source : La licence GNU GPL garantit que Linux reste libre et accessible à tous.
• Multitâche et multi-utilisateur : Permet à plusieurs utilisateurs d'interagir avec le système simultanément, tout en
exécutant plusieurs processus en même temps.
• Multi-plateformes ou Multi-cibles : Conçu pour fonctionner sur une large gamme de plates-formes matérielles, y
compris les ordinateurs personnels, les serveurs, les supercalculateurs, les appareils embarqués et même les
smartphones.
• Stabilité et fiabilité : Connu pour sa stabilité et sa capacité à fonctionner pendant de longues périodes sans nécessiter
de redémarrage.
• Sécurité : Bénéficie d'une sécurité renforcée grâce à la gestion des privilèges, aux autorisations et à la diversité des
distributions disponibles.
• Richesse informatique : Linux est composé de nombreux logiciels : Noyau, window manager(s), éditeurs, compilateurs,
navigateurs ...
12
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux
Noyau Linux :
• Le noyau Linux est le cœur du système d'exploitation, responsable de la gestion des ressources
matérielles et des opérations de bas niveau. Il permet la :
Gestion des ressources : Le noyau gère les ressources matérielles telles que le processeur,
la mémoire, les périphériques et les systèmes de fichiers. Il assure une allocation efficace et
équitable des ressources entre les différentes applications et utilisateurs du système.
13
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux
Services Linux :
• Les services (ou processus) sous Linux sont des programmes qui s'exécutent en arrière-plan pour
fournir des fonctionnalités spécifiques au système ou aux utilisateurs. Voici quelques exemples
de services courants :
Démon (daemon) : Les démons sont des services système qui s'exécutent en arrière-plan
sans interaction directe avec l'utilisateur. Par exemple, un démon réseau peut gérer la
connectivité réseau, tandis qu'un démon d'impression peut gérer les travaux d'impression.
Serveur : Linux peut héberger différents types de serveurs comme des serveurs web
(Apache, Nginx), des serveurs de base de données (MySQL, PostgreSQL), des serveurs de
fichiers (Samba), etc. Ces serveurs fournissent des services aux utilisateurs et aux autres
systèmes connectés au réseau.
Processus utilisateur : En plus des services système, Linux exécute également de nombreux
processus utilisateurs, tels que les applications graphiques, les interpréteurs de commandes
(comme Bash), les éditeurs de texte, et autres programmes utilisés par les utilisateurs pour
accomplir leurs tâches quotidiennes.
14
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux
15
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux
Définition de la distribution :
• Une distribution est un programme d’installation permettant de préparer le système ; càd un OS.
• Elle est basée sur un ensemble de « paquets » contenant des applications prêtes à l’emploi et des outils de configuration ;
Distributions Linux :
• Une distribution Linux est une version spécifique du système d'exploitation Linux qui combine le noyau Linux avec un
ensemble de logiciels supplémentaires (Services), notamment des bibliothèques système, des utilitaires de ligne de
commande, une interface utilisateur graphique et des applications préinstallées.
• Chaque distribution est généralement conçue pour répondre à des besoins spécifiques, que ce soit pour les serveurs, les
ordinateurs de bureau, les utilisateurs débutants ou avancés.
• Il existe plus de 200 distributions, les distributions les plus populaires : RedHat, Ubuntu, Debian, Fedora, Cent OS, Linux
Mint, Gentoo, Knoppix …
16
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux
• Les « SHELLs » sont des langages de commandes et de programmation. Les SHELLs les
plus connus sont :
BOURNE SHELL (sh)
KORN-SHELL (ksh)
C-SHELL TC-SHELL
BOURNE AGAIN SHELL (bash)
17
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux
18
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux
• Le processus d'amorçage (boot process) de Linux désigne la séquence d'étapes par lesquelles un ordinateur charge et
lance le système d'exploitation Linux.
19
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux
• Le BIOS (pour les anciens systèmes) ou l'UEFI (pour les systèmes modernes) est le premier logiciel qui s'exécute
lorsqu'un ordinateur est allumé. Son rôle principal est de vérifier que tous les composants matériels essentiels
fonctionnent correctement via le POST (Power-On Self Test).
• Le BIOS/UEFI identifie et initialise les périphériques de base nécessaires au démarrage, comme le clavier, la souris, les
disques durs, etc.
• Il recherche également un périphérique de démarrage bootable, comme un disque dur, un SSD ou une clé USB, en suivant
une séquence prédéfinie dans ses paramètres.
20
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux
• Une fois le périphérique de démarrage identifié et sélectionné par le BIOS/UEFI, le premier chargeur de démarrage MBR
est chargé depuis le secteur d'amorçage (boot sector) de ce périphérique.
• Le Master Boot Record (MBR) est une petite section spéciale du disque dur (ou d'un autre périphérique de stockage) qui
se situe dans le tout premier secteur (le secteur d'amorçage) du périphérique. Le MBR contient plusieurs composants
clés :
Boot Code (code d'amorçage) : C'est la portion du MBR qui contient les instructions de démarrage proprement
dites. Lorsque l'ordinateur démarre, le BIOS ou l'UEFI charge le MBR et exécute ce code.
Partition Table (table de partitions) : Le MBR contient une table de partitions qui répertorie les partitions sur le
disque dur. Chaque entrée dans cette table décrit l'emplacement de chaque partition sur le disque, ainsi que son
type (comme une partition de type Linux, Windows, etc.).
21
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux
22
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux
• Une fois le noyau Linux chargé en mémoire, il exécute le premier processus du système, init (ou PID 1).
• La commande sous Linux suivante permet de montrer le timeline d’exécution des processus : ps aux | less
• Init est responsable de démarrer tous les autres processus et services nécessaires au bon fonctionnement du système.
• Sur de nombreuses distributions modernes, init a été remplacé par systemd, un système de gestion de système et de
services plus sophistiqué et flexible.
• systemd contrôle les démons système (services), les points de montage des systèmes de fichiers, les sockets et les autres
ressources système. Il permet également un démarrage parallèle des services pour accélérer le processus de démarrage.
23
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux
• Les runlevels sont des états prédéfinis dans lesquels un système Unix ou Linux peut fonctionner. Chaque runlevel a une
signification spécifique et est associé à un ensemble particulier de services et de processus système à démarrer ou à
arrêter.
24
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux
• Les runlevels sont des états prédéfinis dans lesquels un système Unix ou Linux peut fonctionner. Chaque runlevel a une
signification spécifique et est associé à un ensemble particulier de services et de processus système à démarrer ou à
arrêter.
25
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux
• Lorsque le système atteint le runlevel ou le target approprié, init ou systemd lance les scripts de démarrage situés dans
les répertoires comme :
/etc/init.d/ ou
/etc/rc.d/.
• Ces scripts incluent des instructions pour monter des systèmes de fichiers, démarrer des services réseau, lancer des
démons (daemons) système, etc.
• Chaque script est exécuté séquentiellement pour préparer le système à l'utilisation par les utilisateurs ou d'autres
applications.
26
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux
• Pour résumer, le processus d’amorçage passe par plusieurs étapes. Ce processus assure que le système d'exploitation
Linux est chargé de manière ordonnée et que tous les services nécessaires sont démarrés pour permettre aux utilisateurs
d'interagir avec l'ordinateur ou le serveur.
27
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
Définition du Shell :
• Le Shell est une application qui représente l’interface utilisateur d'un système
d'exploitation Unix/Linux, sous forme de lignes de commandes.
• En particulier, le Shell Linux offre une large gamme de fonctionnalités pour gérer des
fichiers, automatiser des tâches et contrôler divers aspects du système.
28
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
Propriétés du Shell :
29
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
Structure du Shell :
Commandes : Les instructions que l'utilisateur saisit pour interagir avec le système.
Arguments et options : Informations supplémentaires fournies aux commandes pour influencer leur
comportement.
Variables d'environnement : Variables utilisées par le Shell et les programmes qu'il exécute.
Scripts Shell : Fichiers contenant une séquence de commandes Shell pour automatiser des tâches.
30
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
Options :
Modification du comportement de la commande
Commencent généralement par un - (moins)
31
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
Commandes de base :
cd, ls, cp, mv, rm, etc.
Commandes de réseau :
ping, ifconfig, netstat, ssh, scp, etc.
32
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
• Les variables d'environnement Linux sont des éléments clés du système d'exploitation qui définissent des paramètres
ou des informations utilisées par les processus en cours d'exécution et les shells interactifs.
• Elles sont définies globalement pour tout le système ou localement pour un utilisateur spécifique, et peuvent influencer
le comportement des applications et des commandes lancées depuis le shell.
• Ainsi, le rôle des variables d’environnement est de garder en mémoire des informations importantes.
• Exemples :
NB : La commande « env » affiche la liste de toutes les variables d'environnement du Shell avec leurs valeurs stockées.
33
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
Caractères spéciaux :
• En Shell Linux, les caractères spéciaux jouent des rôles particuliers dans la manipulation des commandes, des flux de
données et de l'interaction avec le système.
34
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
Caractères spéciaux :
• En Shell Linux, les caractères spéciaux jouent des rôles particuliers dans la manipulation des commandes, des flux de
données et de l'interaction avec le système.
Système de fichiers :
• Un système de fichiers est une organisation physique des données sur un support donnée, on peut citer un disque dur,
une clé USB, un DVD ou autres …
Arborescence :
• Une arborescence est une organisation logique des fichiers sur un ou plusieurs systèmes de fichiers. C’est une
structure, comme son nom l’indique, sous forme d’une arbre.
Arborescence Linux :
36
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
Fichiers de configuration
37
CHAPITREIntroduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
Ce chemin spécifie le chemin complet du fichier fichier.txt dans le répertoire personnel de l'utilisateur.
Exemple 1 :
Si le répertoire courant est /home/utilisateur, alors fichier.txt est un chemin relatif qui pointe vers un fichier fichier.txt
dans ce répertoire.
Exemple 2 :
38
CHAPITREIntroduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
• Exemple 1 :
Commande 1: pwd
=> /home/dduvivier
Commande 2: cd cours
Commande 3: pwd
=> /home/dduvivier/cours Déplacement relatif dans l’arborescence
Commande 4: cd ..
Commande 5: pwd
=> /home/dduvivier
Commande 6: cd /home/dduvivier/public-html
Commande 7: pwd Déplacement absolu dans l’arborescence
=> /home/dduvivier/public-html
39
CHAPITREIntroduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
• Exemple 2 :
40
CHAPITREIntroduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux
41
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
Définition :
• La gestion des droits dans un système de fichiers Linux permet de contrôler l'accès aux fichiers et répertoires par les
utilisateurs et les groupes.
• Chaque fichier et répertoire possède des permissions qui déterminent qui peut lire, écrire et exécuter ces fichiers.
• Plusieurs types de droits : Lecture (R), Ecriture (W), Exécution (X). Ces droits s’appliquent pour 3 groupes
d’utilisateurs :
Le propriétaire (user) du fichier,
Le groupe (group) propriétaire (Tous les utilisateurs membre du groupe),
Les autres (others) : Désigne tous les utilisateurs non membres des 2 précédents.
42
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
• Les droits n’ont pas la même signification pour un fichier que pour un répertoire.
• Pour un fichier :
R : Lecture (afficher)
W : Ecriture (modification)
X : Exécution (exécution d’un script)
• Pour un répertoire :
R : Lire le contenu, lister les fichiers (avec la commande « ls » par exemple)
W : Modifier le contenu, créer et supprimer des fichiers (avec les commandes « cp », « mv », « rm »)
X : d’accéder aux fichiers du répertoire. Mais aussi de naviguer dans les sous-répertoires (avec « cd »)
Exemple :
• A l’aide de la commande « ls -l », je vais lister les fichiers présents dans un sous-répertoire nommé « Documents » avec
les droits appliqués. J’obtiens le résultat suivant :
root@SEIclass: /home/SEI/Documents# ls -l
43
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
• Les droits n’ont pas la même signification pour un fichier que pour un répertoire.
• Pour un fichier :
R : Lecture (afficher)
W : Ecriture (modification)
X : Exécution (exécution d’un script)
• Pour un répertoire :
R : Lire le contenu, lister les fichiers (avec la commande « ls » par exemple)
W : Modifier le contenu, créer et supprimer des fichiers (avec les commandes « cp », « mv », « rm »)
X : d’accéder aux fichiers du répertoire. Mais aussi de naviguer dans les sous-répertoires (avec « cd »)
• Exemple :
Groupe Taille Nom du fichier
propriétaire
rw- rwx r-x SEI ESTS 255 2024-07-15 14:52 Fichier.txt
propriétaire autres Utilisateur Groupe Date/heure modification
Propriétaire : Lecture, écriture
propriétaire propriétaire Groupe : Lecture, écriture et exécution
Autres : Lecture et exécution
44
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
D’y effacer des fichiers quels que soient le propriétaire et les droits qui s’appliquent à ces fichiers,
Quand il est donné à un groupe, n’importe quel utilisateur de ce groupe peut supprimer des fichiers (dangereux).
• Le droit « X » accordé à un répertoire est un préalable indispensable pour exercer des droits sur les fichiers contenus.
Ce fichier aura comme groupe propriétaire, le groupe primaire du propriétaire (Groupe principal auquel appartient
le propriétaire)
45
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
Exemples d’application :
46
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
• La commande « chmod » permet de modifier les droits avec deux syntaxes différentes :
• Mode symbolique : Basé sur des symboles (ugoa) et des opérateurs (+,-,=)
47
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
48
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
• Ajouter le droit de lecture aux autres de tous les fichiers dans le chemin /home/paul/
49
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
Exemples :
50
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
mkdir /home/Rep
mkdir /home/Rep/Rep1
• Créer le répertoire « Rep » sous « /home » avec des droits spécifiques à l’utilisateur, groupe et autres
51
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
cp /home/jean/* /home/paul
cp -r /home/jean/* /home/paul
cp -a /home/jean/rapport.odt /home/paul
52
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
• Avant de copier des fichiers, il est préférable de prendre des précautions en termes de droits.
Identique à l’original,
C’est donc l’utilisateur qui a effectué la copie qui devient le propriétaire,
A moins d’utiliser l’option –a
Exemple :
Je suis connecté en tant que root
53
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
mv toto.txt /home/paul
mv toto.txt tata.txt
mv rep1/* rep2/
54
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
• La commande « rm » permet d’effacer des fichiers et des répertoires. A utiliser avec précaution (Avec l’option –r).
rm [OPTION]... DIRECTORY
Exemples :
root@fredon:~$ rm /home/paul/rapport.txt
root@fredon:~$ rm -r /home/paul/
root@fredon:~$ rm ./rapport*
root@fredon:~$ rm ./*.txt
55
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux
Commande « find » :
• Cette commande permet d’exécuter une recherche selon les critères définis dans une expression depuis le chemin
indiqué. Sa syntaxe : find –option <chemin> [<expression>]
Expression Désignation
-name <nom> Rechercher le fichier portant un nom
-links <n> Rechercher les fichiers possédant n liens
-user <utilisateur> Rechercher les fichiers appartenant à un utilisateur
-group <groupe> Rechercher les fichiers appartenant à un groupe
-type <type> Rechercher les fichiers ayant un type (f=fichier, d=répertoire, b=périphérique)
-ctime <date> Rechercher les fichiers créés avant ou après une date de création
-print Afficher le fichier pour lequel l’expression est réalisée
-perm <masque> Rechercher les fichier ayant le mode correspondant à un masque (3 chiffres en octal)
Exemples :
Commande « grep » :
• Cette commande permet Recherche une chaîne de caractères dans un ou plusieurs fichiers. Sa syntaxe :
$ grep [<options>] <chaine> [<fichier>]
Option Désignation
-i Ignorer les majuscules et minuscules
-h Supprimer le nom du fichier devant chaque ligne
-n Afficher le numéro de ligne dans le fichier
-v Afficher toutes les lignes sauf celles contenant la chaîne
Exemples :
57
PLAN DU COURS
CHAPITRE I :
Introduction au Système d’exploitation LINUX
CHAPITRE II :
LINUX pour les systèmes embarqués
II.1 - Introduction au Linux embarqué
II.2 - Applications du Linux embarqué
II.3 - Architecture du Linux embarqué
II.4 - Distributions à noyau Linux embarqué
II.5 - Cible embarquée ARM pour Linux embarqué : Raspberry PI
II.6 - Compilation native sous Linux embarqué : Application sur Raspberry Pi OS
II.7 - Compilation croisée pour Linux embarqué
CHAPITRE Introduction
II aux Systèmesaud’exploitation
1- Introduction Linux embarqué
• Contrairement aux ordinateurs de bureau ou aux serveurs, les systèmes embarqués sont
souvent limités en termes de ressources matérielles comme la mémoire, le processeur
et le stockage.
• Le Linux embarqué, ou Linux pour systèmes embarqués, est une version de Linux
optimisée et adaptée pour fonctionner sur des systèmes embarqués, tels que des
appareils électroniques, des machines industrielles, des dispositifs médicaux, et même
des appareils domestiques intelligents comme des routeurs et des téléviseurs
connectés.
59
CHAPITRE Introduction
II aux Systèmesaud’exploitation
1- Introduction Linux embarqué
• Le Linux embarqué est une version allégée et adaptée du noyau Linux, conçue spécifiquement pour répondre aux
exigences particulières des systèmes embarqués. Le Linux embarqué varie en fonction des capacités et des besoins
spécifiques du système embarqué :
Fonctionnalités adaptées : Il peut inclure toutes ou seulement une partie des fonctionnalités du noyau Linux
standard, selon les besoins. Certaines fonctionnalités peuvent être désactivées, comme le support pour les
périphériques tels que les souris ou les claviers, pour optimiser l'utilisation des ressources.
Exigences de mémoire réduites : Le Linux embarqué est optimisé pour fonctionner efficacement avec moins de
mémoire, ce qui est crucial dans les environnements embarqués où les ressources sont limitées.
Méthodes de démarrage : Il peut être configuré pour démarrer à partir de mémoires ROM (FLASH) ou de cartes
mémoire, offrant ainsi une flexibilité dans le choix du support de stockage.
Logiciels spécialisés pour périphériques : Les systèmes embarqués nécessitent souvent des logiciels spécifiques
pour piloter des périphériques particuliers tels que les écrans LCD, les écrans tactiles (Touch screen), et les
interfaces de communication comme SPI, I2C, CAN, et LIN.
60
CHAPITRE Introduction
II aux Systèmesaud’exploitation
1- Introduction Linux embarqué
• Le Linux embarqué est généralement configuré pour correspondre à une cible matérielle spécifique ou à une application
particulière :
Linux embarqué pour routeur IP : Version dédiée aux fonctions réseau avancées.
Linux embarqué pour calculateurs automobiles : Version équipée de logiciels pour la communication via le
protocole CAN.
Linux embarqué pour les objets connectés : Version intégrant des couches protocolaires telles que MQTT pour la
communication IoT.
• Le Linux embarqué offre une flexibilité et une adaptabilité essentielles pour répondre aux besoins variés et aux
contraintes spécifiques des systèmes embarqués modernes dans divers secteurs industriels et technologiques.
61
CHAPITRE Introduction
II aux Systèmesaud’exploitation
1- Introduction Linux embarqué
• Linux a étendu son influence jusqu'aux systèmes embarqués, un domaine où son adoption initiale n'était pas forcément
prévisible. Linux bénéficie des mêmes qualités qui ont fait son succès dans le monde des PC grand public :
Liberté et disponibilité : Linux est open source et gratuit, sans nécessité de verser des royalties pour son
utilisation.
Flexibilité : Il existe de nombreuses distributions Linux adaptées spécifiquement à différents types d'applications
et d'environnements.
Stabilité et efficacité : Linux est reconnu pour sa robustesse et sa performance, même dans des environnements à
ressources limitées.
Support communautaire : La communauté Linux offre un support rapide et efficace via Internet, ce qui facilite la
résolution des problèmes et l'apprentissage.
Large écosystème logiciel : La disponibilité croissante de logiciels sous Linux répond aux besoins diversifiés des
systèmes embarqués.
62
CHAPITRE Introduction
II aux Systèmesaud’exploitation
1- Introduction Linux embarqué
• En plus de ces qualités, Linux présente d'autres avantages importants spécifiquement adaptés aux exigences des
systèmes embarqués :
Portabilité sur différentes architectures : Linux est porté sur une variété de processeurs, tels que ARM, PowerPC,
MIPS et 6800, ce qui permet une grande flexibilité dans le choix du matériel.
Taille du noyau réduite : Le noyau Linux embarqué peut être configuré pour occuper moins de 500 Ko de mémoire,
adapté aux contraintes de taille des systèmes embarqués.
Distributions spécialisées : Il existe des distributions Linux spécifiquement conçues pour des applications variées
telles que les routeurs IP, les assistants personnels (PDA), et les téléphones.
Chargement dynamique de modules : La capacité de charger dynamiquement des modules permet d'optimiser la
taille du noyau en ne chargeant que les fonctionnalités nécessaires.
Facilité de migration : Pour les spécialistes Linux, la transition vers Linux embarqué est relativement fluide,
réduisant ainsi les temps de formation et les coûts associés.
63
CHAPITRE Introduction
II aux Systèmesdud’exploitation
2- Applications Linux embarqué
2.1 - AUTOMOBILE
• Linux est largement utilisé pour les interfaces utilisateur des systèmes de divertissement à bord des véhicules, offrant
des fonctionnalités comme :
La navigation GPS,
la connectivité Bluetooth,
la lecture multimédia, etc.
64
CHAPITRE Introduction
II aux Systèmesdud’exploitation
2- Applications Linux embarqué
2.2 - AÉRONAUTIQUE
Systèmes avioniques :
• Linux est utilisé dans les systèmes embarqués des avions pour le
traitement des données de vol, la navigation, la communication, et même
pour le contrôle de certaines fonctions critiques sous forme de systèmes
certifiés (DO-178C).
Smartphones et tablettes :
Télécommunications :
• Serveurs de téléphonie IP : Linux est utilisé dans les serveurs qui gèrent
les appels téléphoniques sur IP, offrant des fonctionnalités avancées de
« OpenWrt OS » pour les
routage, de gestion des appels et de sécurité.
routeurs
66
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
67
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
• La Toolchain est l'ensemble des outils nécessaires pour développer des logiciels qui s'exécuteront sur une plateforme
embarquée spécifique.
68
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
• La Toolchain est l'ensemble des outils nécessaires pour développer des logiciels qui s'exécuteront sur une plateforme
embarquée spécifique.
• Les binutils comprennent des outils comme as (assembleur), ld (linker), objdump (désassembleur), objcopy (outil de
manipulation des fichiers objets), etc.
• Ces bibliothèques sont incluses dans la toolchain pour assurer la compatibilité et la fonctionnalité correcte des
programmes compilés. Exemples : glibc pour les systèmes GNU/Linux, uClibc, musl libc, etc.
69
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
• La Toolchain est l'ensemble des outils nécessaires pour développer des logiciels qui s'exécuteront sur une plateforme
embarquée spécifique.
Make, CMake, ou
des outils plus spécifiques à la plateforme comme Buildroot ou
Yocto Project.
70
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
• Pour installer une chaîne d'outils (toolchain) destinée au développement de logiciels pour une plateforme embarquée,
deux approches sont généralement offertes :
La méthode classique : Offre plus de contrôle sur chaque composant de la toolchain, mais peut être laborieuse et
nécessite une bonne compréhension des détails de configuration et de compilation.
L'utilisation de Crosstool-NG : Automatise le processus de génération de la toolchain, réduisant ainsi le temps et
les efforts nécessaires tout en assurant une construction cohérente et reproductible.
Exemple : « Crosstool-NG »
71
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
• Les outils de développement habituels disponibles sur un poste de travail GNU/Linux sont natifs,
• Cette chaîne d'outils s'exécute sur votre poste de travail et génère du code pour votre poste de travail, généralement
x86.
• Pour le développement de systèmes embarqués, il est généralement impossible ou peu intéressant d’utiliser une chaîne
d'outils native car :
La cible embarquée est très lente en comparaison avec le poste de travail (Hautes performances),
Souhait de ne pas installer tous les outils de développement sur la cible embarquée.
• Par conséquent, les toolchain de compilation croisée sont généralement utilisées. Ils courent sur votre poste de travail
(PC) mais génèrent du code pour votre cible.
72
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
3.3 - BOOTLOADER
• Le Bootloader (Chargeur de démarrage) joue un rôle crucial dans le processus de démarrage des systèmes embarqués, il
est chargé d'initialiser les périphériques matériels essentiels, de charger l'image du noyau Linux depuis un support de
stockage
• Le processus de démarrage sur les processeurs embarqués récents s'effectue en plusieurs étapes : Lorsque le
processeur démarre, il exécute le code stocké en ROM pour charger un bootloader de premier étage à partir du flash SPI,
d'un port série (USB) ou d'une carte SD.
Le bootloader de premier étage initialise le contrôleur de mémoire et d'autres périphériques essentiels, puis
charge un bootloader de deuxième étape. Ce premier bootloader n'offre généralement pas d'interaction directe et
est fourni par le fabricant du processeur.
Le bootloader de deuxième étage, souvent open-source, étend les fonctionnalités avec un shell et des commandes
qui permettent de gérer les périphériques de stockage, configurer le réseau, et personnaliser le processus de
démarrage.
• Le Bootloader assure donc une initialisation progressive du système embarqué, en passant d'un bootloader de premier
étage géré par le fabricant du processeur à un bootloader de deuxième étape offrant des capacités avancées et une
flexibilité d'utilisation.
73
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
3.3 - BOOTLOADER
• U-Boot :
U-Boot (Universal Bootloader) est l'un des bootloaders open-source les plus populaires. Il est largement utilisé dans les
systèmes embarqués et offre une grande flexibilité et des fonctionnalités avancées. U-Boot permet de démarrer à partir de
différents supports de stockage, de gérer le réseau, d'exécuter des scripts de démarrage personnalisés et d'interagir avec le
matériel via un shell intégré.
74
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
3.3 - BOOTLOADER
75
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
• Le noyau Linux embarqué est responsable de la gestion des ressources matérielles et de l'interaction avec les
périphériques du système. Les aspects clés à considérer :
• Il offre des mécanismes de gestion de la mémoire, y compris la gestion de la mémoire virtuelle et physique pour
garantir une utilisation efficace des ressources limitées disponibles dans les systèmes embarqués.
• Ces pilotes sont essentiels pour permettre au système d'exploitation d'interagir avec les interfaces utilisateur (Écrans
LCD et TFT), les capteurs (Pression, Mouvement, Températures), les périphériques de stockage, etc.
• Les développeurs peuvent configurer le noyau pour inclure uniquement les pilotes nécessaires à leur configuration
matérielle spécifique, minimisant ainsi la taille du noyau et optimisant les performances.
76
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
• Le noyau Linux embarqué est responsable de la gestion des ressources matérielles et de l'interaction avec les
périphériques du système. Les aspects clés à considérer :
Personnalisation et configuration :
77
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
• Le noyau Linux est hautement portable sur toutes les architectures. Le code est donc divisé en plusieurs niveaux :
Code générique à toutes les Codes spécifiques à une Code spécifique à un SoC
architectures architecture ARMv8 bcm2837 (Raspberry Pi 3B)
78
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué
79
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué
80
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué
uClinux: Cibles ARM sans MMU, MIPS sans MMU et Blackfin sans MMU (DSP)
• uClinux est une variante du noyau Linux spécifiquement optimisée pour les microcontrôleurs
et les systèmes embarqués à ressources limitées. Contrairement au noyau Linux standard,
uClinux ne nécessite pas de mémoire de gestion de la mémoire virtuelle MMU (Memory
Management Unit), ce qui le rend adapté aux microcontrôleurs sans MMU.
81
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué
• Il existe plusieurs distributions Linux embarqués pour la plateforme Raspberry PI autres que RaspberryPI OS.
• En effet, il existe une application qui permet de regrouper toutes les distributions compatibles au SoC Raspberry PI
nommé « Rpi-imager ».
• Raspberry Pi Imager est un utilitaire développé par la Fondation Raspberry Pi pour simplifier le processus
d'installation des systèmes d'exploitation sur les cartes microSD destinées aux Raspberry Pi.
82
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué
• Il existe plusieurs distributions Linux embarqués pour la plateforme Raspberry PI autres que RaspberryPI OS.
• En effet, il existe une application qui permet de regrouper toutes les distributions compatibles au SoC Raspberry PI
nommé « Rpi-imager ».
• Raspberry Pi Imager est un utilitaire développé par la Fondation Raspberry Pi pour simplifier le processus
d'installation des systèmes d'exploitation sur les cartes microSD destinées aux Raspberry Pi.
83
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué
2. Sélectionner la distribution
• Lancer Raspberry Pi Imager après l'avoir installé. À l'ouverture, une liste
des systèmes d'exploitation pris en charge est listée.
• Sélectionner "Raspberry Pi OS (32-bit)" ou "Raspberry Pi OS (64-bit)"
selon votre modèle de Raspberry Pi et vos besoins.
84
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué
4. Configurer et installer
• Cliquer sur "Écrire" pour commencer l'installation.
• Raspberry Pi Imager téléchargera l'image de Raspberry Pi OS depuis les
serveurs officiels et l'écrira sur la carte microSD.
85
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué
86
CHAPITRE Introduction
II aux Systèmes
5- Cible embarquée d’exploitation
pour Linux embarqué : Raspberry Pi
87
CHAPITRE Introduction
II aux Systèmes
5- Cible embarquée d’exploitation
pour Linux embarqué : Raspberry Pi
Caractéristiques Techniques
• Processeur
• Broadcom BCM2711 quad-core ARM Cortex-A72 cadencé à 1.5 GHz.
• Architecture 64 bits pour une meilleure performance par rapport aux modèles antérieurs.
• Mémoire
• Disponible en trois configurations : 2 Go, 4 Go et 8 Go de RAM LPDDR4 (Low Power Double Data Rate 4).
• Options de mémoire améliorées par rapport aux modèles précédents pour une meilleure gestion multitâche et une
exécution plus rapide des applications.
88
CHAPITRE Introduction
II aux Systèmes
5- Cible embarquée d’exploitation
pour Linux embarqué : Raspberry Pi
Caractéristiques Techniques
• Connectivité
• Ethernet Gigabit pour des transferts de données rapides et une connectivité réseau stable.
• Wi-Fi 802.11ac dual-band et Bluetooth 5.0 pour une connectivité sans fil robuste.
• 2 ports USB 3.0 et 2 ports USB 2.0 pour la connexion de périphériques externes et le transfert de données.
• Sortie Vidéo : 2 ports micro HDMI prenant en charge la résolution jusqu'à 4K à 60 images par seconde. Possibilité
d'utiliser deux écrans simultanément, idéal pour les applications multimédias et de bureau.
• GPIO et Alimentation
• 40 broches GPIO (General Purpose Input/Output) pour connecter des composants électroniques et des
périphériques externes.
• Alimentation via un port USB-C, offrant une alimentation plus stable et fiable.
89
CHAPITRE Introduction
II aux Systèmes
5- Cible embarquée d’exploitation
pour Linux embarqué : Raspberry Pi
• Le benchmark comparatif entre la Raspberry Pi 4 Model B et la Raspberry Pi 3 Model B+ est crucial pour comprendre
les améliorations de performance et les différences entre ces deux modèles.
Benchmark CPU :
• La Pi 4 est nettement plus rapide pour les tâches nécessitant
une puissance de calcul intense grâce à ses cœurs Cortex-A72
plus rapides et à son architecture plus moderne.
Benchmark Mémoire :
• La Pi 4 avec plus de RAM et une mémoire plus rapide est
meilleure pour les charges de travail multitâches et les
applications nécessitant une mémoire vive importante.
Benchmark Connectivité :
• La Pi 4 offre une connectivité plus rapide et plus moderne,
particulièrement avec l'Ethernet Gigabit et les ports USB 3.0, ce
qui la rend idéale pour les transferts de données rapides et les
applications réseau.
Benchmark Graphiques :
• La Pi 4 offre une meilleure résolution vidéo et une capacité
graphique supérieure, adaptée aux applications multimédias et
aux écrans haute résolution.
90
CHAPITRE Introduction
II aux Systèmes
5- Cible embarquée d’exploitation
pour Linux embarqué : Raspberry Pi
• Une carte Raspberry Pi 4 comporte 40 broches. Parmi ces broches, quatre broches d'alimentation sur le Raspberry Pi,
dont deux sont des broches de 5 V et deux autres sont des broches de 3,3 V.
Nombre de Broches :
• La Raspberry Pi 4 dispose de 40 broches GPIO au total.
91
CHAPITRE Introduction
II aux Systèmes
5- Cible embarquée d’exploitation
pour Linux embarqué : Raspberry Pi
• Les cartes Raspberry Pi utilisent des processeurs Broadcom (BCM) comme unité centrale.
• Chaque modèle de Raspberry Pi est associé à un chipset spécifique de la série BCM. Le tableau ci-dessous présente
une correspondance entre les versions des cartes Raspberry Pi et les chipsets BCM correspondants :
Raspberry Pi 5 BCM2712
• Chaque chipset représente une évolution par rapport au modèle précédent, offrant généralement une meilleure
performance, des fonctionnalités supplémentaires comme le Wi-Fi et le Bluetooth intégrés, ainsi qu'une amélioration
de l'architecture de processeur pour répondre aux besoins croissants des utilisateurs.
92
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué
• Prétraitement :
Le préprocesseur traite les directives de préprocesseur comme
#include et #define.
Il génère un code source intermédiaire propre qui sera utilisé
pour la compilation.
• Compilation :
Le compilateur (par exemple gcc pour le C, g++ pour le C++)
traduit le code source prétraité en code assembleur spécifique
à la plateforme cible.
• Assemblage :
Traduit le code assembleur en langage machine binaire, générant des fichiers objets (.o pour Unix/Linux).
• Édition de liens :
Le linker (par exemple ld) combine les fichiers objets avec les bibliothèques nécessaires pour créer un
exécutable final.
Il résout les références aux fonctions et aux variables définies dans d'autres fichiers objets ou bibliothèques.
93
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué
94
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué
• Les outils de compilation standard utilisés sous Linux embarqué incluent la suite GCC (GNU Compiler Collection) et
ses composants spécifiques comme gcc pour le C, g++ pour le C++, et gdb pour le débogage.
• GCC est préféré pour sa portabilité et sa robustesse, en plus de supporter une large gamme d'architectures
matérielles.
Remarque :
• A l’aide de cette commande, on spécifie à gcc de rechercher une bibliothèque appelée « libexemple » dans les
répertoires standard de bibliothèques (/usr/lib, /usr/local/lib, etc.) ainsi que dans le répertoire courant.
96
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué
• Les niveaux d'optimisation du compilateur, souvent spécifiés avec l'option –O, contrôlent le degré auquel le
compilateur optimise le code source lors de la compilation.
• Chaque niveau d'optimisation offre un compromis entre la vitesse de compilation et la qualité de l'optimisation du
code produit. Les niveaux d'optimisation typiques :
97
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué
• On se propose le code en C suivant qui permet de clignoter une LED à travers la pin 17 du GPIO de la carte
RaspberryPi 4B :
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
Utilisation de la #include <unistd.h>
bibliothèque externe
wiringPi #define LED_GPIO 17 // GPIO pour la LED (BCM 17 sur Raspberry Pi 4B)
int main(void) {
while (1) {
digitalWrite(LED_GPIO, HIGH); // Allume la LED
usleep(500000); // Attente de 500 ms
digitalWrite(LED_GPIO, LOW); // Éteint la LED
usleep(500000); // Attente de 500 ms
}
return 0;
}
98
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué
• A l’aide la commande « file », on peut voir que l’executable est spécifique à l’architecture de la carte Raspberry :
file clignoter_led
>> clignoter_led: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-
linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=..., not stripped
• L'automatisation de la compilation avec « make » et l'utilisation d’un « fichier Makefile » est une pratique standard
dans le développement logiciel.
• Lors du développement des logiciels, surtout des projets de taille moyenne à grande, il est souvent question de
plusieurs fichiers source à compiler avec différentes options de compilation et peut-être des dépendances externes.
• Plutôt que de taper manuellement toutes les commandes de compilation à chaque modification, l'automatisation avec
make et un Makefile permet de simplifier ce processus.
Commande Make :
• make est une commande Unix/Linux très puissante qui lit des instructions à partir d'un fichier appelé Makefile pour
automatiser la compilation et l'assemblage des fichiers source en exécutables ou en bibliothèques.
Fichier Makefile:
• Un Makefile est un fichier texte sans extension spécifique (juste Makefile) qui contient des règles de construction
pour indiquer à make comment compiler et lier votre programme.
100
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué
# Compilateur
CC = gcc • all :
Indique l'exécutable ou la cible principale à construire. Lorsque
# Options de compilation « make » est exécuté sans argument, il exécute la première cible
CFLAGS = -O2 déclarée dans le Makefile, dans ce cas-ci all.
101
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué
• On se propose d’appliquer l’automatisation à l’aide de création du fichier Makefile pour le code en C de l’exemple de
clignotement de la LED de la carte RaspberryPi 4B.
# Compilateur
CC = gcc
• Créer le fichier Makefile dans le même
# Options de compilation répertoire du programme source
CFLAGS = -Wall -O2 clignoter_led.c