Kernel Linux - Configuration de Wyse - TP wyse x30
Rapport systéme embarqué busybox
1. Rapport de Mini Projet
« Systèmes embarqués »
Réduction d’un système d’exploitation
Embarqué avec « Busybox »
UNIVERSITÉ ABDELAMLEK ESSADI
FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
MASTER : « SYSTEMES INFORMATIQUES ET RESEAUX »
Réalisé par : Encadré par :
ROUZI Ayoub Mr. Abdelhakim ANOUAR
SALAMA Abdelhakim
FADILI Mustafa
ELMALKAOUI Yassine
3. MASTER-SIR R a p p o r t | 3
SOMMAIRE
Introduction………………………..........................................................................................................
Etape1 :
Obtenir les sources : …………………....................................................................................
Initialisation d'une configuration minimale …………………………………………………………
Etape 2:
Configuration de la compilation ..........................................................................................
Configurer votre noyau …………………………………..................................................................
Etape 3 :
Configuration des modules…….............................................................................................
La compilation de noyau ……................................................................................................
Etape 4 : BusyBox :
Installation de BusyBox …..................................................................................................
Compilation de BusyBox …………………………………...........................................................
Conclusion
4. MASTER-SIR R a p p o r t | 4
INTRODUCTION
Pourquoi vouloir compiler un nouveau noyau ? Ce n'est en général pas nécessaire, car
le noyau par défaut reconnaît la plupart des configurations. En outre différents noyaux
sont disponibles. Vous devriez chercher s'il n'existe pas de paquet contenant un noyau
qui corresponde à votre matériel. Cependant, il peut être utile de compiler un nouveau
noyau dans les cas suivants :
Gérer des périphériques spéciaux, ou des conflits de périphériques dans les
noyaux par défaut.
Activer des options qui ne sont pas incluses dans le noyau par défaut, permettre
la gestion de la mémoire haute par exemple.
Optimiser le noyau en enlevant les pilotes inutiles, ce qui peut accélérer le
démarrage de la machine ;
Créer un noyau monolithique à la place d'un noyau modulaire ;
Utiliser une version de développement du noyau ;
Mieux connaître le noyau Linux.
5. MASTER-SIR R a p p o r t | 5
Buts du TP :
Construire un petit système embarqué à partir de rien, en 40 minutes :
- Configuration et compilation du noyau Linux
- Création du système de fichiers racine
- Compilation et installation de Busybox
- Création des fichiers spéciaux pour les périphériques
- Scripts de démarrage du système : systèmes de fichier virtuels, réseau
Pour cela on va partir du principe de commencer à partir d'un environnement
de bureau complet sous GNU/Linux (Debian, Fedora...) et supprimer tous les éléments in
utiles.
Busybox: outils générique :
Le projet BusyBox (http: / /www.busybox.net ) a démarré il y a quelques
années dans le sillage du projet Debian . Le but du projet était de fournir
un ensemble complet de fonctionnalités « GNU/Linux- like » tout en
optimisant l'empreinte mémoire (mémoire vive et flash) en vue de
l'installation sur un système cible réduit. En clair il s'agit de remplacer les
commandes classiques (bash, ls, cp, vi, etc.) dont la majorité proviennent
du projet GNU (http: / /www.gnu.org ) par des versions simplifiées mais
efficaces.
La plupart des outils Unix en ligne de commande avec un seul exécutable !
Fait moins d'1 Mo (compilé statiquement avec glibc moins de 500 Ko).
Configuration aisée des fonctionnalités à inclure
Le meilleur choix pour Initrds avec des scripts complexes
6. MASTER-SIR R a p p o r t | 6
Etape1 : Obtenir les sources :
Les sources sont disponibles sur http://www.kernel.org. Vous pouvez les télécharger avec
des outils graphiques ou en ligne de commande, qui font appel à : HTTP, FTP, RSYNC, ou
Git.
Figure1: site web officielle
Il est recommandé de vérifier la signature d'une archive tar téléchargée. Reportez-
vous à kernel.org/signature pour avoir des informations sur la manière de le faire.
Décompressez l'archive et entrez dans le dossier qui a été créé:
tar xvfJ linux-*.tar.*
7. MASTER-SIR R a p p o r t | 7
Etape 2: Configuration & compilation(KALI)
Cette étape est la plus cruciale dans la personnalisation du noyau. Elle lui permettra de
s'adapter au mieux aux spécificités de votre matériel.
En définissant correctement les options dans le fichier .config, votre noyau et votre
ordinateur fonctionneront plus efficacement.
Récupérer le fichier de configuration (.config) du noyau sur lequel le système tourne,
pour démarrer
C’est un fichier masquer donc il faut taper la commande : ls -la
Donc on va copier la nouvelle version qu’on a téléchargée et le mettre dans le fichier de
configuration avec la commande :
cp /boot/config-4.4.0-21-generic .config
Configurer votre noyau
En alternative, vous pouvez utiliser la commande plus moderne :
make config
Ceci démarrera avec un fichier .config
Figure2: donne un nom a la machine
8. MASTER-SIR R a p p o r t | 8
On va donner un nom pour notre host :
Figure3: démarrage de configuration
A cette partie on va choisir juste les configurations qui ont besoin :
A cette partie on va choisir juste les configurations qui ont besoin :
9. MASTER-SIR R a p p o r t | 9
On continue comme cela :
On va ajouter les modules qu’on veut et ignorer les autres:
Comme vous voyez dans les photos précédentes, Il se peut que des questions soient
posées. C'est dans le cas où les options du kernel à installer sont nouvelles par rapport à
celui en cours d'exécution. Laisser les choix par défaut.
En validant simplement les questions.
10. MASTER-SIR R a p p o r t | 10
Adaptez votre configuration et enregistrez votre nouvelle configuration. Il est conseillé
d'en faire une copie en dehors de votre dossier des sources, car vous pouvez être
conduit à réitérer le processus maintes et maintes fois avant d'avoir pleine satisfaction.
« NOTE ! » :
La même chose que l’on a fait dans Kali Linux et les mêmes étapes précédentes ont
étaient répétés dans Debian, On va juste montrer la partie d’installation des modules sur
une autre distribution pour généraliser et montrer que le noyau peut être configurée,
compilé et installer sur n’importe quel distribution Linux avec les mêmes étapes.
Partie décompression :
Figure4 : décompression de l’archive
La configuration :
11. MASTER-SIR R a p p o r t | 11
Etape 3 : La compilation de noyau
Le temps de compilation peut aller de 15 minutes à plusieurs heures. Ceci dépend du
nombre d'options/modules sélectionnés et des capacités du processeur.
Initialisation d'une configuration minimale du noyau :
Exécutez par la commande $ make
Figure5 : démarrage de compilation
12. MASTER-SIR R a p p o r t | 12
Ajout de paramètres spécifiques au système embarqué :
On peut lancer plus de processus make pour aller plus vite.
Si on a 8 cœurs sur le CPU, utiliser l'option -j avec nb cœurs + 1 :
Exécutez par la commande make -j9
Figure4 : choisir le nombre de processus utilisé
Le fichier .config
Toute votre configuration noyau est en fait stockée dans le fichier .config. Si vous
téléchargez un autre noyau et que vous placez votre fichier .config dans le répertoire
racine des sources vous n'aurez pas à tout refaire, alors n'oubliez pas de le sauvegarder
précieusement (ailleurs que dans les sources).
Création d'un système de fichiers racine
Création d'un fichier vide de 320 Ko :
Formatage d'un fichier en ext2 :
13. MASTER-SIR R a p p o r t | 13
Etape 4 : Installation Compilation de BusyBox :
Busybox est un logiciel permettant d’implémenter des commandes standards sous
Linux. On peut concevoir cet outil comme une couche logicielle au-dessus du noyau :
Récupération des sources sur http://busybox.net
Configuration de busybox : make menuconfig
Choisir une exécutable statique, compilée nativement.
Compilation de busybox : make
Pré-installation de busybox (dans le sous-répertoire _install/) : make install
Résultat : un exécutable de 500 Ko implémentant toutes les commandes nécessaires !
On va décompresser le package de busybox :
14. MASTER-SIR R a p p o r t | 14
On va par la suite configurer le busyBox avec la commande : « make menuconfig »
On compile le package:
15. MASTER-SIR R a p p o r t | 15
Voilà le résultat de compilation :
On installe le module :
Montage de l'image root du système de fichiers :
C
Copie de la structure de fichiers busybox :
C
16. MASTER-SIR R a p p o r t | 16
« rsync -a busybox/_install/ /mnt/rootfs/ »
« chown -R root:root /mnt/rootfs/ »
Synchroniser les modifications dans l'image du système de fichiers monté :
« sync »
Configuration du réseau
Nous avons choisi de placer le support de la carte ethernet dans la
partie dynamique du noyau (les modules). Il faut donc copier l'arborescence des
modules sur le réper toire cible par la commande suivante:
On peut ensuite initialiser le réseau à l'aide de la commande ifconfig.:
17. MASTER-SIR R a p p o r t | 17
Utilisation de BUILDROOT
Il faut alors spécifier les différentes options de compilation. Après l'installation il suffit de
taper « make » pour obtenir l'écran de configuration. Cet écran sera ensuite
obtenu grâce à la commande « make menuconfig ».
• La chaîne de compilation croisée dans le répertoire build_arm/staging_dir
• Le root filesystem sur build_arm/root
• Une image EXT2 et CRAMFS du root filesystem soit rootfs.arm.ext2 et rootfs.arm.cramfs
18. MASTER-SIR R a p p o r t | 18
Création du script de démarrage /etc/init.d/rcS :
Occupons-nous à présent des scripts de démarrage.
Ce script se charge de monter l’arborescence de Linux en lecture/écriture, de
façon à pouvoir utiliser notre OS, configurer l’adresse localhost…
Il est utilisé par la commande /sbin/init de Busybox lors du démarrage du
système.
ATTENTION!Ce script doit être rendu exécutable par la commande chmod +x.
Fichier /etc/init.d/rcS :
19. MASTER-SIR R a p p o r t | 19
CONCLUSION :
Durant la réalisation de ce projet on a pu acquérir une petite expérience
dans le monde des noyaux (Kernels) et on a réalisé une configuration
d’un nouveau noyau conçu complétement pour l’utilisation qui s’adapte
avec nos besoins.
Comme résultat, on a réalisé les taches suivantes :
- 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...).
20. MASTER-SIR R a p p o r t | 20
Bibliographie :
Bibliographie
• L'ouvrage Linux embarqué 2ème édition paru aux éditions Eyrolles
en septembre 2005 dont la présentation est accessible depuis :
http://pficheux.free.fr.
• L'article Embarquez Linux! Ou Linux everywhere paru dans Linux :
http://pficheux.free.fr/articles/ lmf/linux_everywher
• La page de Patrice Kadionik concernant les systèmes embarqués sur
http://www.enseirb.fr/~ka dionik/embedded/embedded.html
• Le site du projet BusyBox sur
http://www.busybox.net
• Le site du projet uClibc sur
http://www.uclibc.org
• Le site du projet buildroot sur
http://buildroot.uclibc.org
• Document NFS-Rootmini-HOWTO sur:
http: / /www. tldp.org/HOWTO/NFS-Root.html