0% ont trouvé ce document utile (0 vote)
7 vues39 pages

Structure des Systèmes Linux Embarqués

Le document présente un cours sur Linux embarqué dans le cadre de la Licence Systèmes Informatiques Embarqués à l'Ecole Supérieure de Technologie Dakhla. Il couvre les généralités des systèmes embarqués, la méthodologie de création et d'utilisation d'un système Linux embarqué, ainsi que la structure et le fonctionnement du noyau Linux. Les sections détaillent également le démarrage du système et la gestion des pilotes et modules du noyau.

Transféré par

magusrappelz3
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)
7 vues39 pages

Structure des Systèmes Linux Embarqués

Le document présente un cours sur Linux embarqué dans le cadre de la Licence Systèmes Informatiques Embarqués à l'Ecole Supérieure de Technologie Dakhla. Il couvre les généralités des systèmes embarqués, la méthodologie de création et d'utilisation d'un système Linux embarqué, ainsi que la structure et le fonctionnement du noyau Linux. Les sections détaillent également le démarrage du système et la gestion des pilotes et modules du noyau.

Transféré par

magusrappelz3
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

Licence Systèmes Informatiques Embarqués (SIE)

Ecole Supérieure de Technologie Dakhla (ESTD)


Université Ibn Zohr (UIZ)

Linux Embarqué

Semestre 5 | Année universitaire 2024-2025


ESTD-UIZ Pr. Mohamed OUTANOUTE L-SIE 1
Plan
Partie I :
Généralités sur les systèmes embarqués
1. Les logiciels embarqués et leurs domaines d'application
2. Typologie des systèmes embarqués
3. Linux comme système embarqué
4. Choix matériels pour un système Linux embarqué

Partie Il :
Méthodologie de création/Utilisation d'un système Linux
embarqué
1. Structure de Linux
2. Construction du système
3. Développement pour linux embarqué

ESTD-UIZ L-SIE 2
Développement pour Linux Indroduction

▪ Linux est un système d'exploitation basé sur Unix, qui suit une architecture
modulaire et hiérarchique. Il repose sur un noyau robuste, offrant une gestion
efficace des processus, de la mémoire et des périphériques

▪ O.S Linux est fortement portable. Une même application peut être utilisée
(portée) sur :
– Un nombre important de processeurs hard cores: RISC-V, MIPS, ARM,
PowerPC, Zynq…
– Un nombre important de processeurs softcores: RISC-V, NIOS II (Altera/Intel),
MicroBlaze (Xilinx/AMD), Leon...
– Un nombre important de plateformes cibles ou BSP (Board Support
Package).
▪ Linux est un système d'exploitation de choix pour les systèmes embarqués. On
parle alors de Linux embarqué.

ESTD-UIZ L-SIE 3
Développement pour Linux Indroduction

▪ Linux embarqué est donc une version du noyau Linux standard (vanilla) adaptée
à un système embarqué.
▪ Suivant les capacités du système embarqué (processeur), on retrouve toutes les
fonctionnalités du noyau Linux standard ou bien des fonctionnalités modifiées
(par exemple quand pas de MMU).
▪ Linux tourne originellement sur plateforme x86 32 bits (i386) et supérieure, avec
8 Mo de RAM.
Il faut donc un processeur 32 bits avec MMU (ou à défaut 32 bits sans MMU avec
µcLinux).

ESTD-UIZ L-SIE 4
Structure de Linux
Noyau (Kernel) Linux

ESTD-UIZ L-SIE 5
Structure de Linux
Espace utilisateur / Espace noyau
▪ Deux niveaux d’exécution

• Mode/Espace noyau/utilisateur administrateur/root: tous les


privilèges sur le matériel; noyau et pilotes de périphériques

• Mode/Espace utilisateur: pas de privilèges, pas d’accès direct au


matériel; bibliothèques et les applications. Par défaut, les utilisateurs
ordinaires ne peuvent pas toucher aux fichiers d'autres utilisateurs. En
particulier, ils ne peuvent ni modifier les paramètres du système, ni
supprimer des programmes, etc

▪ Cette séparation permet de forcer les applications à utiliser les services du


noyau pour accéder aux ressources et d’isoler les applications du noyau et
les applications entres-elles (avec l’aide de la MMU)

▪ Cette séparation est assurée par le processeur qui fournit différents modes
d’exécution.

ESTD-UIZ L-SIE 6
Structure de Linux Quelques rappels

Espace utilisateur / Espace noyau

▪ Le passage de l’espace utilisateur vers l’espace noyau à l’autre se fait


principalement grâce aux interruptions;
▪ Lorsqu’une interruption survient, le processeur bascule en mode noyau
▪ Les gestionnaires d’interruption sont intégrés au noyau
▪ Sources des interruptions
• Matériel: périphérique signalant la survenue d’un événement
(opération terminée, données reçues...), y compris l’horloge (utile
pour le multitâche préemptif)
• Processeur: problèmes avec le programme en cours d’exécution
(instruction invalide, faute de page, division par zéro...)
• Logiciel: appels système notamment

ESTD-UIZ L-SIE 7
Développement pour Linux Indroduction

Système Linux

La structure du système est de forme concentrique comme décrit dans cette figure.

Appels directs
▪ Noyau (kernel) : est l’élément principal
du système, réalisant les fonctions
essentielles: gestion des tâches et
mémoire, interface entre le matériel et
les applications (pilotes).
Matériel
▪ libc : bibliothèque principale contenant
les fonctions de base utilisées par les
Noyau applicatifs.
Bibliothèque C
(GlibC)
▪ Applications (ou commandes) : livrées
avec le système ou développées pour
Applications des besoins spécifiques.

▪ À ces éléments standards il faut ajouter un programme de démarrage ou


bootstrap comme LILO (LInux LOader).

ESTD-UIZ L-SIE 8
Structure de Linux
Les composants principaux de Linux

L'architecture de Linux se compose de plusieurs couches, organisées de


manière modulaire :

ESTD-UIZ L-SIE 9
Développement pour Linux Indroduction

Démarrage d’un système Linux

• Le programme de démarrage ou chargeur est très dépendant du matériel utilisé.


• Le schéma de démarrage d’un système Linux peut se décomposer comme suit :
1. Le POST (Power-On Self Test) est une série de tests effectués par le BIOS
ou UEFI au démarrage, il permet de:
• Vérifier que les composants matériels essentiels (RAM, CPU, carte
mère, clavier, disque dur, etc.) fonctionnent correctement.
• Détecter les erreurs matérielles avant de poursuivre le processus
de démarrage.
• Signaler les erreurs via des bips sonores ou un affichage à l’écran.

2. Bootstrap ou bootloader : Le bios d'un PC se charge de lire le MBR (Master


Boot Record, 512 octets) à partir de son lecteur de boot (hd, fd, CD, usb,...).
3. Chargement du système par son gestionnaire d'amorçage (Linux Loader) ou
un programme équivalent, comme GRUB.

ESTD-UIZ L-SIE 10
Développement pour Linux Indroduction

Démarrage d’un système Linux

4) Chargement du noyau Linux (ex: /boot/[Link]-yy) s’accompagne


avec:

• l’initialisation des périphériques matériels indispensables au démarrage, et


chargement des pilotes de périphériques associés.

• Le noyau Linux tente également de charger sa partition principale (root


partition) sur laquelle il ira chercher les éléments nécessaires à la suite du
lancement du système.

5) Exécution du programme du programme init standard, ce dernier explore le


fichier de configuration /etc/inittab ou /bin/systemd qui contient le chemin
d’accès à un script de démarrage, comme ceci :
# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.d/[Link]
6) Lancement des services...

ESTD-UIZ L-SIE 11
Structure de Linux
Structure globale du noyau
Le noyau est le cœur de Linux. le noyau est un fichier exécutable, monolithique
ou presque, chargé d’assurer la gestion :
▪ Des processus : planification, exécution multitâche et gestion des priorités.
▪ De la mémoire : allocation et libération de mémoire pour les processus.
▪ Des périphériques : communication avec le matériel via des pilotes.
▪ Du système de fichiers : accès et gestion des fichiers sur les disques.
▪ Des appels système : interface entre les programmes utilisateur et le
matériel.
Linux suit une architecture monolithique modulaire, où le noyau peut charger
des modules à la demande pour étendre ses fonctionnalités.

ESTD-UIZ L-SIE 12
Structure de Linux
Structure globale du noyau

▪ Dans une distribution Linux classique, le noyau est physiquement représenté


par un fichier localisé sur le répertoire /boot :
$ ls -l /boot/vmlinuz-6.8.0-52-generic
rw------- 1 root root 14928264 jan 15 17:51 /boot/vmlinuz-6.8.0-52-generic
▪ Le nom du noyau est libre mais il est généralement suffixé en fonction de la
version du noyau, Le numéro de version suit généralement le format suivant :
<Version majeure>.<Version mineure>.<Révision>[-<Numéro de build>][-<Suffixe spécifique>
Exemple : 6.8.0-52-generic

composant Explication
Version majeure du noyau (grands changements, nouvelles fonctionnalités
6
importantes).
Version mineure (ajouts de fonctionnalités, améliorations et corrections de
8
bugs).
0 Révision ou correctif (mise à jour mineure, correction de failles de sécurité).
52 Numéro de build spécifique à la distribution (indique des optimisations)
generic Suffixe spécifique à la distribution (ex: generic, lowlatency, rt (temps réel).

ESTD-UIZ L-SIE 13
Structure de Linux
Structure globale du noyau
▪ Le noyau Linux utilise également un fichier nommé [Link] qui contient
des informations sur des adresses internes du noyau. Ces informations sont
utiles à la gestion des modules décrits ci-après. Le fichier [Link] est
également présent sur le répertoire /boot

ESTD-UIZ L-SIE 14
Structure de Linux
Les pilotes et modules du noyau

▪ Le noyau Linux utilise le plus souvent des modules qui peuvent être
dynamiquement chargés et déchargés en fonction des besoins du système.
▪ Les pilotes sont des morceaux de code qui permettent au noyau d'interagir
avec le matériel (clavier, souris, carte réseau, disque dur, etc.).

▪ Linux utilise un modèle de noyau modulaire, ce qui signifie que les pilotes
peuvent être chargés dynamiquement sous forme de modules du noyau
(.ko)(kernel object).

▪ L’utilisation des modules permettra d’ajouter dynamiquement des


périphériques sans redémarrer le système.
ls -l /lib/modules
total 8
drwxr-xr-x 5 root root 4096 sep 11 15:21 6.8.0-40-generic
drwxr-xr-x 5 root root 4096 fév 12 15:18 6.8.0-52-generic

ESTD-UIZ L-SIE 15
Structure de Linux
Les pilotes et modules du noyau

À chaque sous-répertoire correspond une version du noyau. Dans le cas


présent, les modules utilisés par le noyau seront localisés dans le répertoire
6.8.0-40-generic
~$ ls -l /lib/modules/6.8.0-40-generic/
total 7016
lrwxrwxrwx 1 root root 39 fév 12 00:17 build -> /usr/src/linux-headers-6.8.0-
40-generic
drwxr-xr-x 2 root root 4096 jui 30 2024 initrd
drwxr-xr-x 17 root root 4096 sep 11 15:20 kernel
-rw-r--r-- 1 root root 1659815 sep 11 15:21 [Link]
-rw-r--r-- 1 root root 1616366 sep 11 15:21 [Link]
-rw-r--r-- 1 root root 9714 jui 30 2024 [Link]
-rw-r--r-- 1 root root 29103 sep 11 15:21 [Link]
-rw-r--r-- 1 root root 11907 sep 11 15:21 [Link]
…….

ESTD-UIZ L-SIE 16
Structure de Linux
Les pilotes et modules du noyau

Les modules sont répartis dans des sous-répertoires selon une classification
fonctionnelle.
La liste ci-après permet de visualiser les modules correspondant à des pilotes
réseau :

~$ ls -l /lib/modules/6.8.0-40-generic/kernel/drivers/net | head
total 1304
-rw-r--r-- 1 root root 123569 jui 30 2024 [Link]
drwxr-xr-x 2 root root 4096 sep 11 15:20 arcnet
-rw-r--r-- 1 root root 41913 jui 30 2024 [Link]
drwxr-xr-x 2 root root 4096 sep 11 15:20 bonding
drwxr-xr-x 2 root root 4096 sep 11 15:20 caif
drwxr-xr-x 14 root root 4096 sep 11 15:20 can
drwxr-xr-x 11 root root 4096 sep 11 15:20 dsa
-rw-r--r-- 1 root root 19529 jui 30 2024 [Link]
-rw-r--r-- 1 root root 20761 jui 30 2024 [Link] …….

Remarque: Les modules sont manipulés grâce à un paquetage nommé modutils.

ESTD-UIZ L-SIE 17
Structure de Linux
Les pilotes et modules du noyau

▪ Le fichier [Link] contient les dépendances entre les modules sous la


forme d’une simple liste contenant une définition de dépendance par ligne.
Cette liste est générée au démarrage du système par la commande:
depmod -a
▪ On doit également utiliser cette commande chaque fois que l’on ajoute un
nouveau module à l’arborescence des modules. Un extrait de la liste est
présenté ci-après :

/lib/modules/6.8.0-40-generic/kernel/arch/x86/kvm/[Link]:
/lib/modules/6.8.0-40-generic kernel/virt/lib/[Link]

La ligne ci-après montre que le module kvm nécessite la présence du


module irqbypass

ESTD-UIZ L-SIE 18
Structure de Linux
Les pilotes et modules du noyau

▪ Bien que les modules soient normalement chargés de manière automatique


par le système, nous allons décrire en quelques lignes les principales
commandes de manipulation des modules,

▪ L’exemple d’un module hello.o sans dépendance avec aucun autre module.
On peut forcer le chargement de ce module au moyen de la commande :

# insmod hello.o

▪ On peut aussi ajouter ce module à l’arborescence des modules standards en


effectuant :
#sudo cp hello.o /lib/modules/$(uname -r)/kernel/drivers/char/
puis charger ce module avec la commande : # insmod hello
On peut également vérifier sa présence en utilisant la commande lsmod :
# dmesg | tail -1
# lsmod

ESTD-UIZ L-SIE 19
Structure de Linux
Les pilotes et modules du noyau

▪ La trace du chargement effectif du module est visible dans le fichier des


messages du noyau. # dmesg | tail -1
▪ On peut également vérifier sa présence en utilisant la commande: # lsmod
▪ Lors du chargement du module, il est possible de spécifier des paramètres
par la ligne de commande : insmod bttv card=39
▪ Les paramètres peuvent être spécifiés dans le fichier /etc/[Link] afin
d’être utilisés automatiquement lors du chargement du module.
▪ Pour décharger le module, on utilise la commande rmmod : # rmmod hello

ESTD-UIZ L-SIE 20
Structure de Linux
Les pilotes et modules du noyau

▪ Dans le cas de modules dépendant d’autres modules, on ne peut cependant


pas utiliser insmod. Si par exemple le module1 nécessite la présence du
module2. Dans ce cas-là, on devra utiliser la commande modprobe qui
chargera le module, ainsi que tous les modules dépendants :
# modprobe module1
# lsmod | grep module2
De ce fait, il n’est pas possible de décharger le module2 car celui-ci est
maintenant utilisé par le module1 : # rmmod module2
On devra tout d’abord décharger module1, puis module2 :
# rmmod module1
# rmmod module2

ESTD-UIZ L-SIE 21
Structure de Linux
Le Shell et l’Interface Utilisateur

▪ Le shell est l'interface entre l'utilisateur et le système d'exploitation. Il permet


d'exécuter des commandes et d'interagir avec le noyau.
▪ Les Types de Shell :
• Bash (Bourne Again Shell) : le plus utilisé sur Linux;
• Zsh, Fish, Ksh : shells alternatifs avec des fonctionnalités avancées.

▪ Pour connaître le shell utilisé :


echo $SHELL

ESTD-UIZ L-SIE 22
Structure de Linux
Le système de fichiers Linux

▪ Le système d’exploitation Linux est remarquablement bien organisé en ce qui


concerne a répartition des fichiers système.
▪ L'organisation du système de fichiers racine sous Linux en termes de
répertoires est bien définie par le Filesystem Hierarchy Standard (FHS).
▪ Linux utilise un système de fichiers hiérarchique avec une structure en arbre
commençant par / (la racine).
La plupart des systèmes Linux respectent cette norme.
▪ Les applications s'attendent à cette organisation.
▪ Cela facilite le travail des développeurs et des utilisateurs, car l'organisation
du système de fichiers est similaire sur tous les systèmes,

ESTD-UIZ L-SIE 23
Structure de Linux
Chemins de fichiers («path»)

Un chemin est une séquence de répertoires emboîtés avec un fichier ou


un répertoire à la fin, séparés par le caractère /
▪ Chemin relatif: Relatif au répertoire courant
documents/fun/microsoft_jokes.html
▪ Chemin absolu:
/home/bill/bugs/crash9402031614568
▪ / : répertoire racine («root»).
Le début des chemins absolus pour tous les fichiers du système de
fichiers (même pour les fichiers sur des périphériques externes ou
de partage réseau).

ESTD-UIZ L-SIE 24
Structure de Linux
Le système de fichiers Linux
Les répertoires importants:
Répertoire Rôle
/boot Images, initrd et fichiers de configuration du noyau
/bin Commandes de base du système comme ls, cp, mv
/etc Fichiers de configuration système
/home Répertoires personnels des utilisateurs
/var Données dynamiques (logs, files d’attente, caches)
/dev Fichiers représentant des périphériques
/proc Informations système et processus en cours
/sys Informations sur le matériel
/lib Bibliothèques partagées nécessaires aux programmes
/usr Programmes et fichiers utilisateur
/media Points de montage pour les médias amovibles
Montage manuel temporaire de partitions, disques réseau,
/mnt
systèmes de fichiers spéciaux
/tmp Fichiers temporaires

ESTD-UIZ L-SIE 25
Structure de Linux
Le système de fichier /proc
▪ Pour communiquer avec l’espace utilisateur, le noyau Linux utilise un concept
emprunté à Unix System V : le système de fichier /proc.
▪ À la différence des systèmes de fichiers classiques qui sont associés à des
périphériques réels, le système de fichier /proc est virtuel.
▪ Sa structure de système de fichier en fait une représentation facile pour
manipuler des paramètres du noyau Linux.
▪ En particulier, la commande lsmod de lecture des modules chargés n’est en
fait qu’un raccourci pour la visualisation du fichier virtuel /proc/modules :
# cat /proc/modules
▪ Le système de fichier /proc est également utilisable en écriture, ce qui permet
de modifier dynamiquement le comportement du noyau Linux sans aucune
compilation.
▪ On peut visualiser les paramètres standards du système comme la mémoire
disponible au moyen de /proc/meminfo, la version du noyau avec
/proc/version, le type de processeur utilisé avec /proc/cpuinfo, ou les
systèmes de fichiers supportés par le noyau avec /proc/filesystems.

ESTD-UIZ L-SIE 26
Structure de Linux
Le système de fichier /proc
▪ On peut visualiser les paramètres standards du système comme la mémoire
disponible au moyen de /proc/meminfo, la version du noyau avec
/proc/version, le type de processeur utilisé avec /proc/cpuinfo, ou les
systèmes de fichiers supportés par le noyau avec /proc/filesystems.
▪ De même, les valeurs numériques présentes dans /proc représentent les
zones d’information des processus courants, chaque valeur correspondant
au PID (Processus IDentifier) du processus en question. Ces sous-
répertoires contiennent les informations propres au processus en question :
# ls -l /proc/25832

▪ Par exemple, le fichier status contient des informations sur l’état du


processus en question:
# cat /proc/25832/status
Name: httpd
State: S (sleeping)
Pid: 25832
PPid: 2173
...
ESTD-UIZ L-SIE 27
Structure de Linux
Les Bibliothèques Système (glibc, libc,...)

▪ Bibliothèques : Boîtes à outils logiciels propriétaires ou libres (open-source)


offrant toute une gamme de fonctions facilitant le développement
d’applications;

▪ Bibliothèques standard (C, Posix, …)


• Interface standardisée entre les services du noyau Linux et les
applications fonctionnant dans l’espace utilisateur,
▪ Les bibliothèques système fournissent des fonctionnalités essentielles
utilisées par les applications.
Exemples:
• Glibc (GNU C Library) : bibliothèque standard de C sous Linux.
• libm : fonctions mathématiques avancées.
• libpthread : gestion des threads.
• …
Pour lister les bibliothèques utilisées par un programme : ldd /bin/ls

ESTD-UIZ L-SIE 28
Structure de Linux Bootloader

Les bootloaders

Logiciel démarré par le processeur, responsable d’initialiser le matériel et


d’amorcer le système d’exploitation Linux,
Sur le marché, il existe un grand nombre de bootloaders commerciaux ou
open source. Ces bootloader sont souvent spécialisés soit pour un type de
processeur, p. ex. en open source :
▪ Architecture Intel / PC : GRUB (GRand Unified Bootloader), LILO (Linux
loader), RedBoot (Red Hat Embedded Debug and Bootstrap firmware),
U-Boot (Universal Bootloader), …
▪ Architecture MIPS : RedBoot, U-Boot, …
▪ Architecture ARM : RedBoot, U-Boot, …

ESTD-UIZ L-SIE 29
Structure de Linux
Analyse du processus de démarrage de Linux

▪ Firmware (bootstrap) : placé dans une ROM/Flash à la première adresse


accédée par le processeur après un redémarrage (reset), il initialise ce
dernier et passe la main au bootloader;
▪ Bootloader : chargé de lancer le noyau en le plaçant en RAM ou en
l’exécutant sur place après l’avoir récupéré :
• à une adresse prédéterminée sur un support de stockage (ROM,
Flash, disque dur, CDROM...),
• sur un système de fichiers qu’il sait accéder,
• par le réseau (BOOTP/TFTP 2).

ESTD-UIZ L-SIE 30
Structure de Linux
Analyse du processus de démarrage de Linux

▪ Noyau : après une phase d’initialisation de tous ses composants, il


monte le système de fichiers racine (rootfs) disponible :
• sur un support de stockage, ou
• en mémoire, préchargé par le bootloader, ou
• via le réseau.
avant de lancer finalement le premier processus (init) ;
▪ Le processus init lance les applicatifs et autres services du système...

ESTD-UIZ L-SIE 31
Structure de Linux Bootloader

Les bootloaders : Détail de la séquence de boot

▪ Architecture Bootloader : Lilo, Syslinux, Grub,


U-Boot, …
▪ initrd (INITial RamDisk) : image du noyau
minimal initialisé au démarrage du système et
indique où trouver le FS (ex : root=/dev/sdb2)
▪ init: Gère tous les processus y compris le
noyau
▪ inittab : Fichier de configuration de init situé
dans /etc. Définit les niveaux d’exécution et
les terminaux virtuels (tty)
▪ Scripts de rcx.d: contiennent les scripts de
démarrage des services suivant les niveaux
d'exécution (sellon l'ordre)

ESTD-UIZ L-SIE 32
Structure de Linux Bootloader

Choix d’un bootloader

Le choix d’un bootloader adapté à vos besoins est une tâche ardue.
Ci-dessous quelques facteurs à considérer lors du choix :
• Est-ce qu’il supporte mon choix de processeur ?
• A-t-il déjà été porté sur une carte similaire à la mienne ?
• Est-ce qu’il supporte les fonctions dont j’ai besoin ?
• Est-ce qu’il supporte les périphériques que j’ai prévu d’utiliser ?
• Existe-t-il une large communauté d’utilisateurs d’où je pourrai obtenir de
l’aide ?
• Existe-t-il des fournisseurs commerciaux dont je pourrai acheter du
support ?

ESTD-UIZ L-SIE 33
Structure de Linux Bootloader

U-Boot
Dans les systèmes embarqués, «U-Boot» est probablement l’un des
bootloaders des plus populaires.
Quelques caractéristiques:
• Processeurs: ARM, MIPS, x86, m68k, …
• Systèmes opératifs: Linux, VxWorks, FreeBSD, …
• Interfaces: série, Ethernet, flash card
• Protocoles: tftp, dhcp
• Systèmes de fichiers: JFFS2, UBI/UBIFS, ext4, …
Source code
• Licence GPLv2
• Langage: développé en C (sans OS ni interruptions)
• Taille de l’exécutable: ~300KiB

ESTD-UIZ L-SIE 34
Structure de Linux
Disques mémoire (Ramdisks ou tmpfs)
RAM Disk :
C'est un système de fichiers minimaliste chargé en RAM au démarrage du
système qui contient des pilotes nécessaires au démarrage du noyau. Ce
RAM Disk est bien sûr détruit après démarrage complet du noyau.
On peut alors préciser que le RAM Disk est un système de fichiers
minimaliste contenant un nombre limité de modules pour le démarrage
correct du noyau.
Linux offre la possibilité de travailler sur des disques mémoire.
Avantages :
Rapidité d'accès aux données.
Faible coût de la RAM par rapport à d'autres supports physiques comme la
mémoire flash.

ESTD-UIZ L-SIE 35
Structure de Linux
Initrd : initial ramdisk

▪ Image d'un système de fichiers (temporaire) utilisé par Linux durant le


boot.
▪ L'image est chargée en mémoire vive et permet d'avoir un système de
fichiers (minimal).
▪ Généralement utilisé pour la préparation avant que le vrai système de
fichiers racine puisse être monté ou bien démarrer des systèmes sans
disque (diskless).

ESTD-UIZ L-SIE 36
Structure de Linux Quelques rappels

Appels systèmes

▪ L’interface principale entre le noyau et l’espace utilisateur est constituée des


appels système.
▪ Il existe environ 400 appels système fournissant les principaux services du
noyau: opérations sur les fichiers et les périphériques, gestion des processus,
gestion de la mémoire, …

▪ Les appels systèmes ne sont en général pas réalisés directement par les
applications mais elles utilisent les fonctions de la bibliothèque C(glibc), qui
facilitent leur utilisation.

ESTD-UIZ L-SIE 37
Structure de Linux
Composants du système Linux embarqué

▪ Applications
Applications logicielles implémentant la fonctionnalité spécifique du
système;

▪ Matériel (Hardware)
Infrastructure électronique générique ou spécifique du système
embarqué.

ESTD-UIZ L-SIE 38
Structure de Linux
Processus de compilation

Le processus de compilation se décompose


en 4 étapes :
▪ Préprocesseur: traite les macro-
commandes des fichiers C (#include,
#define, #ifdef, __FUNCTION__...) ;
▪ Compilateur : transforme les fichiers
sources C en fichiers sources
d’assemblage dédiés à une plate-forme;
▪ Assembleur : transforme les fichiers
sources d’assemblage en objets binaires;
▪ Édition de liens : construction d’un
exécutable à partir des objets binaires et
des bibliothèques statiques (archives).

ESTD-UIZ L-SIE 39

Vous aimerez peut-être aussi