2. Différentes approches
●
Création d'une distribution “From Scratch”
–
–
Forte granularité
–
Parfaite maîtrise du projet
–
●
Nécessite un investissement intellectuel
Conseillé si LINUX est stratégique
Choix d'un produit commercial
–
–
Cross compilation
–
●
Outils graphiques
Support technique
Mais
–
Granularité moindre
–
Coût de support parfois élevé
3. Phases de construction d' n système
u
●
●
●
●
●
Optimisation de la procédure de démarrage du système
Réduction drastique de l'utilisation mémoire (utilisation de ucLibc
et Busybox)
Optimisation du noyau en fonction des fonctionnalités
nécessaires (pilotes de périphériques, réseau ou non, etc...).
Réduction et simplification du nombre de fichiers et répertoires
de configuration comme /etc contenant la majorité des fichiers de
config.
Suppression du système de swap: un système embarqué est
destiné à un usage bien défini et sera donc suffisamment
dimensionné en mémoire vive pour éviter l'utilisation d'une
partition de swap.
4. Optimisation du démarrage
•
boot du système par LILO (LInux LOader) ou un programme
équivalent
•
chargement du noyau
•
lancement par le noyau du processus init (/sbin/init)
•
lecture du fichier /etc/inittab par le processus init. Ce fichier
contient en général le nom du script de démarrage:
# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.S
•
le script en question poursuit l'initialisation du système
6. Optimisation du noyau
•
Sélection de l'architecture cible
•
Inventaire des drivers utiles
•
Supprimer tous les autres
•
Optimisation en espace (option -Os de gcc)
•
Suppression des fonctionnalités inutiles
7. Interfaces graphiques
•
De plus en plus fréquent
X Window System: parfois peu adapté car coûteux en ressources
•
•
•
•
Reste cependant la référence dans le monde UNIX (plugins, etc...)
XFree86 peut être optimisé en taille et ressources (Xkdrive, mode VESA...)
Frame-buffer LINUX: accès aux modes graphiques sans X11 (en général mode VESA
+ quelques supports spécifiques)
QTopia (ex Qt/Embedded )
•
•
Compatible source avec Qt: à la base de KDE et du navigateur OPERA
•
Utilise le frame-buffer LINUX
•
•
•
Déja éprouvé dans des solutions industrielles avec OPERA (Motorola, Sony mylo,
sharp, volvo,...)
Existe en version GPL ==> applications DOIVENT être GPL
GTK+
8. Exemple d'environnement de
développement pour l'embarqué
*
ou
Station de développement
Cross GCC
Binutils architecture cible
ucLibc architecture cible
Filesystem cible:
Base-layout
ucLibc
Busybox
* en utilisant un sous-système permettant de faire fonctionner gcc, ex: cygwin
9. Sécurisation du système
●
Principes de sécurisation identiques à
l'informatique traditionnelle
–
La sécurité parfaite N'EXISTE PAS
–
Objectif : Rendre le plus complexe possible les
« turnaround »
–
Contraintes particulières
●
●
D'espace de stockage
D'espace mémoire
10. Sécurisation du système
●
Isoler applicatif du système
–
Environnement « chrooté »
●
●
●
●
Un environnement « virtuel » et disjoint du système
principal
Exemple : serveur FTP, serveur WEB, ...
Cantonner l'impact d'une brèche de sécurité à cet
environnement
Difficile à mettre en place dans certains cas
–
–
Front-end web de configuration du système
Utilisateurs applicatifs non privilégiés (non root)
11. Sécurisation du système
●
Noyau compilé dans l'esprit « SELinux »
–
–
●
SELinux : un ensemble de règles de configuration
Mais reste un noyau standard avec éventuellement
quelque patches
Un module est capable de tout faire
–
Modules de noyau figés
●
Phase de boot
–
–
Chargement des modules connus
echo off > /proc/modules en fin de phase de boot (<= linux-2.4.x)
12. Sécurisation du système
●
Définir les éléments qui peuvent être mis à jour
–
–
Modules « trustés »
–
●
Noyau
Applicatifs
S'assurer que l'on parle au bon serveur de mise
à jour
–
Utilisation de certificats « clients » pour valider le
serveur
–
Utilisation de signature numérique des paquets à
mettre à jour
13. Sécurisation du système
●
Ce que fait Netfilter
–
Effectuer des filtrages de paquets, principalement
pour assurer des fonctions de Firewall (Filter)
–
Effectuer des opérations de NAT (Network Address
Translation)
–
Effectuer des opérations de marquage des paquets
(Mangle)