0% ont trouvé ce document utile (0 vote)
135 vues102 pages

Cours Linux Embarqué

Transféré par

joubairismail0
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
135 vues102 pages

Cours Linux Embarqué

Transféré par

joubairismail0
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

FILIÈRE DUT :

SYSTÈMES EMBARQUÉS INDUSTRIELS


(SEI)
- Semestre 3 -

LINUX EMBARQUÉ
- Cours -

Ecole Supérieure de Technologie – Salé, UM5


de Rabat

Département :
3M - Industrie Automobile & Aéronautique

Pr. EL OUDRHIRI HASSANI Abdelhadi

Email :
[email protected]

Année Universitaire : 2024/2025


PLAN DU COURS

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

I.1 - Introduction aux systèmes d’exploitation


I.2 - Système d’exploitation Linux
I.3 - Processus d’amorçage de Linux
I.4 - Environnement Shell et Arborescence Linux
I.5 - Commandes de gestion du système de fichiers 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 :

 Faciliter l’exploitation du matériel (pilotes de périphériques) ou/et

 Arbitrer l’accès au matériel par les utilisateurs (Ordonnancement).

• 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

• Ensemble de programmes nécessaires au fonctionnement de l’ordinateur, indépendant des programmes d’applications


mais indispensable à leur mise en œuvre.

• L’emplacement des systèmes d’exploitation sont généralement chargés en mémoire centrale au démarrage.

• Les différentes fonctions d’un système d’exploitation sont :

 Gestion des processus et programmes, Périphériques d’entrée

 Gestion des ressources (mémoire,…),


Contrôleurs
(Pilotes)
 Gestion des entrées-sorties, Mémoire centrale
Système d’exploitation
 Gestion des fichiers,

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

1.2 - SYSTÈMES D’EXPLOITATION CONNUS

DESTINATAIRE MONDE PC MONDE MAC MONDE DEV


MS-DOS MAC OS 9 UNIX
Windows 95 / 98 MAC OS 10 + 10.1 (Versions
VERSIONS
Windows 2000/XP/ Vista mineurs) LINUX
Windows 7/8/10/11 MAC OS 12/13
ARM, IA-32 (Intel), Itanium x86, x86-64, Itanium, DEC Alpha, ARM,
CIBLES x86-64 (Intel, AMD), DEC Alpha, X86-64 (Intel, AMD), ARMv8 H8, m68k, Microblaze, MIPS, PA-RISC,
MIPS (Power PC) PowerPC, RISC-V, s390, SuperH, SPARC
LANGAGES
C, C++ C++, Objective C, Swift et C C, assembleur et Rust
DEVELOPPMENT
MULTI-UTILISATEURS MULTI-UTILISATEURS MULTI-UTILISATEURS
CARACTERISTIQUES
MULTI-TACHES MULTI-TACHES MULTI-TACHES

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

1974-77 Les sources d’Unix sont distribuées gratuitement aux Universités

1978 Unix devient la propriété d’ATT et les sources deviennent payantes

1979 Création de BSD Unix pour l’Université de Californie à Berkeley

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 II • Linux a été écrit par Linus Torvalds, jeune étudiant


finlandais à l’époque, et a été amélioré par de
1987 AIX d’IBM et HP-UX d’HP naissent
nombreux développeurs dans le monde entier.
1991 Emergence de Linux

1992 Développement de Sun OS par Sun

PHASE III
1991 Linux 0.1 et diffusion du code source sur Internet

1993 Linux 0.99

1994 FreeBSD 1.0 basé sur BSD Unix

1995 Première distribution « commerciale » RedHat Linus Torvalds


CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux

2.2 - MAINTENANCE DU NOYAU LINUX

• 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

2.3 - PROJET GNU

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.

Philosophie et principe du projet GNU :

• 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 liberté au sens GNU est définie selon quatre principes :


 Liberté d'exécuter le programme, pour tous les usages.
 Liberté d'étudier le fonctionnement du programme et/ou de l'adapter à ses besoins.
 Liberté de redistribuer des copies.
 Liberté d'améliorer le programme et de publier ses améliorations.

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

2.4 - LICENCE GPL

Définition de la Licence informatique :

• 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 :

• La licence GPL (General Public Licence) :

 Permet la modification du programme original et sa diffusion (sous 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,

 Autorise l'utilisation du logiciel à des fins lucratives (permettant des bénéfices),

 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,

 La licence n'implique aucune forme de rémunération des auteurs.

11
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux

2.5 - PRÉSENTATION DE 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

2.6 - PRÉSENTATION DE LINUX

• Le système d’exploitation Linux peut être résumé en un Noyau et des Services

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.

 Gestion des processus : Il prend en charge le multitâche en permettant l'exécution


simultanée de plusieurs processus. Le noyau alloue du temps CPU et gère les transitions
entre les différents processus de manière transparente pour l'utilisateur.

 Système de fichiers : Il est responsable de la gestion de ces systèmes de fichiers, y compris


la lecture, l'écriture, et la gestion de l'espace disque.

 Gestion de la mémoire : Il supervise l'utilisation de la mémoire vive (RAM) et permet une


utilisation efficace de la mémoire et la prévention des pannes dues à une utilisation
excessive de la RAM.

13
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux

2.6 - PRÉSENTATION DE LINUX

• Le système d’exploitation Linux peut être résumé en un Noyau et des Services

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

2.7 - ARCHITECTURE DE LINUX

Architecture GNU/Linux Architecture GNU/Linux


simplifiée moins abstraite

15
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux

2.8 - DISTRIBUTIONS DE 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

2.9 - STRUCTURE DE LINUX

• La structure de Linux est divisée en plusieurs composants essentiels qui interagissent


pour former un système d'exploitation complet et fonctionnel.

• Le noyau gère les tâches de base du système (Ressources, Processus, fichiers,


Mémoire).

• Le CLI, ou une Interface de Ligne de Commande qui permet à l’utilisateur de


communiquer avec le noyau par l'intermédiaire d'un SHELL.

• 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)

• La communication avec le noyau peut se faire autrement. Généralement, on peut


dégager 2 classes :

 Les langages de commandes textuels : MS-DOS, UNIX


 Les interfaces graphiques : Gnome, KDE, AfterStep, WindowMaker …

17
CHAPITRE Introduction
I aux
2- Systèmes
Système d’exploitation
d’exploitation Linux

2.9 - STRUCTURE DE LINUX

Structure de Linux Structure en couches de Linux

18
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux

3.1 - PRINCIPE GÉNÉRAL

Définition du processus d’amorçage / Boot Process :

• 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.

Présentation des étapes du processus d’amorçage de Linux :

• Le processus d’amorçage de Linux passe par différentes étapes :

 BIOS/UEFI (Basic Input Output System / Unified Extensible


Firmware Interface),

 Chargement du chargeur d'amorçage (Boot Loader),

 Chargement du noyau Linux,

 Lancement du processus init (Systemd ou SysVinit),

 Lancement des services et des scripts de démarrage,

 Chargement de l'environnement utilisateur.

19
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux

3.2 - ETAPE 1 : BIOS / UEFI

• 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

3.3 - ETAPE 2 : CHARGEUR DE DÉMARRAGE

• 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.

Chargeur de démarrage Stage 1 : « Master Boot Record / MBR »

• 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

3.3 - ETAPE 2 : CHARGEUR DE DÉMARRAGE

Chargeur de démarrage Stage 2 : « GRUB ou LILO »

• Après que le BIOS ou l'UEFI a chargé et exécuté le MBR, le chargeur de


démarrage principal entre en jeu. Les deux chargeurs de démarrage
les plus couramment utilisés pour Linux sont GRUB (Grand Unified
Bootloader) et LILO (LInux LOader).

 Sélection du noyau : Les chargeurs de démarrage permettent à


l'utilisateur de sélectionner le noyau Linux à charger si
plusieurs versions de noyau sont installées sur le système.

 Gestion des options de démarrage : Ils permettent également


de spécifier des options de démarrage avancées, comme des
paramètres de ligne de commande pour le noyau ou des options
spécifiques au matériel.

 Compatibilité multi-systèmes : Les chargeurs de démarrage


comme GRUB sont conçus pour gérer plusieurs systèmes
d'exploitation sur le même disque dur, ce qui permet de
démarrer Linux ainsi que d'autres systèmes comme Windows.

22
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux

3.4 - ETAPE 3 : PROCESSUS init / systemd

• 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

3.5 - ETAPE 4 : RUNLEVELS

• 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.

• Quelques exemples courants de runlevels :

RUNLEVEL Description et Utilisation


Ce runlevel est souvent utilisé pour arrêter le système. Il est généralement configuré pour exécuter des scripts qui arrêtent les
0
services en cours d'exécution, démontent les systèmes de fichiers et préparent le système à être éteint en toute sécurité.
Aussi connu sous le nom de "single user mode" ou mode mono-utilisateur, ce runlevel est destiné à la maintenance du système. Il ne
1
lance qu'une console en mode texte et n'exécute que les services essentiels nécessaires pour les opérations de maintenance.
Ce runlevel est similaire au runlevel 3, mais il est souvent utilisé pour désigner un mode multi-utilisateur sans prise en charge du
2 réseau. Cela signifie que le système est capable de démarrer plusieurs sessions utilisateur en mode texte, mais sans activer les
services réseau.
Ce runlevel est utilisé pour démarrer un système en mode multi-utilisateur complet avec tous les services et démons nécessaires, y
3 compris les services réseau. C'est souvent le runlevel de choix pour les serveurs sans interface graphique, où la priorité est donnée à
la disponibilité des services réseau et des applications en ligne de commande.

24
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux

3.5 - ETAPE 4 : RUNLEVELS

• 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.

• Quelques exemples courants de runlevels :

RUNLEVEL Description et Utilisation


Historiquement, ce runlevel n'était pas souvent utilisé et restait généralement réservé pour des personnalisations spécifiques dans
4
certaines distributions.
Ce runlevel est souvent associé à un mode multi-utilisateur avec une interface graphique (GUI). Il démarre tous les services du
5
runlevel 3 en plus d'initialiser l'environnement graphique utilisateur, comme un gestionnaire de fenêtres ou un bureau.
Ce runlevel est utilisé pour redémarrer le système. Il exécute des scripts spécifiques pour arrêter les services en cours d'exécution,
6
démonter les systèmes de fichiers et redémarrer le système.

25
CHAPITRE Introduction
I 3-aux Systèmes
Processus d’exploitation
d’amorçage de Linux

3.6 - ETAPE 5 : SCRIPTS ET SERVICES

• 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

3.7 - RÉSUMÉ DES ÉTAPES

• 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

4.1 - ENVIRONNEMENT SHELL 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.

• Il permet aux utilisateurs d'interagir avec le système Linux en saisissant des


commandes textuelles.

• C’est un programme qui permet de :


 Interpréter les commandes,
 Gérer les I/O utilisateur sur le terminal.

• 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

4.1 - ENVIRONNEMENT SHELL LINUX

Propriétés du Shell :

• Le Shell se caractérise par plusieurs propriétés :

 Interpréteur de commandes : Le Shell interprète les commandes


saisies par l'utilisateur et les exécute.

 Environnement de « scripting » : Il permet de créer des scripts pour


automatiser des tâches complexes.

 Personnalisation : Les utilisateurs peuvent personnaliser leur


environnement Shell en configurant des variables d'environnement et
en utilisant des alias pour les commandes fréquemment utilisées.

 Interaction interactive : Le Shell permet une interaction directe avec


l'utilisateur, facilitant la communication directe avec le système.

 Redirection d’E/S : Le Shell permet de rediriger les entrées et sorties


standard des commandes vers des fichiers ou d'autres flux, offrant une
flexibilité dans la gestion des données.

29
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux

4.1 - ENVIRONNEMENT SHELL LINUX

Structure du Shell :

• Le Shell Linux est généralement constitué des éléments suivants :

 Prompt : Il indique à l'utilisateur qu'il peut saisir une commande.

 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.

 Redirections : Techniques pour manipuler le flux d'entrée et de sortie des commandes.

 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

4.1 - ENVIRONNEMENT SHELL LINUX

Besoin et rôle du Shell :

• Le rôle du Shell Linux a pour but de :

 Gestion des fichiers : Copier, déplacer, renommer et supprimer des fichiers.


 Administration système : Gérer les utilisateurs, les permissions et les services.
 Automatisation : Créer des scripts pour exécuter des tâches répétitives ou complexes.
 Dépannage : Diagnostiquer et résoudre des problèmes système.
 Personnalisation : Configurer l'environnement de travail selon les préférences de l'utilisateur.

Syntaxe des commandes Shell : Optionnel

commande [ -options ] [ arguments ] Commande :


Action à accomplir ou application à démarrer
• Exemple :
Arguments :
Objets ou fichiers auxquels la commande s'applique

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

4.1 - ENVIRONNEMENT SHELL LINUX

Types de commandes Shell :

• Les commandes Shell peuvent être regroupées en plusieurs catégories :

 Commandes de base :
cd, ls, cp, mv, rm, etc.

 Commandes de gestion des fichiers :


touch, cat, head, tail, chmod, chown, etc.
 Commandes de recherche et filtrage :
 Commandes de gestion des processus : grep, find, awk, sed, etc.
ps, top, kill, bg, fg, etc.
 Commandes de gestion des archives :
 Commandes de gestion des utilisateurs : tar, gzip, zip, unzip, etc.
useradd, userdel, passwd, su, sudo, 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

4.1 - ENVIRONNEMENT SHELL LINUX

Variables d’environnement 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 :

 Le login de l'utilisateur (stocké dans la variable $USER),


 Le répertoire de connexion de l’utilisateur ($HOME),
 La liste des répertoires dans lesquels aller chercher les exécutables des commandes externes ($PATH),
 Le chemin absolu du répertoire de travail courant. ($PWD).

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

4.1 - ENVIRONNEMENT SHELL 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.

• Voici les principaux caractères spéciaux utilisés :

Caractère Rôle et exemple


Permet la communication par tube entre deux commandes.
| Exemple : ls -1 | grep la commande de listage des fichiers du répertoire (ls) envoie chacun d'eux à la commande qui
permet de chercher un fichier (grep).
Introduit un commentaire. Donc tout ce qui suit ce caractère dans une ligne est ignoré par le Shell.
#
Exemple : # ceci est un commentaire.
Déspécialise le caractère qui suit. C'est-à-dire que si le caractère qui suit celui là est un caractère spécial alors le
\ Shell l'ignorera.
Exemple : echo Bon\*jour affiche bon*jour à l'écran.
Défini une chaîne de caractères qui ne sera pas évaluée par le Shell.
'...'
Exemple : echo '*?&' affiche sur la sortie standard les caractères spéciaux *?& sans les interpréter.
Défini une chaîne de caractères dont les variables seront évaluées par le Shell.
"..."
Exemple : echo "Vous êtes $USER." affiche Vous êtes + la valeur de la variable $USER.

34
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux

4.1 - ENVIRONNEMENT SHELL 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.

• Voici les principaux caractères spéciaux utilisés :

Caractère Rôle et exemple


Métacaractère qui remplace n'importe quelle chaîne de caractères (même vide).
*
Exemple : cp * DATA copie tous les fichiers dans le répertoire DATA.

? Métacaractère qui remplace un caractère quelconque.


Permet de séparer plusieurs commandes écrites sur une même ligne.
Exemple :
;
cp *.c DATA; tar cvf data.tar DATA copie tous les fichiers d'extention .c
dans le répertoire DATA et les archive dans le fichier data.tar.
Regroupe des commandes.
Exemple :
()
(echo "Liste :"; ls ) > liste.txt
écrit la chaîne Liste : et la liste des fichiers du répertoire courant dans le fichier liste.txt.
Permet le lancement d'un processus en arrière plan. Cela permet d'exécuter d'autres commandes pendant qu'un
& processus est en marche.
Exemple : netscape &
35
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux

4.2 - ARBORESCENCE LINUX

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 :

• Arborescence de répertoires et de fichiers


• Répertoire Linux ≡ dossier sous Windows
• Répertoire courant = .
• Répertoire parent = ..
• Répertoire racine = /
• Répertoire d’accueil = ~
(exemple : /home/SEI)

36
CHAPITRE Introduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux

4.2 - ARBORESCENCE LINUX

Arborescence Linux : « Organisation »

• Généralement, une arborescence Linux est organisée sous la forme suivante :

Fichiers de configuration

Commandes principales disponibles pour tous

Racine du Fichiers de démarrage du système contenant le noyau


système
Point d’entrée vers les périphériques

Répertoires personnels des utilisateurs

Répertoire personnel du super-utilisateur

Logiciels et librairies supplémentaires

Journaux systèmes (log)


Système de fichiers virtuel (VFS) contenant des infos sur les
processus en cours d’exécution

37
CHAPITREIntroduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux

4.2 - ARBORESCENCE LINUX

Arborescence Linux : « Chemins relatifs et absolus »

• Chemins Absolus : Démarrent toujours à partir de la racine (/).

Par exemple : /home/utilisateur/fichier.txt

Ce chemin spécifie le chemin complet du fichier fichier.txt dans le répertoire personnel de l'utilisateur.

• Chemins Relatifs : Démarrent à partir du répertoire courant.

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 :

Je suis dans « /home/SEI/Liste/cours2 », et je veux accéder à «/home/SEI/Liste/cours1/index.html »


Alors : ../cours1/index.html

38
CHAPITREIntroduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux

4.2 - ARBORESCENCE LINUX

Arborescence Linux : « Positionnement »

• Quelques commandes pour se situer dans l’arborescence :

 « pwd » : donne le chemin absolu du répertoire actuel (.)

 « cd » : permet de changer de répertoire

• 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

4.2 - ARBORESCENCE LINUX

Arborescence Linux : « Positionnement »

• Quelques commandes pour se situer dans l’arborescence :

 « pwd » : donne le chemin absolu du répertoire actuel (.)

 « cd » : permet de changer de répertoire

• Exemple 2 :

Je suis dans mon rep. perso Je vais dans /etc/apache2


root@fredon:~# cd /etc/apache2
root@fredon:/etc/apache2 # cd .. Je vais dans le rép parent (/etc)
root@fredon:/etc # ls .
root@fredon:/etc # cd ~ Je liste le rép. courant (/etc)
root@fredon:/etc # pwd
/home/dupont Je retourne dans mon rép perso
Où suis-je ?

40
CHAPITREIntroduction
I aux Systèmes
4- Environnement Shell d’exploitation
et Arborescence Linux

4.2 - ARBORESCENCE LINUX

Arborescence Linux : « Application »

41
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.1 - DROITS DES FICHIERS / RÉPERTOIRES

• Linux est un système multi-utilisateurs et donc :


 Plusieurs utilisateurs se partagent l’espace disque mémoire,
 Les fichiers et répertoires d’un utilisateur ne doivent pas être accessibles par les autres,
 Les fichiers de configuration du système doivent être protégés.

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.

Notions de types de droits et utilisateurs :

• Nécessité de spécifier des droits pour chaque fichier/répertoire

• 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

5.1 - DROITS DES FICHIERS / RÉPERTOIRES

Structure des permissions :

• 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

-rw-rwxr-x SEI ESTS 255 2024-07-15 14:52 Fichier.txt

43
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.1 - DROITS DES FICHIERS / RÉPERTOIRES

Structure des permissions :

• 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

5.1 - DROITS DES FICHIERS / RÉPERTOIRES

Remarques sur les droits des fichiers et répertoires :

• Le droit « w » accordé à un répertoire permet :

 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).

• Les droits ne s’appliquent pas au « super-utilisateur », néanmoins :

 Il a tous les droits sur tout le système de fichiers,


 C’est une très grande responsabilité puisque sous Linux tout ou presque repose sur les fichiers,
 La tendance évolue vers une utilisation très modérée voire interdite du compte « root »

• Le droit « X » accordé à un répertoire est un préalable indispensable pour exercer des droits sur les fichiers contenus.

• L’utilisateur qui crée un fichier en devient le propriétaire

 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

5.1 - DROITS DES FICHIERS / RÉPERTOIRES

Exemples d’application :

1-- Quel(s) utilisateur(s) pourra(ont) se déplacer dans le répertoire suivant ?

drwxr-x--- 26 paul marketing 4096 2008-08-28 16:11 paul

Réponse : « paul » et les membres du groupe « marketing »

2-- Qui pourra créer de nouveaux fichiers dans ce répertoire ?


drwxr-xrwx 26 jean marketing 4096 2008-08-28 16:11 bilans

Réponse : Tous le monde sauf les membres du groupe « marketing »

3-- Soit le fichier suivant :


-rwxr--r-- 26 sarah compta 25140 2008-08-28 16:11 rapport2006.odt

Situé dans le répertoire suivant :


drwxrwxrwx 26 jean compta 4096 2008-08-28 16:11 rapports

Qui pourra effacer ce fichier ?


Réponse : Tous le monde

46
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.1 - DROITS DES FICHIERS / RÉPERTOIRES

Commandes de gestion des droits :

• La commande « chmod » permet de modifier les droits avec deux syntaxes différentes :

chmod [OPTION]... MODE[,MODE]... FILE...

chmod [OPTION]... OCTAL-MODE FILE...

• Mode symbolique : Basé sur des symboles (ugoa) et des opérateurs (+,-,=)

• u (user), g (group), o (others), a (all users)


• + (Ajouter le droit), - (Retirer le droit), = (Ajouter le droit et retirer tous les autres)
• Exemple (Ajoute le droit d’exécution au propriétaire) :

chmod u+x rapport.txt

• Mode octal : Basé sur des nombres de 0 à 7


• A chaque bit de la traduction binaire correspond un droit
• Exemple ( rw- rw- r-- ) :

chmod 664 rapport.txt

47
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.1 - DROITS DES FICHIERS / RÉPERTOIRES

Commandes de gestion des droits :

• Mode octal : (Suite)

• Les droits sont représentés par un nombre octal (Base 8)


De 1 à 7

• La représentation binaire (base 2) donne le détail des droits


Exemple : 6 5 4

Propriétaire : Lecture, écriture


110 101 100 Groupe : Lecture et exécution
Autres : Lecture seulement
rw- r-w r--
• Ce mode permet de modifier tous les droits en même temps

 A utiliser avec précaution,


 Très efficace pour s’assurer que tous les fichiers ont les mêmes droits,
 Utilisé pour sécuriser les accès des utilisateurs aux fichiers.

48
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.1 - DROITS DES FICHIERS / RÉPERTOIRES

Commandes de gestion des droits : « Exemples d’application »

• Retirer le droit d’écriture au propriétaire et au groupe au fichier secret.txt (/home/paul/)

chmod u-w,g-w /home/paul/secret.txt

• Positionner les droits en « rwx r-w --- »

chmod 750 /home/paul/secret.txt

• Ajouter le droit de lecture aux autres de tous les fichiers dans le chemin /home/paul/

chmod o+r /home/paul/*

• Retirer le droit d’écriture au groupe propriétaire


Pour tous les fichiers et répertoires d’un répertoire donné (Option R)

chmod -R g-w /home/paul/*

• Donner tous les droits à tout le monde (déconseillé)

chmod 777 /home/paul/secret.txt

49
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.1 - DROITS DES FICHIERS / RÉPERTOIRES

Commandes de modification d’appartenance :

• La commande « chown » (Change owner) permet de changer l’appartenance :

 Pour le propriétaire ou,


 le groupe propriétaire.

• La Syntaxe de la commande de modification d’appartenance est comme suit :


chown [OPTION]... [OWNER][:[GROUP]] FILE...

Exemples :

• Modifier le propriétaire (paul)


chown paul /usr/docs/toto.txt

• Modifier le groupe propriétaire (compta)


chown :compta /usr/docs/toto.txt

• Modifier le propriétaire (jean) et du groupe (direction)


Pour tout le contenu du répertoire (Option R - récursif)
chown –R jean:direction /usr/docs/rapports/

50
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.2 - COMMANDE CRÉER RÉPERTOIRE

• La commande « mkdir » permet de créer un répertoire ou plusieurs dans un chemin donnée.

• La Syntaxe de la commande est comme suit :

mkdir [OPTION]... DIRECTORY


Exemples :

• Créer le répertoire « Rep » sous « /home »

mkdir /home/Rep

• Créer le sous-répertoire « Rep1 » sous « /home/Rep »

mkdir /home/Rep/Rep1

• Créer les deux sous-répertoire « Rep2 » et « Rep3 » sous « /home/Rep »

mkdir /home/Rep /home/Rep2

• Créer le répertoire « Rep » sous « /home » avec des droits spécifiques à l’utilisateur, groupe et autres

mkdir –m 755 /home/Rep

51
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.3 - COMMANDE COPIER

• La commande « cp » copie des fichiers source vers une ou plusieurs destinations

• La Syntaxe de la commande de copie des fichiers est comme suit :

cp [OPTION]... SOURCE... DIRECTORY


Exemples :

• Copier le fichier « toto.txt » vers « /home/paul »


cp toto.txt /home/paul

• Copier tous les fichiers du répertoire « /home/jean » vers « /home/paul »

cp /home/jean/* /home/paul

• Copier le rep « /home/jean » tout entier vers « /home/paul »

cp -r /home/jean/* /home/paul

• Copier en conservant les droits et l’appartenance (-a)

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

5.3 - COMMANDE COPIER

• Avant de copier des fichiers, il est préférable de prendre des précautions en termes de droits.

• Copier un fichier revient à créer un nouveau fichier

 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

root@fredon:/home/jean# ls -l Je liste le répertoire de Jean


total 0
lrwxrwxrwx 1 jean jean 26 2008-08-21 18:04 Examples -> /usr/share/example-content
-rw-r--r-- 1 jean jean 0 2008-08-21 18:14 rapport.odt
root@fredon:/home/jean# cp rapport.odt /home/paul/ Ce fichier appartient à Jean
root@fredon:/home/jean# ls -l /home/paul/
total 4
Je le copie chez Paul
-rw-r--r-- 1 root root 0 2008-08-21 18:14 rapport.odt
drwxr-xr-x 2 paul paul 4096 2008-08-21 17:59 rep1
drwxr-xr-x 2 paul paul 4096 2008-08-21 18:00 rep2 La copie m’appartient (root)
drwxr-xr-x 2 paul paul 4096 2008-08-15 14:41 Vidéos
root@fredon:/home/jean#

53
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.4 - COMMANDE DÉPLACER / RENOMMER

• La commande « mv » déplace (renomme) d’une source vers une destination.

• La Syntaxe de la commande de déplacement des fichiers est comme suit :

mv [OPTION]... SOURCE... DIRECTORY


Exemples :

• Déplacer le fichier « toto.txt » vers « /home/paul » sans le renommer

mv toto.txt /home/paul

• Renommer le fichier « toto.txt » en « tata.txt »

mv toto.txt tata.txt

• Déplacer tous les fichiers de « rep1 » vers « rep2 »

mv rep1/* rep2/

54
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.5 - COMMANDE SUPPRIMER

• La commande « rm » permet d’effacer des fichiers et des répertoires. A utiliser avec précaution (Avec l’option –r).

• La Syntaxe de la commande de déplacement des fichiers est comme suit :

rm [OPTION]... DIRECTORY
Exemples :

• Effacer le fichier « rapport.txt »

root@fredon:~$ rm /home/paul/rapport.txt

• Effacer le répertoire « /home/paul »

root@fredon:~$ rm -r /home/paul/

• Effacer tous les fichiers du rép. courant commençant par « rapport »

root@fredon:~$ rm ./rapport*

• Effacer les fichiers du rép. courant se terminant par .txt

root@fredon:~$ rm ./*.txt

55
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.6 - COMMANDE CHERCHER

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>]

• Les expressions possibles pour cette commande :

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 :

$ find / -name passwd –print


$ find .. –user u1 –print
56
CHAPITREIntroduction
I aux Systèmes
5- Commandes d’exploitation
de gestion du système de fichiers Linux

5.6 - COMMANDE CHERCHER

Commande « grep » :

• Cette commande permet Recherche une chaîne de caractères dans un ou plusieurs fichiers. Sa syntaxe :
$ grep [<options>] <chaine> [<fichier>]

• Les expressions possibles pour cette commande :

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 :

$ grep ‘^u’ /etc/passwd


$ grep –v « ; » *.c
$ grep ksh$ /etc/passwd

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é

1.1 - RAPPELS & DÉFINITIONS

Rappel sur les systèmes embarqués :

• Un système embarqué est un système informatique et électronique autonome qui


exécute une tâche précise au sein de l'appareil auquel il est intégré. La plupart du
temps, cette tâche est réalisée en temps réel. Le terme de « système embarqué »
recouvre à la fois le matériel et le logiciel utilisés.

• 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.

Définition du Linux embarqué :

• 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é

1.1 - RAPPELS & DÉFINITIONS

Caractéristiques du 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é

1.1 - RAPPELS & DÉFINITIONS

Adaptation du Linux embarqué aux applications spécifiques :

• Le Linux embarqué est généralement configuré pour correspondre à une cible matérielle spécifique ou à une application
particulière :

• Exemples d'applications spécifiques :

 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é

1.2 - RECOURS AU LINUX

Pourquoi Linux est-il utilisé dans les systèmes embarqués ?

• 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é

1.2 - RECOURS AU LINUX

Atouts spécifiques pour les systèmes embarqués

• 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

Systèmes de divertissement embarqués :

• 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.

« iDrive 8.0 OS » « MBUX » (Mercedes-Benz User


Experience)

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).

Systèmes de divertissement en vol : « Wind River Linux » pour les


systèmes avioniques

• Comme pour l'automobile, Linux est également présent dans les


systèmes de divertissement à bord des avions, fournissant une interface
utilisateur riche pour les passagers.

« Tizen IVI » pour les systèmes de


divertissements avioniques
65
CHAPITRE Introduction
II aux Systèmesdud’exploitation
2- Applications Linux embarqué

2.3 - TÉLÉCOMS & APPAREILS MOBILES

Smartphones et tablettes :

• Certains fabricants utilisent Linux (notamment des distributions comme


Android, qui est basée sur le noyau Linux) comme base pour leurs
systèmes d'exploitation mobiles,

• Cette adoption du linux embarqué comme OS permet de fournir une


plate-forme robuste pour les applications et la connectivité.

Télécommunications :

• Équipements réseau : Linux est au cœur de nombreux routeurs,


commutateurs et autres équipements réseau grâce à sa stabilité, sa
flexibilité et sa capacité à gérer de grands volumes de données et de
trafic réseau.

• 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é

3.1 - ARCHITECTURE GÉNÉRALE

• L'architecture du système Linux embarqué se compose en quatre


composants principaux pour fonctionner :

 Toolchain : Ensemble d'outils utilisés sur une machine de


développement pour compiler et générer du code exécutable adapté à la
plateforme cible d'un système embarqué.

 Bootloader : Programme responsable du démarrage initial du système,


chargement du noyau Linux en mémoire, et configuration des
paramètres essentiels pour le bon fonctionnement du système
embarqué.

 Noyau Linux : Cœur du système d'exploitation embarqué, comprenant


les pilotes nécessaires pour interagir avec les périphériques matériels
et assurant la gestion des ressources système.

 Système de fichiers racine : Répertoire racine contenant toutes les


applications, bibliothèques et configurations nécessaires au
fonctionnement du système embarqué, organisé selon une structure de
système de fichiers spécifique.

67
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué

3.2 - TOOLCHAIN / CHAINE D’OUTILS

• 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 principaux éléments qui composent une Toolchain :

Compilateur croisé (Cross-Compiler) :

• Un compilateur croisé est un compilateur qui génère du code


exécutable pour une architecture différente de celle sur laquelle il
s'exécute.

• Dans le contexte des systèmes embarqués, il est crucial de compiler


le code sur une machine de développement (généralement x86 ou
x86_64) pour qu'il s'exécute sur l'architecture spécifique de la
plateforme cible (comme ARM, MIPS, etc.).

• Exemple de compilateur croisé populaire :


GCC (GNU Compiler Collection).

68
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué

3.2 - TOOLCHAIN / CHAINE D’OUTILS

• 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 principaux éléments qui composent une toolchain :

Assembleur et Linker (binutils) :


• En plus du compilateur, la toolchain inclut des outils comme l'assembleur et le linker, qui sont nécessaires pour
assembler le code source compilé en un exécutable complet pour la plateforme cible.

• Les binutils comprennent des outils comme as (assembleur), ld (linker), objdump (désassembleur), objcopy (outil de
manipulation des fichiers objets), etc.

Bibliothèques C Standard pour la plateforme cible :


• Chaque plateforme embarquée a besoin de sa propre version des bibliothèques standard du langage C (libc), adaptée à
son architecture et à ses spécificités matérielles.

• 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é

3.2 - TOOLCHAIN / CHAINE D’OUTILS

• 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 principaux éléments qui composent une toolchain :

Outils de gestion de dépendances et de construction :

• Pour simplifier le processus de développement, la toolchain peut


inclure des outils de gestion de dépendances comme :

 Make, CMake, ou
 des outils plus spécifiques à la plateforme comme Buildroot ou
Yocto Project.

• Ces outils permettent de gérer les dépendances des logiciels,


d'automatiser la compilation et la génération d'images système
embarquées, et d'assurer la reproductibilité des builds.

70
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué

3.2 - TOOLCHAIN / CHAINE D’OUTILS

• 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é

3.2 - TOOLCHAIN / CHAINE D’OUTILS

• 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 trop restreinte en termes de stockage et/ou de mémoire,

 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

Exemples de Bootloaders du deuxième étage :

• 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é.

• Das U-Boot (Denx) :


Das U-Boot est une version spécifique d'U-Boot maintenue par Denx Software Engineering. Il est souvent utilisé dans des
applications industrielles et embarquées, offrant des fonctionnalités similaires à U-Boot avec des optimisations et des
ajouts spécifiques.

• GRUB (GRand Unified Bootloader) :


Bien que principalement connu comme le bootloader de choix pour les systèmes GNU/Linux sur PC, GRUB peut également
être utilisé comme bootloader de deuxième étage dans certains systèmes embarqués. Il offre une interface avancée
permettant de gérer le multiboot, les partitions de disque et les options de configuration avancées.

74
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué

3.3 - BOOTLOADER

Exemples de Bootloaders pour des cibles embarqués :


1er étage
2ème étage
+
+
Fourni par le
Open source
vendeur

Séquences de boot pour AT93 et OMAP3

Séquence de boot pour RaspberryPi

75
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué

3.4 - NOYAU LINUX

• 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 :

Gestion des ressources et du matériel :


• Le noyau Linux embarqué gère les ressources matérielles telles que : le processeur, la mémoire, les périphériques
d'entrée/sortie, etc.

• 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.

Support des périphériques :


• Le noyau Linux embarqué inclut des pilotes de périphériques pour communiquer avec les composants matériels
spécifiques (Interfaces de communications filaires CAN, SPI, I2C ou réseaux sans fils comme WIFI, Ethernet, Zigbee…)

• 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é

3.4 - NOYAU LINUX

• 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 :

• Le noyau Linux est hautement configurable grâce à son modèle


de configuration « Kconfig » et à l'outil de configuration
« menuconfig ».

• Cela permet aux développeurs de sélectionner et de


désélectionner des fonctionnalités, des pilotes et des sous-
systèmes en fonction des besoins spécifiques de leur application
embarquée.

• La personnalisation du noyau inclut également la prise en charge


de fonctionnalités spécifiques telles que la sécurité, les
protocoles réseau, les systèmes de fichiers, etc.
Interface de configuration du noyau
linux embarqué ARM avec menuconfig

77
CHAPITRE Introduction
II aux Systèmesdud’exploitation
3- Architecture Linux embarqué

3.4 - NOYAU LINUX

• Le noyau Linux est hautement portable sur toutes les architectures. Le code est donc divisé en plusieurs niveaux :

 Code générique à toutes les architectures : ARM, x86, PowerPC, MicroChip, …


 Code spécifique à une architecture : Par exemple pour juste pour ARM
 Code spécifique à un System-on-Chip : RaspberryPi, Atmel AT91, TI OMAP3, Freescale i.MX, …

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é

3.4 - NOYAU LINUX

79
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué

4.1 - DISTRIBUTIONS LINUX EMBARQUÉ

• Il existe plusieurs distributions Linux embarqués selon l’application embarquée ou le domaine


d’utilisation.

Raspberry Pi OS (anciennement Raspbian) : Cibles ARM


• Développé spécifiquement pour le Raspberry Pi, Raspberry Pi OS est une distribution Linux
basée sur Debian. Elle est optimisée pour le matériel Raspberry Pi et inclut une variété de
logiciels préinstallés, en faisant un choix populaire pour les projets d'enseignement, de
domotique et d'Internet des objets.

Ubuntu Core : Cibles ARM et x86


• Ubuntu Core est une version minimale et sécurisée d'Ubuntu, spécialement conçue pour les
systèmes embarqués et l'Internet des objets (IoT). Elle utilise les technologies de confinement
de snaps pour isoler les applications et garantir la sécurité du système.

OpenWrt : Cibles ARM, MIPS et x86


• OpenWrt est un système d'exploitation basé sur Linux utilisé principalement pour les routeurs
et les dispositifs de réseau sans fil. Il est connu pour sa flexibilité, sa capacité à être
personnalisé et sa gestion avancée des paquets logiciels.

80
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué

4.1 - DISTRIBUTIONS LINUX EMBARQUÉ

• Il existe plusieurs distributions Linux embarqués selon l’application embarquée ou le domaine


d’utilisation.

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.

PetaLinux : FPGA Xilinix


• Petalinux est une distribution spécifique pour les SoCs Xilinx, offrant un ensemble d'outils et
de flux de travail pour le développement, la personnalisation et la maintenance de systèmes
embarqués basés sur les FPGA de Xilinx.

KODI : Cibles ARM


• Kodi permet la gestion et la lecture de divers types de médias, y compris des vidéos, de la
musique, des photos, des podcasts et des fichiers d'images disque. Il prend en charge une large
gamme de formats et offre une bibliothèque organisée pour gérer tous les contenus.

81
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué

4.2 - DISTRIBUTIONS POUR RASPBERRY PI

• 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é

4.2 - DISTRIBUTIONS POUR RASPBERRY PI

• 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é

4.3 - INSTALLER UNE DISTRIBUTION SUR RASPBERRY PI

1. Préparer la carte mémoire microSD


• Insérer une carte microSD dans votre ordinateur à l'aide d'un adaptateur
si nécessaire.
• S’assurer qu'elle est formatée correctement avant de continuer (Raspberry
Pi Imager peut formater la carte automatiquement).

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.

3. Sélectionner la carte microSD


• Dans Raspberry Pi Imager, choisir la carte microSD sur laquelle est installé
Raspberry Pi OS.
• Sélectionner la bonne carte, car toutes les données seront effacées lors de
l'installation.

84
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué

4.3 - INSTALLER UNE DISTRIBUTION SUR RASPBERRY PI

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.

5. Finaliser et démarrer sur Raspberry Pi


• Une fois l'écriture terminée, Raspberry Pi Imager effectuera une
vérification pour s'assurer que l'image a été correctement écrite sur la
carte.
• Une fois confirmé, retirer la carte microSD en toute sécurité de votre
ordinateur et insérez-la dans votre Raspberry Pi.

6. Premier démarrage et configurer


• Connecter votre Raspberry Pi à un écran, un clavier et une souris, ainsi
qu'à l'alimentation.
• Le système d'exploitation démarrera pour la première fois et un processus
de configuration initiale sera lancé, y compris la création d'un mot de
passe pour le compte "pi" par défaut.

85
CHAPITRE Introduction
II 4-aux Systèmes
Distributions d’exploitation
à noyau Linux embarqué

4.4 - CONFIGURER LA DISTRIBUTION RASPBERRY PI OS

• « raspi-config » est un utilitaire en mode texte utilisé pour


configurer initialement la Raspberry Pi, y compris la configuration
du système, du réseau, des paramètres avancés et plus encore.

• Pour utiliser « raspi-config », il faut :


 Ouvrir un terminal sur votre Raspberry Pi,
 Taper la commande suivante
sudo raspi-config

• Naviguer à l'aide des touches fléchées et de la touche Entrée pour


sélectionner et configurer différents paramètres comme :
Exemple :
 Changer le mot de passe de l'utilisateur pi, On peut rendre disponible les GPIO, les
modules SPI/I2C, la caméra à travers :
 Configurer la localisation et le fuseau horaire,
 Activer ou désactiver l'interface graphique au démarrage, 5-- InterfacingOptions
 Configurer le réseau WiFi,
 Mettre à jour le système et les logiciels,

86
CHAPITRE Introduction
II aux Systèmes
5- Cible embarquée d’exploitation
pour Linux embarqué : Raspberry Pi

5.1 - PRÉSENTATION DE RASPBERRY PI

• Raspberry Pi est une carte d'ordinateur de type SoC ou une


mono-carte développée au Royaume-Uni par la « Raspberry Pi
Foundation ».

• Elle est devenue extrêmement populaire en raison de sa taille


compacte, de son faible coût et de sa flexibilité pour de
nombreux projets informatiques.

• Variantes des cartes RaspberryPi :


 RaspberryPi 1 Modèle B B+ A A+,
 RaspberryPi 1 Compute Module 1,
 RaspberryPi 2 Modèle B,
 RaspberryPi Compute Module 3,
 RaspberryPi 3 Modèle B B+ A+,
 RaspberryPi Compute Module 3+,
 RaspberryPi 4 modèle B,
 Raspberry Pi Zero et Pico,
 RaspberryPi 5.

87
CHAPITRE Introduction
II aux Systèmes
5- Cible embarquée d’exploitation
pour Linux embarqué : Raspberry Pi

5.2 - RASPBERRY PI 4 MODÈLE B

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

5.2 - RASPBERRY PI 4 MODÈLE B

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

5.3 - BENCHMARK : RASPBERRY PI 4B vs 3B+

• 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

5.4 - GPIO 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.

Répartition des Broches :

• Les broches GPIO sont numérotées de 1 à 40.

• Certaines broches ont des fonctions spécifiques


(par exemple, alimentation, masse, UART, I2C, SPI)
en plus de leur fonction GPIO standard.

91
CHAPITRE Introduction
II aux Systèmes
5- Cible embarquée d’exploitation
pour Linux embarqué : Raspberry Pi

5.5 - VERSIONS RASPBERRY PI & BCM

• 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 :

Modèle Chipset Broadcom

Raspberry Pi 1 Model A/B BCM2835

Raspberry Pi 1 Model A+/B+ BCM2835

Raspberry Pi 2 Model B BCM2836

Raspberry Pi 3 Model B/B+ BCM2837

Raspberry Pi 4 Model B BCM2711

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é

6.1 - RAPPEL SUR LA COMPILATION

• La compilation est le processus par lequel le code source écrit dans un


langage de programmation comme le C ou le C++ est traduit en langage
machine exécutable par l'ordinateur. Les étapes de compilation :

• 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é

6.1 - RAPPEL SUR LA COMPILATION

94
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué

6.2 - OUTILS DE COMPILATION NATIVE

• 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.

Exemple 1 : « Compilation basique de codes en C et C++ » Compilateur pour le C

** Commande de compilation d’un code en C : gcc -o programme programmesource.c

Spécifie le nom du fichier Fichier source en C


exécutable de sortie

** Commande de compilation d’un code en C : g++ -o programme programmesource.cpp

Compilateur pour le C++


Fichier source en C++
95
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué

6.2 - OUTILS DE COMPILATION NATIVE

Exemple 2 : « Compilation basique de codes en C avec bibliothèque externe à considérer »

** Commande de compilation d’un code en C :

gcc -o programme programmesource.c -lexemple

Indique à gcc de rechercher une


bibliothèque appelée
« libexemple »

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.

• Autrement, on peut spécifier des chemins différents en utiliser les options « -I » et « -L ».

96
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué

6.3 - OPTIMISATION DE LA COMPILATION

• 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.

gcc -o programme programmesource.c -lexemple -O


Indique à gcc le niveau
d’optimisation à considérer

• 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 :

Niveau d’optimisation Désignation Impact sur la compilation


Ce niveau désactive l'optimisation du code. Le compilateur produit du code rapide à compiler, mais
Aucune optimisation -O0
souvent moins performant en termes d'exécution.
Active les optimisations qui n'augmentent pas la taille du code. Cela inclut la réduction du temps
Optimisation de base -O1
d'exécution des programmes.
Comprend toutes les optimisations de base, et ajoute d'autres optimisations qui peuvent augmenter la
Optimisation standard -O2
taille du code.
Active toutes les optimisations possibles. Peut potentiellement augmenter la taille du code généré, mais
Optimisation agressive -O3
optimise généralement plus efficacement le temps d'exécution des programmes.
Optimise le code pour réduire la taille du programme généré, même si cela peut entraîner une légère
Optimisation de la taille -Os
augmentation du temps d'exécution.

97
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué

6.4 - COMPILATION SOUS RAPBERRY PI OS

Exemple d’application : « Compilation sous Raspberry Pi OS »

• 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) {

pinMode(LED_GPIO, OUTPUT); // Configuration du GPIO pour la LED en mode sortie

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é

6.4 - COMPILATION SOUS RAPBERRY PI OS

• Pour clignoter la LED à travers la pin 17 du GPIO de la carte


RaspberryPi 4B, le code en C fait appel à une bibliothèque externe
wiringPI.h

• Donc, la 1ère étape à considérer avec la compilation est d’installer sous


la distribution RaspberryPi OS cette bibliothèque par le biais de cette
commande :
sudo apt-get install wiringpi

• Compilation du code en C en native en considérant la bibliothèque


wiringpi et sans optimisation :
gcc -o clignoter_led clignoter_led.c -lwiringPi

• 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

• Exécution du code à travers la commande suivante pour tester le fonctionnement :


./clignoter_led
99
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué

6.5 - AUTOMATISATION DE LA COMPILATION

• 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é

6.5 - AUTOMATISATION DE LA COMPILATION

Structure basique d’un fichier Makefile:

# 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.

# Bibliothèques nécessaires • $(TARGET): $(SRCS) :


LIBS = -lexemple Définit la règle pour construire l'exécutable $(TARGET). Cette
règle indique que $(TARGET) dépend de $(SRCS), ce qui signifie
# Nom de l'exécutable que si programmesource.c est modifié, $(TARGET) doit être
TARGET = programme reconstruit.

# Sources • $(CC) $(CFLAGS) -o $(TARGET) $(SRCS) $(LIBS) :


SRCS = programmesource.c Commande de construction de $(TARGET). Cette commande utilise
le compilateur $(CC) avec les options de compilation $(CFLAGS),
all: $(TARGET) spécifie le nom de l'exécutable avec -o $(TARGET), indique les
fichiers source $(SRCS), et lie les bibliothèques nécessaires
$(TARGET): $(SRCS) $(LIBS).
$(CC) $(CFLAGS) -o $(TARGET) $(SRCS) $(LIBS)

101
CHAPITRE Introduction
II aux Systèmes
6- Compilation native d’exploitation
sous Linux embarqué

6.6 - AUTOMATISATION DE LA COMPILATION SOUS RASPBERRY PI OS

Exemple d’application : « Automatisation de la compilation sous Raspberry Pi OS »

• 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

# Bibliothèques nécessaires (WiringPi) • Sur le terminal de commande, en se


LIBS = -lwiringPi positionnement dans l’arborescence sous le
même répertoire, taper simplement la
# Nom de l'exécutable commande :
TARGET = clignoter_led Make

# Sources • La compilation se fera de façon automatisée


SRCS = clignoter_led.c sans avoir recours à utiliser la compilation
manuelle vue précédemment, et ceci selon
all: $(TARGET) les règles de compilation définies dans le
fichier Makefile.
$(TARGET): $(SRCS)
$(CC) $(CFLAGS) -o $(TARGET) $(SRCS) $(LIBS)
102

Vous aimerez peut-être aussi