Vous êtes sur la page 1sur 87

Plan du cours

 Introduction aux systèmes embarqués

 Les systèmes d’exploitation

 Unix/Linux embarqué

 Méthodologie de création d’un système Linux


embarqué
 Développement et mise au point d’applications
pour le système embarqué
Le système Unix
 Unix est un système d’exploitation
 découle du projet MULTICS (Multiplexed Information and
Computing Service) initié en 1964 par le MIT, General Electric
et les laboratoires BELL. Ce projet avait pour but de proposer
un système fiable, qui soit multi-utilisateurs et avec lequel le
travail en tâche de fond soit possible.
 Conçu par Ken Thompson et écrit en langage C, par Dennis
Ritchie, afin de le rendre portable.
 Gère des ordinateurs départementaux, des stations de travail,
mais aussi des micro-ordinateurs.
 Protégé par un copyright, seules les grandes entreprises sont
autorisées à utiliser le nom UNIX, IBM AIX, Sun Solaris et HP-
UX sont tous des systèmes d’exploitation UNIX.
 La plupart des systèmes UNIX sont de nature commerciale.
Principales caractéristiques d'Unix
 Unix est un système d’exploitation
 Multi-utilisateurs et multi-tâches.
 Il possède un ou plusieurs interpréteurs de commandes (shell)
ainsi qu'un grand nombre de commandes et de nombreux
utilitaires (assembleur, compilateurs pour de nombreux
langages, traitements de texte, messagerie électronique, ...).
 Il possède une grande portabilité, ce qui signifie qu'il est
possible de mettre en œuvre un système Unix sur la quasi-
totalité des plates-formes matérielles.
 De nos jours les systèmes Unix sont très présents dans les
milieux professionnels et universitaires grâce à leur grande
stabilité, leur niveau de sécurité élevé et le respect des grands
standards, notamment en matière de réseau.
 root: utilisateur administrateur avec tous les privilèges.
Principales caractéristiques d'Unix
 Supporte plusieurs processeurs
 Extrêmement flexible:
 Hiérarchie arborescente gérée en « système de fichiers »
 Gestion hiérarchisée des processus
 Scalable
 Système ouvert: UNIX a été normalisé à plusieurs reprises.
L’OSF a proposé OSF/1. Ensuite, l’Open Group a proposé
UNIX 95, puis UNIX 98. Quant au comité IEEE, il a défini la
norme POSIX.
 Un lien fort avec le langage C.
À propos la sécurité: 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.
La norme POSIX
La norme POSIX (Portable Operating System Interface) a été développée
par l'IEEE (Institute of Electrical and Electronic Engineering) et standardisée par
l'ANSI (American National Standard Institute) et l'ISO (International Standard
Organisation). Le but de POSIX est d'obtenir la portabilité des logiciels au
niveau de leur code source indépendamment du matériel et afin de pouvoir
migrer d’un système à l’autre moyennant une compilation des sources du
programme.
Le standard POSIX est divisé en plusieurs sous-standards dont les principaux
sont les suivants :
 IEEE 1003.1-1990 : POSIX Partie 1 : Interface de programmation (API)
système. Ce standard contient la définition de ces fonctions (Bindings) en C.
 IEEE 1003.2-1992 : Interface applicative pour le shell et applications annexes
pour les systèmes de type UNIX.
 IEEE 1003.1b-1993 : Interface de programmation (API) temps réel. Ajout du
support de programmation temps réel au standard précédent. On parle
également de POSIX.4.
 IEEE 1003.1c-1995 : Interface de programmation (API) pour le multithreading.
Architecture système d'Unix
applications graphiques des utilisateurs
Navigateur web, office, multimedia...
Applications en ligne de commande
ls, mkdir, wget, ssh, gcc ... Espace
Librairies partagées utilisateur
libjpeg, libstdc++, libxml...

Librairie C
GNU C library, uClibc...
Noyau système Espace
Linux, Hurd... noyau
Matériel et périphériques
Matériel
Le système Linux
 Noyau libre semblable à un noyau Unix, conçu par Linus
Torvalds en 1991.
 Le système complet se repose sur les outils GNU:
bibliothèque C, gcc, binutils, fileutils, make, emacs…
 Le système complet est donc appelé “GNU / Linux”
 Très tôt partagé comme Logiciel Libre (Licence GPL), ce qui
attira des contributeurs et des utilisateurs de plus en plus
nombreux.
 Depuis 1991, connaît une croissance supérieure à tout
autre système d'exploitation (pas seulement Unix).

GNU est un système d'exploitation et signifie en anglais «GNU’s Not UNIX»


Distributions GNU / Linux
 Linux en combinaison avec l’OS GNU: se chargent de publier un
ensemble cohérent de versions compatibles du noyau, de la
bibliothèque C, des compilateurs, des outils ... Cela représente un
travail très conséquent !

 Les outils sont disponibles sous forme de paquetages qui peuvent


facilement être installés, supprimés ou mis à jour. Les
dépendances entre outils sont gérées automatiquement.

 Distributions commerciales: incluent de l'assistance technique. Le


code source est libre, mais les binaires ne sont pas libres d'accès.

 Distributions communautaires: sources et binaires sont librement


disponibles. Fourni sans assistance technique obligatoire.

 Ne confondez pas la version de distribution avec celle du noyau !


Distributions commerciales
 Red Hat: http://www.redhat.com
La plus populaire. Fiable, sûre, conviviale et facile à
installer, prise en charge par tous les fournisseurs de
logiciel et de matériel.
 Suse (Novell): http://www.suse.com
L'alternative principale. Face à installer, conviviale et stable.
Obtiens le support des fournisseurs de logiciel et de
matériel.
 Mandriva (anciennement Mandrake):
http://mandrivalinux.com
Conviviale, facile à installer, plus innovante, mais moins
stable. Cible principalement les utilisateurs individuels. Peu
pris en charge par les fournisseurs de logiciel et de matériel.
Distributions communautaires
 Fedora Core: http://fedora.redhat.com
Stable, sûre, conviviale, facile à installer. Sortie fréquente de
nouvelles versions complètes.
 Ubuntu Linux: http://ubuntu-linux.org
La distribution communautaire qui progresse le plus. Basé sur
Debian mais avec une version stable tout les 6 mois. Conviviale
pour les utilisateurs. Bonne pour les débutants.
 Debian: http://debian.org
Très stable et sûre, mais plus difficile à configurer et à installer.
Conviviale pour les développeurs mais pas encore pour les
utilisateurs. Version stables pas assez fréquentes (tous les 2 ou 3
ans). La meilleure pour les serveurs, mais pas pour les débutants.
 Mandriva Community: http://mandrivalinux.com
Facile à installer, sûre, conviviale, sortie fréquente de versions
complètes, mais moins stable.
Distributions live (1)
 Linux s'amorce à partir d'un périphérique de stockage
(cd-rom, dvd-rom ou usb) et démarre tout à partir de ce
périphérique.
 Idéal pour essayer GNU / Linux et les applications des
logiciels libres sans avoir à installer quoi que ce soit sur le
disque dur !
 Le système est prêt et démarre en 2-3 minutes.
Plus rapide qu'installer et configurer GNU / Linux !
 Aussi efficace pour récupérer des données lorsque le
système d'origine ne démarre plus.
 Utilise un système de compression pour mettre en
mémoire 3 à 4 fois la capacité de stockage !
Distributions live (2)
 Knoppix: http://knoppix.net
La plus populaire. Disponible en CD et DVD.
Idéale pour l'auto configuration de votre matériel.
 Ubuntu: http://ubuntu-linux.org
Distribue un CD live avec chaque version (tous les 6 mois).
 Xubuntu: http://xubuntu.fr/
Variante d'Ubuntu, elle reprend donc les mêmes concepts
de base. OS performant, élégant, intuitif et gratuit.
 Toutou Linux: http://toutoulinux.free.fr/
Distribution plus rapide et plus complète (pour sa taille).
Facile à installer, à utiliser et très intuitive. OS accompagné
d'une suite logicielle complète pour une utilisation familiale.
Autres systèmes Unix libres (1)
GNU/Hurd :
 Le projet GNU/Hurd est un ensemble de programmes et de biblios
servant de base à l’OS GNU, où le Hurd est une collection de serveurs
tournant sur le micro-noyau GnuMach. Ce projet devient de plus en plus
mûr et multi-plateforme.
Famille BSD (Berkeley Software Distribution) :
 FreeBSD: http://www.freebsd.org
Système BSD puissant, multi-plateforme, sûr et populaire.
 OpenBSD: http://openbsd.org
Système BSD puissant, multi-plateforme, sûr et populaire.
Construit pour une fiabilité et une sécurité extrêmes. Populaire pour
serveurs sur Internet.
 NetBSD: http://netbsd.org
Distribution BSD dont le but est d'être extrêmement portable. Elle
est disponible sur ARM et autres.
Autres systèmes Unix libres (2)
Famille Système V (de l'entreprise AT&T) :
 Open-Solaris: http://opensolaris.org
Le noyau open source de Sun Solaris a été débuté en juin
2005. Pas encore de version stable.
 Oracle-Solaris: https://www.oracle.com/solaris
Plateforme complète intégrée qui combine OpenStack, la
réseautique logicielle et la virtualisation intégrée à un OS pour
entreprises éprouvé. Dernière version 11.3 (octobre 2015).
Autres :
 eCos: http://ecos.sourceware.org
Système embarqué à temps réel très léger, fourni par Red-
Hat/Cygnus. Son interface de programmation applicative (API)
est compatible avec POSIX.
Unix/Linux

Concepts et Services de base


Structure Système Linux
 Un système Linux est composé de 3 parties :
 le noyau (kernel)

 la libc, bibliothèque principale pour les applications

 les applications (ou commandes)

 Le système Linux est chargé en mémoire grâce à un logiciel


situé dans le zone amorce MBR (Master Boot Record)
 le bootstrap, programme (chargeur) de démarrage

Le MBR est le nom du premier secteur adressable d'un disque dur (Pour
un partitionnement Intel : cylindre 0, tête 0 et secteur 1). Il contient la
table des partitions du disque dur et également une routine d'amorçage
dont le but est de charger le OS, ou le chargeur d'amorçage (boot loader)
s'il existe, présent sur la partition active.
Séquence de démarrage de Linux
 Elle est toujours la même :

 chargement du système par un chargeur de démarrage


(ex: LILO, GRUB)

 chargement du noyau Linux

 lancement du programme d’initialisation /sbin/init

 exploration du fichier /etc/inittab contenant le chemin


d’accès au script de démarrage final du système
L’arborescence Unix (1)
 L’arborescence Unix est composée de fichiers et répertoires.
 Un fichier est une suite d’octets destinée à conserver, traiter et
transmettre de l’information.
 Un répertoire est un fichier particulier qui contient des noms de
fichiers et/ou des noms de répertoires.
 Sous Unix tout est fichier :
− Le noyau, une commande, un utilitaire, un périphérique sont
tous vus par Unix comme des fichiers
 Types de fichier :
− Ordinaire
− Répertoire
− Spécial (périphériques)
− Standard (entrée, sortie, erreur)
− Pipe (fichiers propres à l’enchaînement de commandes)
L’arborescence Unix (2)

Fichiers ordinaires Périphériques et dispositifs


ascii ou binaires La lecture et l'écriture à partir
d'un dispositif se fait comme un
Répertoires fichier
Les répertoires ne sont juste
que des fichiers listant Pipes
plusieurs fichiers Utiliser pour mettre en cascade
plusieurs programmes
Liens symboliques cat *.log | grep error
Fichiers faisant référence au
nom d'un autre fichier Sockets
Communication inter processus
L’arborescence Unix (3)
 Tout est fichier
− Stockage des données
− Accès aux périphériques via /dev
 /dev/hdaX, /dev/hdbX, … : disques IDE
 /dev/sdaX, /dev/sdbX, … : disques USB, …
 /dev/fdX, /dev/fdX, … : disquettes
 /dev/videoX : carte graphique, tuner TV, …
 /dev/i2cX : accès aux composants du bus i2C
 /dev/null, /dev/zero : destruction ou génération de zéro
 Sauf l’accès réseau
− /sbin/ifconfig ethX
− Configuration via /etc/network/interfaces ou via ifconfig
 Infos sur les périphériques connectés sur les bus
− lspci, lsusb, lspcmcia, …
L’arborescence Unix (4)
Depuis le début d'Unix, les noms de fichiers ont les caractéristiques
suivantes:
Sensibles aux majuscules / minuscules
Pas de longueur limite évidente
Peuvent contenir tous caractères (incluant l'espace, à l'exception de /).
Les types de fichiers sont stockés dans un fichier (“nombre magique”).
Les extensions d'un nom de fichier n'ont pas besoin et ne sont pas
interprétés. Ils sont justes utilisés pour les utilisateurs.
Exemples de noms de fichiers:
README .bashrc index.htm
index.html index.html.old
L'arborescence du système de fichiers
/
root

local/ dev/ etc/ usr/ tmp/ softs/ rech/ tp/

bin/ local/ sbin/

Grand Stockage
temporaire
bin/

Péri-phériques Système, Commandes Stockage


commandes utilisateur temporaire

Applications Comptes Comptes


CAO Recherche Etudiants
L'arborescence du système de fichiers
 /bin : Programmes de base pour tous les utilisateurs
 /boot : Fichiers images noyau pour le démarrage du système
 /dev : Fichiers spéciaux pour accéder aux périphériques
 /etc : Fichiers de configuration du systèmes et des applications
 /home : Répertoire des utilisateurs de la machine
 /lib : Bibliothèques partagées pour le démarrage du système
 /mnt : Point de montage pour les partitions temporaires
 /proc : Fichiers virtuels; reflète le fonctionnement du système
 /sys : « idem » à /proc à partir de 2.6
 /root : Compte pour le super utilisateur
 /tmp : Fichiers temporaires
 /usr : Hiérarchie secondaire pour les applications
 /var : Fichiers variables (log, cache, …)
Gestion Mémoire (1)
 Unix s’appuie sur la mémoire virtuelle
 Les adresses mémoires gérées dans les processus ne sont
pas directement des références à des adresses physiques
− Chaque processus a son espace d’adressage virtuel
 Les adresses virtuelles sont traduites en adresses
physiques
− Le circuit MMU opère la conversion à chaque référence
 A l'aide d'un ensemble de registres qui désignent les tables de
conversion du processus courant
 Une table de conversion est associée à chaque processus
− Lors du changement de contexte (= processus courant)
 Chargement des registres du MMU avec de nouvelles adresses
de tables
Gestion Mémoire (2)
Gestion Mémoire (3)
Installation de Nouveaux Logiciels
Gestion de Packetages
Quelques Commandes Utiles
Consultation des messages
Configuration de Syslog

Syslog est un protocole définissant un service de journaux d'événements d'un syst. info
Etapes de chargement du système
Les grandes étapes du Boot
Du BIOS … à l’UEFI
La séquence de Boot: BIOS
La séquence de Boot: MBR
La séquence de Boot: LILO
Chargeur de Noyau: LILO et GRUB
Installation de LILO
Exemple de /etc/lilo.conf
Installation de GRUB (1)
Installation de GRUB (2)
Exemple de /boot/grub/grub.conf
Des chargeurs pour l’embarqué
Paramétrage du noyau au démarrage
Séquence de Boot: Noyau
Séquence de Boot: init
Séquence de Boot: Changement de
runlevel
Séquence de Boot: /etc/inittab (1)
Séquence de Boot: /etc/inittab (2)
Séquence de Boot: /etc/inittab (3)
Un Noyau: c’est quoi ?
Différents types de Noyau
Comparaison des types de Noyau
Noyau vs Système d’Exploitation
Numérotation des versions Linux
Quel Noyau choisir ?
Architectures matérielles supportées
Organisation des sources Linux
Construction du Noyau (≤ 2.4)
Construction du Noyau (2.6)
Installation définitive du Noyau
Dans quels cas compiler son Noyau?
Compilation croisée
Mode Utilisateur et Mode Noyau (1)
Mode Utilisateur et Mode Noyau (2)
Mode Utilisateur et Mode Noyau (3)
Mode Utilisateur et Mode Noyau (4)
Mode Utilisateur et Mode Noyau (5)
Espace d’adressage Utilisateur vs
Noyau (1)
Espace d’adressage Utilisateur vs
Noyau (2)
Qu’est-ce que la virtualisation ?
Plusieurs logiciels
Différents types de virtualisation
Différents types de virtualisation
Host et Guest: Plusieurs
Configurations
Host only, NAT, Bridged
Echange de fichiers via le réseau
Programme Unix pour ES – Partie II
 Modules vu par Linux – Ajout de fonctionnalités au Noyau
 Liaisons dynamiques, modules dynamiques, macros de
documentation, licence des modules, écriture, compilation et
configuration d’un module, dépendances des modules,
passage de paramètres à un module
 Débuguer un Dev Noyau
 Processus
 Concepts de base, état, attributs, filiation et information sur les
processus
 Multitâches, types, algorithmes et politiques d’ordonnancement
 Ordonnancement et Linux
 Création des processus (la primitive clone et son principe
d’implémentation)
Programme Unix pour ES – Partie II
 Pilotes et périphériques
 Types, Majeur/Mineur, définition d’un fichier dans /dev
 Mise en œuvre d’un pilote
 Au cœur d’un pilote (dissection d’un pilote de périphérique)
 Les pilotes et périphériques côté « espace utilisateur »
 Nouveau modèle de périphériques
 Gestion des périphériques
 Gestion des fichiers pilotes dans l’espace utilisateur
 Allocation dynamique de mémoire
Objectifs Unix pour ES
 Objectifs Unix pour ES – Partie I
 Appréhender le contexte général de mise en œuvre de
Linux dans les systèmes embarqués
 Maîtriser la production et l’intégration d’un exécutif Linux
sur une cible
 Objectifs Unix pour ES – Partie II
 Exploiter une chaîne de développement croisé pour le
développement d’applications
 Être en mesure de développer des modules «noyau» et
des pilotes de périphériques

Vous aimerez peut-être aussi