Introduction To Linux Operating System
Introduction To Linux Operating System
Pr ABDERRAHIM BAJIT
AGENDA
INTRODUCTION
I. STRUCTURE GÉNÉRALE DES SYSTÈMES
D’EXPLOITATION (ETUDE DE CAS LINUX) ;
II. CONFIGURATION DU NOYAU LINUX;
III. EMBARQUEMENT DU NOYAU LINUX;
IV. DÉVELOPPEMENT D’APPLICATIONS POUR
SYSTÈMES EMBARQUÉS;
CONCLUSION
Pr. Abderrahim BAJIT
Associate Professor Researcher in Automotive and Avionic Embedded Systems
Professor of Intelligent Sensor Networks, Embedded Computing and embeded IoT.
Department of Electrical –GESE- & Automotive Mechatronics Engineering –GMA-
National School of Applied Sciences ENSA, Ibn Tofail University UIT, Kénitra Morocco.
Pr. ABDERRAHIM BAJIT 1 INTRODUCTIONTOLINUXOPERATINGSYSTEM
ON BOARD COMPUTING AND AUTOMOTIVE MECHATRONICS ENGINEERING
UNIVERSITY SEASON 2022-2023
PRESENTATION DU MODULE
ELEMENT 1. EMBARQUEMENT D’UN SYSTÈME D’EXPLOITATION
Structure générale des systèmes d’exploitation (Etude de cas Linux) ;
Mise en place et Manipulation d'un système Linux embarqué;
Travaux pratiques (Réalisation de trois 3 plateformes pratiques en INFORMATIQUE
EMBARQUÉE développés en langages Python et C sur les micro contrôleurs basés
OS de type RPi 4 et non basés OS de type ESP32).
Conclusion
CONCLUSION
Pr. ABDERRAHIM BAJIT 2 INTRODUCTIONTOLINUXOPERATINGSYSTEM
ON BOARD COMPUTING AND AUTOMOTIVE MECHATRONICS ENGINEERING
UNIVERSITY SEASON 2022-2023
A l’origine, Linux était accessible sous forme de code source à ceux qui possédaient l'expertise nécessaire pour le
construire et l'installer;
La plupart des utilisateurs de Linux étaient des développeurs par nécessité et ont exploité la croissance de l'internet
au début des années 1990 comme moyen de créer des communautés en ligne et de faire avancer le développement;
Ces communautés ont contribué à la création des premières distributions de logiciels Linux, contenant tous les
composants logiciels nécessaires à l'installation et à l'utilisation d'un système Linux sans que les utilisateurs aient
besoin d'être des experts techniques.
Linux doit une grande partie de son succès au travail des projets qui l'ont précédé de Richard Stallman et de la Free
Software Foundation (FSF). au cours de la décennie qui a précédé l'arrivée de Linux sur la scène, bon nombre des
outils nécessaires à la construction et à l'utilisation d'un système Linux n'existeraient pas.
La FSF a produit le compilateur GNU C (GCC) et de nombreux autres outils et utilitaires nécessaires pour construire
vos propres systèmes Linux embarqués à partir de zéro, ou du moins à partir de collections préconstruites de ces
outils qui sont fournis par des vendeurs tiers.
Les logiciels maintenus par la Free Software Foundation constituent une collection connue sous le nom de GNU, pour
"GNU's Not UNIX". Ce nom provient de l'objectif déclaré de la FSF de produire un système libre de type Unix.
L'espace embarqué ne cesse de croître avec le temps. Il comprend des exemples évidents, tels que les téléphones
cellulaires, appareils de divertissement numérique à domicile, les guichets automatiques bancaires, les imprimantes,
les voitures, les feux de signalisation, les équipements médicaux, les équipements de diagnostic technique, et bien
d'autres encore. En fait, tout ce qui est équipé d'un microprocesseur et qui n'est pas considéré comme un
"ordinateur", mais qui remplit une fonction informatique, est une forme de système embarqué.
A partir de ce support de cours, vous allez avoir une idée de base de la raison pour laquelle on voudrait faire
fonctionner un système embarqué avec Linux. Que ce soit en raison de sa flexibilité, de sa robustesse, de son prix, de
la communauté qui le développe ou du grand nombre de fournisseurs qui le supportent, il existe de nombreuses
raisons de choisir de construire un système embarqué avec Linux et de nombreuses façons de mener à bien cette
tâche.
Parfois, les désignations peuvent signifier quelque chose de très précis, alors que d'autres fois, il s'agit d'une large
gamme ou d'une catégorie d'applications.
Dans cette section on va apprendre l'utilisation de ces termes peut signifier dans une variété de situations différentes, en
commençant par les nombreuses significations de "Linux".
Les logiciels d'application s'appuient sur des caractéristiques spécifiques du noyau Linux, telles que sa gestion des
périphériques matériels et sa fourniture d'une variété d'abstractions fondamentales, telles que la gestion de la
mémoire, des processus, du CPU, des fichiers, etc. Le noyau Linux est généralement démarré par un chargeur de
démarrage, mais une fois qu'il fonctionne, il n'est jamais arrêté.
Actuellement, le terme "Linux" est souvent utilisé de manière interchangeable en référence au noyau Linux lui-
même, à un système Linux ou à une distribution logicielle complète préconstruite (ou source) basée sur le noyau
Linux et les logiciels associés.
Par exemple, si on dit "Linux fournit un réseau TCP/IP", on parle de l'implémentation de la pile TCP/IP dans le
noyau Linux lui-même, ou des utilitaires TCP/IP fournis par une distribution Linux utilisant le noyau Linux, ou de
tous ces éléments ? Linux, ou tout cela à la fois ?
Un système Linux peut être construit sur mesure ou être basé sur une distribution déjà disponible. Malgré
l'augmentation de la disponibilité des distributions Linux destinées à l'utilisation embarquée dans les appareils Linux
embarqués le développement d’applications embarquées peut très bien sur un son propre construit à partir de zéro.
À l'inverse, lorsqu'un utilise Linux version Desktop, cela signifie qu’on a installé l'une des différentes distributions,
telles que Red Hat Enterprise Linux (RHEL), SuSE Linux Enterprise Server (SLES), Ubuntu Linux ou Debian GNU/Linux.
Le système Linux de l'utilisateur final est tout autant un système Linux, mais hormis le noyau, leurs systèmes ont des
objectifs différents, construits à partir de progiciels différents et exécute des applications différentes.
Pr. ABDERRAHIM BAJIT 6 INTRODUCTIONTOLINUXOPERATINGSYSTEM
COURSE 1.1. LINUX OPERATING SYSTEM ELEMENT I. MÉTHODOLOGIE D’EMBARQUEMENT D’UN SYSTÈME
D’EXPLOITATION
-GENERAL STRUCTURE OF LINUX- Cours 1-1: Introduction sur la structure Generale de LINUX
TP-1.1.1. Démarrage du système -BOOT-
TP-1.1..2. Noyau et modules –KERNEL-
TP-1.1..3. Configurtion Matérielle -HW-
TP-1.1..4. Gestion Systèmes de Fichiers & des Supports de Stockage -LVM-
TP-1.1..5. Gestion de Paquetages Sources et Binaires -SW-
TP-1.1..6. Configuration Réseau -NETWORKING-
Dans l'espace embarqué, une variété de distributions Linux embarquées sont disponibles, telles que celles de
MontaVista, Wind River, Timesys, Denx, … Ces distributions Linux embarquées spécialisées ne sont généralement
pas destinées à une utilisation générique de bureau, de station de travail ou de serveur comme leurs homologues
"grand public". Elles n'incluent généralement pas les fonctionnalités indésirables à une utilisation embarquée.
Ainsi, au lieu de parler du "noyau Linux", du "système Linux" et de la "distribution Linux", nous nous référerons
uniquement au "noyau", au "système" et à la "distribution", respectivement. Dans chacune de ces circonstances, le
terme "Linux" est sous-entendu. Nous utiliserons le terme "Linux", le cas échéant, pour désigner le large éventail de
logiciels et de ressources entourant le noyau.
Le même code source du noyau Linux est destiné à être construit pour la gamme la plus large possible d'appareils, de
stations de travail et de serveurs, bien qu'il soit évidemment possible de configurer une variété de caractéristiques
optionnelles en fonction de l'utilisation prévue du noyau.
Par exemple, il est peu probable que votre appareil embarqué dispose de 128 processeurs et de terra bytes de
mémoire, et il est donc possible de configurer la prise en charge de certaines fonctions que l'on ne trouve
généralement que sur des systèmes Linux plus importants. Le chapitre 5 couvre le noyau de manière beaucoup plus
détaillée, y compris l'endroit où obtenir le code source, les préoccupations liées à l'embarqué et la manière de le
construire soi-même.
C'est pour ces derniers que vous payez lorsque vous vous adressez à un fournisseur de Linux embarqué. Ils
fournissent des outils de développement tels que des compilateurs croisés, des débogueurs, des logiciels de gestion
de projet, des créateurs d'images de démarrage, etc.
Un nombre croissant de fournisseurs ont choisi d'intégrer une grande partie de ces fonctionnalités dans des modules
d'extension personnalisés pour leurs propres versions de l'IDE graphique Eclipse, développé par la communauté;
Ce document traite exclusivement des systèmes Linux embarqués dont le système Linux est le système hôte utilisé
pour développer le système Linux embarqué en tant que "système hôte", ou "hôte" en abrégé. La cible, qui sera le
système Linux embarqué, sera appelée "système cible" ou "cible". Les distributions fournissant des cadres de
développement seront appelées "distributions de développement" ou quelque chose de similaire.
Aujourd'hui, il existe plusieurs autres grands projets en temps réel pour Linux, dont un qui vise à ajouter le support en
temps réel au noyau Linux officiel. Vous en apprendrez beaucoup plus sur ces projets dans les derniers chapitres de
ce livre (à partir du chapitre 12), y compris sur certains des concepts innovants et des idées de développement sur
lesquels on travaille. Bien entendu, lorsque vous lirez ce livre, une grande partie de cette technologie sera peut-être
encore plus courante qu'elle ne l'est aujourd'hui, en particulier lorsque les capacités en temps réel seront disponibles
dans tous les systèmes Linux installés d'ici à Tombouctou.
L'un des facteurs qui poussent les gens à choisir Linux comme système d'exploitation embarqué est sa capacité
éprouvée de mise en réseau. La baisse des prix et la normalisation des composants de réseau accélèrent cette
tendance. La plupart des appareils Linux disposent d'une forme ou d'une autre de capacité réseau, qu'elle soit câblée
ou sans fil. Les tablettes Internet Nokia N770, N800 et N810 sont d'excellents exemples d'appareils Linux intégrés,
dotés d'un réseau sans fil 802.11g et bien plus encore, tandis que le projet One Laptop Per Child (OLPC) utilise Linux
et construit des réseaux maillés WiFi auto-assemblés et autogérés utilisant 802.11n à la volée.
KERNEL
MODULES
OS/USER APPLICATIONS
Pr. ABDERRAHIM BAJIT 6 INTRODUCTIONTOLINUXOPERATINGSYSTEM
COURSE 1.1. LINUX OPERATING SYSTEM ELEMENT I. MÉTHODOLOGIE D’EMBARQUEMENT D’UN SYSTÈME
D’EXPLOITATION
-GENERAL STRUCTURE OF LINUX- Cours 1-1: Introduction sur la structure Generale de LINUX
TP-1.1.1. Démarrage du système -BOOT-
TP-1.1..2. Noyau et modules –KERNEL-
TP-1.1..3. Configurtion Matérielle -HW-
TP-1.1..4. Gestion Systèmes de Fichiers & des Supports de Stockage -LVM-
TP-1.1..5. Gestion de Paquetages Sources et Binaires -SW-
TP-1.1..6. Configuration Réseau -NETWORKING-
CONFIGURATION DE LINUX
Objectifs
Personnalisation du processus de démarrage système
– interroger et modifier le comportement des services système dans différents niveaux d'exécution ;
– configurer la procédure de démarrage des services.
Récupération du système
– manipuler la séquence de démarrage et le mode récupération ;
– utiliser les outils init et les options du noyau relatives à init.
Points importants
– Spécification du standard LSB (Linux Standard Base);
– Shell GRUB;
– Commandes de gestion de service.
Mots clés
/etc/inittab, /etc/init.d/, /etc/rc.d/, chkconfig, update-rc.d, mount, init, telinit.
– BIOS: A BIOS (basic input/output system) is the program a computer's microprocessor uses to start the computer system after
it is powered on. It also manages data flow between the computer's operating system (OS) and attached devices, such as the hard
disk, video adapter, keyboard, mouse and printer;
– POST: A (Power-On Self-Test (POST)) is an operation initiated by a computer after it has been turned on but before it boots up
the OS. The computer's firmware –BIOS-, Unified Extensible Firmware Interface (UEFI) or another system -- carries out this
operation by running a diagnostic testing sequence to determine if the computer's essential hardware is working properly;
- MBR: A master boot record (MBR) is a special type of boot sector at the very beginning of partitioned computer mass storage
devices like fixed disks or removable drives intended for use with IBM PC-compatible systems and beyond.
The MBR holds the information on how the disc's sectors are divided into partitions, each partition notionally containing a file
system. The MBR also contains executable code to function as a loader for the installed operating system—usually by passing
control over to the loader's second stage.
- BOOT LOADER: A bootloader, also spelled as boot loader or called boot manager and bootstrap loader, is a computer
program that is responsible for booting a computer. GNU GRUB is a Multiboot boot loader. It was derived from GRUB, the GRand
Unified Bootloader. Briefly, a boot loader is the first software program that runs when a computer starts. It is responsible for
loading and transferring control to the operating system kernel software;
- INITRAMDISK : In Linux systems, initrd (initial ramdisk) is a scheme for loading a temporary root file system into memory, to be
used as part of the Linux startup process. initrd and initramfs refer to two different methods of achieving this. Both are commonly
used to make preparations before the real root file system can be mounted.
- LINUX KENEL: the Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It
was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU
operating system, which was written to be a free (libre) replacement for Unix.
Linux is provided under the GNU General Public License version 2 only, but it contains files under other compatible licenses.
Since the late 1990s, it has been included as part of a large number of operating system distributions, many of which are commonly
also called Linux.
– INIT: The init program starts all the processes we need to interact with the system, connect over the network, run databases and
just about everything else that needs to be running on the system. Typically, init starts dozens of processes and while these
processes may start additional processes, any process on the system can be tracked back through its creators to the init process.
The init program brings the system up in a certain runlevel. Runlevelsdefine a mode for the system, and in each runlevel, different
processes can be started. The default runlevels for Linux are as follows:
Runlevel Description
0 Halt (shutdown)
1 Single user mode
2 Multi-user mode, without NFS
3 Full multi-user mode
4 Unused
5 Full multi-user mode with X11 (GUI)
6 Reboot
Pr. ABDERRAHIM BAJIT 6 INTRODUCTIONTOLINUXOPERATINGSYSTEM
COURSE 1.1. LINUX OPERATING SYSTEM ELEMENT I. MÉTHODOLOGIE D’EMBARQUEMENT D’UN SYSTÈME
D’EXPLOITATION
-BOOTING THE SYSTEM- Cours 1-1: Introduction sur la structure Generale de LINUX
TP-1.1.1. Démarrage du système -BOOT-
TP-1.1..2. Noyau et modules –KERNEL-
TP-1.1..3. Configurtion Matérielle -HW-
TP-1.1..4. Gestion Systèmes de Fichiers & des Supports de Stockage -LVM-
TP-1.1..5. Gestion de Paquetages Sources et Binaires -SW-
TP-1.1..6. Configuration Réseau -NETWORKING-
Processus init et niveau d'exécution: Le processus init est le premier processus utilisateur créé par le noyau lors du démarrage du
système. Il utilise les niveaux d'exécution pour définir l'état du système à un instant donné. Chaque niveau d'exécution contient
une liste de services à arrêter ou à démarrer. Lors du démarrage du système, le processus init détermine, à partir du fichier de
configuration /etc/inittab, le niveau d'exécution par défaut, et démarre les applications et les services requis dans ce niveau. Lors
de l'arrêt du système, init bascule vers le niveau d’exécution numéro 0. Ce niveau d'exécution est configuré de telle sorte que
toutes les applications et tous les services seront arrêtés. Il existe sept niveaux d'exécution possibles, allant de 0 à 6. Chaque
distribution les définit à sa manière, mais certains niveaux d'exécution sont les mêmes pour toutes les distributions. C'est le cas
des niveaux d'exécution 0, 1 et 6. Le niveau d'exécution 0 est utilisé pour l'arrêt du système, le niveau d'exécution 1 est utilisé
pour le démarrage du système en mode mono-utilisateur – ou mode dépannage – et le niveau d'exécution 6 est utilisé lors du
redémarrage du système.
Sur la distribution Debian et ses dérivés les niveaux d'exécution de 2 à 5 sont tous en mode multi-utilisateurs. Et tous les
services requis sont généralement configurés pour être démarrés pour ces niveaux d'exécution.
La distribution Red Hat et ses dérivés utilisent les niveaux d'exécution de la manière suivante :
– 1 : mode mono-utilisateur, utilisé pour la maintenance et la récupération du système (recovery mode, l'administration et la
configuration, effectuer les tâches de maintenance critique, comme le redimensionnement des partitions ou la vérification du
système de fichiers racine. Typiquement, le niveau d'exécution s ou S produit un shell root sans montage des systèmes de fichiers,
tandis que le niveau d'exécution 1 essaie de monter des systèmes de fichiers et lance quelques programmes systèmes.
– 2 : mode console, multi-utilisateurs, sans le support réseau ; – 3 : mode multi-utilisateurs avec le support réseau ;
– 5 : mode multi-utilisateurs avec interface graphique. Les commandes init et telinit permettent de changer de RL.
Pr. ABDERRAHIM BAJIT 6 INTRODUCTIONTOLINUXOPERATINGSYSTEM
COURSE 1.1. LINUX OPERATING SYSTEM ELEMENT I. MÉTHODOLOGIE D’EMBARQUEMENT D’UN SYSTÈME
D’EXPLOITATION
-BOOTING THE SYSTEM- Cours 1-1: Introduction sur la structure Generale de LINUX
TP-1.1.1. Démarrage du système -BOOT-
TP-1.1..2. Noyau et modules –KERNEL-
TP-1.1..3. Configurtion Matérielle -HW-
TP-1.1..4. Gestion Systèmes de Fichiers & des Supports de Stockage -LVM-
TP-1.1..5. Gestion de Paquetages Sources et Binaires -SW-
TP-1.1..6. Configuration Réseau -NETWORKING-
Objectifs
Composants du noyau
– identifier les versions d'un noyau stable ou en développement ;
– utiliser les composants du noyau qui sont nécessaires aux matériels
spécifiques, pilotes, ressources et besoins du système ;
– identifier les différents types d'images du noyau. Personnalisation, construction et installation d'un noyau et des modules
noyau
Compilation d'un noyau – personnaliser et construire un noyau 2.6 pour des besoins
– personnaliser la configuration du noyau ; spécifiques du système, par la mise à jour, la compilation ou la
– compiler un noyau Linux 2.6 en incluant ou désactivant des modification des fichiers de configuration ;
composants spécifiques du noyau. – construire et configurer les modules du noyau ;
– créer une image d'initialisation système (initrd) et installer un nouveau
Mise à jour d'un noyau noyau.
– appliquer les mises à jour du noyau Linux pour accueillir de nouveaux
périphériques ; Gestion/interrogation du noyau et des modules noyau en exécution
– désinstaller correctement des mises à jour. – gérer et interroger les modules du noyau 2.6.x ;
– charger et décharger manuellement les modules du noyau.
Le noyau Linux est diffusé avec une configuration générique conçue pour supporter n'importe quelle application sur
n'importe quel matériel. Cette configuration générique comprend de nombreux pilotes de périphériques, mais aussi des
paramètres pour le noyau. On peut modifier ces paramètres afin d'adapter le noyau à des besoins spécifiques, augmenter
les performances, renforcer la sécurité, ou encore la fiabilité du système.
Dans certains cas, la modification du noyau est nécessaire afin d’ajouter de nouveaux pilotes de périphériques. Le code
source du pilote ajouté doit être intégré dans les structures de données du noyau. Ceci peut exiger la recompilation du
noyau.
Il existe quatre méthodes pour intervenir sur la configuration d’un noyau Linux :
– modification dynamique des paramètres de configuration du noyau ;
– construction d'un noyau à partir de zéro (compilation du code source, avec éventuellement des modifications et des
ajouts) ;
– chargement de modules dans un noyau existant, à la volée ;
– passage de paramètres en utilisant le chargeur de démarrage : LILO ou GRUB.
Ces méthodes sont applicables dans des situations différentes. La modification dynamique des paramètres est la plus facile
et la plus courante, tandis que la construction d'un noyau à partir des fichiers sources est la plus difficile et la moins souvent
nécessaire.
- procfs: The proc filesystem (procfs) is a special filesystem in Unix-like operating systems that presents information
about processes and other system information in a hierarchical file-like structure, providing a more convenient and
standardized method for dynamically accessing process data held in the kernel than traditional tracing methods or direct
access to kernel memory. Typically, it is mapped to a mount point named /proc at boot time. The proc file system acts as
an interface to internal data structures about running processes in the kernel. In Linux, it can also be used to obtain
information about the kernel and to change certain kernel parameters at runtime (sysctl).
- Sysfs: sysfs is a pseudo file system provided by the Linux kernel that exports information about various kernel
subsystems, hardware devices, and associated device drivers from the kernel's device model to user
space through virtual files. In addition to providing information about various devices and kernel subsystems, exported
virtual files are also used for their configuration. sysfs provides functionality similar to the sysctl mechanism found
in BSD operating systems, with the difference that sysfs is implemented as a virtual file system instead of being a
purpose-built kernel mechanism, and that, in Linux, sysctl configuration parameters are made available at /proc/sys/ as
part of procfs, not sysfs which is mounted at /sys/.
- devfs is a specific implementation of a device file system on Unix-like operating systems, used for presenting device files.
The underlying mechanism of implementation may vary, depending on the OS. Maintaining these special files on a
physically-implemented file system such as a hard drive is inconvenient, and as it needs kernel assistance anyway, the
idea arose of a special-purpose logical file system that is not physically stored. Defining when devices are ready to
appear is not trivial. The devfs approach is for the device driver to request creation and deletion of devfs entries related
to the devices it enables and disables.
Pr. ABDERRAHIM BAJIT 6 INTRODUCTIONTOLINUXOPERATINGSYSTEM
COURSE 1.1.
LINUX OPERATING SYSTEM ELEMENT I. MÉTHODOLOGIE D’EMBARQUEMENT D’UN SYSTÈME
-LINUX KERNEL & MODULES- D’EXPLOITATION
Cours 1-1: Introduction sur la structure Generale de LINUX
TP-1.1.1. Démarrage du système -BOOT-
TP-1.1..2. Noyau et modules –KERNEL-
TP-1.1..3. Configurtion Matérielle -HW-
TP-1.1..4. Gestion Systèmes de Fichiers & des Supports de Stockage -LVM-
TP-1.1..5. Gestion de Paquetages Sources et Binaires -SW-
TP-1.1..6. Configuration Réseau -NETWORKING-
$ ls /sys
bloc bus class dev devices firmware hypervisor fs kernel module power
/sys/module/e1000;
/sys/fs/ext4/sda1;
/sys/kernel/;
/sys/devices/system/cpu (memory, machinecheck, ...);
/sys/class/net/eth0.
Exemple
Lire et configurer les paramètres réseau de la classe net du système de fichiers virtuel sysfs /sys/class/net/eth0, par exemple:
addresss, address-len, broadcast. Et ses drivers à partir de sa base /sys/class/net/eth0/device/driver
EXEMPLE
Pour modifier le nombre maximal de fichiers que le système peut ouvrir simultanément, on peut modifier le fichier /proc/sys/fs/file-max de la
façon suivante : # echo 32768 > /proc/sys/fs/file-max
FICHIER DESCRIPTION
/proc/sys/fs/file-max Indique le nombre maximal de fichiers que le noyau peut manipuler
simultanément
/proc/sys/kernel/ctrl-alt-del Contrôle la gestion de la séquence Ctrl-Alt-Supp du clavier. S'il contient
la valeur zéro, Ctrl-Alt-Supp est capturé et envoyé au programme init
pour relancer le système correctement.
/proc/sys/net/ipv4/icmp_echo_ignore_all Bloque les réponses au ping.
/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts Ignore les messages de diffusion ICMP (Internet Control Message Protocol)
/proc/sys/net/ipv4/ip_forward Active ou désactive le relayage (forwarding) entre les cartes réseaux.
Activer le relayage est nécessaire pour faire fonctionner le système comme
un routeur.
/proc/sys/kernel/hostname Permet de changer le nom de la machine.
télécharger les patchs du site internet officiel www.kernel.org/pub/linux/kernel/v2.6/ à base l’outil wget;
dépaqueter et décompresser l’archive du noyau en format .tar.bz2 par l’outil tar et bunzip2 et en format .tar.gz par l’outil
tar et gunzip ;
configurer le noyau en choisissant sa partie statique à mettre dans /boot par Y (y), et sa partie modulaire à placer dans
/lib/modules par la marque M (m) et l’élimination des éléments indésirables par la marque N (n) ou se documenter par
la marque ?;
Compiler du noyau statique, de ses modules, et de l’image initrd (RAM disc Initiale) et ajout d’une ligne dans le fichier du
chargeur de démarrage GRUB;
$ ls
arch COPYING crypto drivers fs init Kbuild lib
Makefile net REPORTING-BUGS scripts sound usr
block CREDITS Documentation firmware include ipc kernel MAINTAINERS mm
README samples security tools virt
Exemple
On veut passer de la version 2.6.35.5 à la version 3.6.35.7. Pour ce faire, on a donc besoin de télécharger deux patchs:
un patch pour passer de la version 2.6.35.5 à la version 2.6.35.6;
un autre patch pour passer de la version 2.6.35.6 à la version 2.6.35.7.
Domaine de connaissance:
Activer er désactiver les périphériques intégrés
Configurer le système avec et sans périphériques externes tels que le clavier
Différencier entre les différents types de périphériques de stockage de masse
Savoir la différence entre les périphériques coldplug et hotplug
Déterminer les ressources matérielles des périphériques
Outils et utilitaires pour lister les différentes informations des périphériques (e.g. lsusb, lspci, etc.)
Outlis et utilitaires pour manipuler les périphériques USB et PCI
Comprendre le concept de gestion de périphérique par : sysfs, udev, dbus
Points importants
Dans les noyaux 2.6 et grâce à la combinaison des systèmes de fichiers virtuels /proc, /sys et /dev, il est possible d’obtenir un
instantané du système et de touts ses périphériques.
Mots clés
/sys/, /proc/, /dev/, lsmod, lspci, lsusb,modprobe
- procfs: The proc filesystem (procfs) is a special filesystem in Unix-like operating systems that presents information
about processes and other system information in a hierarchical file-like structure, providing a more convenient and
standardized method for dynamically accessing process data held in the kernel than traditional tracing methods or direct
access to kernel memory. Typically, it is mapped to a mount point named /proc at boot time. The proc file system acts as
an interface to internal data structures about running processes in the kernel. In Linux, it can also be used to obtain
information about the kernel and to change certain kernel parameters at runtime (sysctl).
- Sysfs: sysfs is a pseudo file system provided by the Linux kernel that exports information about various kernel
subsystems, hardware devices, and associated device drivers from the kernel's device model to user
space through virtual files. In addition to providing information about various devices and kernel subsystems, exported
virtual files are also used for their configuration. sysfs provides functionality similar to the sysctl mechanism found
in BSD operating systems, with the difference that sysfs is implemented as a virtual file system instead of being a
purpose-built kernel mechanism, and that, in Linux, sysctl configuration parameters are made available at /proc/sys/ as
part of procfs, not sysfs which is mounted at /sys/.
- devfs is a specific implementation of a device file system on Unix-like operating systems, used for presenting device files.
The underlying mechanism of implementation may vary, depending on the OS. Maintaining these special files on a
physically-implemented file system such as a hard drive is inconvenient, and as it needs kernel assistance anyway, the
idea arose of a special-purpose logical file system that is not physically stored. Defining when devices are ready to
appear is not trivial. The devfs approach is for the device driver to request creation and deletion of devfs entries related
to the devices it enables and disables.
Pr. ABDERRAHIM BAJIT 6 INTRODUCTIONTOLINUXOPERATINGSYSTEM
COURSE 1.1.
LINUX OPERATING SYSTEM ELEMENT I. MÉTHODOLOGIE D’EMBARQUEMENT D’UN SYSTÈME
-HARDWARE CONFIGURATION HW- D’EXPLOITATION
Cours 1-1: Introduction sur la structure Generale de LINUX
TP-1.1.1. Démarrage du système -BOOT-
TP-1.1..2. Noyau et modules –KERNEL-
TP-1.1..3. Configurtion Matérielle -HW-
TP-1.1..4. Gestion Systèmes de Fichiers & des Supports de Stockage -LVM-
TP-1.1..5. Gestion de Paquetages Sources et Binaires -SW-
TP-1.1..6. Configuration Réseau -NETWORKING-
KERNEL
Driver core Export
Sysfs /sys
NETLINK
Kernel
uevent object Gather information from sysfs
Udevd
NETLINK
Udev
device create
Pass uevent to udev
Store device
information
Udev database
In memory
Udev
event process
Get stored device
information DBUS CONNECTION INSTANCE
Lister les attributs fournis par le système de fichiers virtuel SYSFS sur le répertoire de sa base de données
/sys. Chaque carte réseau ethx dispose de son propre objet
# ls /sys/class/net/eth0
Afficher les informations sur les périphériques branchés sur le bus PCI
# lspci | grep -i ethernet
Afficher la configuration des périphériques branchés sur le bus PCI extrait à partir du système de fichier
virtuel sysfs (CPU IRQ, CPU IO, KERNEL module)
# lspci -v -s 00:03.1 (bus:00, slot.func:03.1)
Afficher les informations sur la carte réseau eth0 (périphériques PCI) par interrogation de la base du
système de fichier virtuel sysfs
# udevadm info –p /sys/class/net/eth0 -a
Lister les attributs fournis par le système de fichiers virtuel SYSFS sur le répertoire de sa base de données
/sys. Chaque périphérique USB dispose de son propre objet
# ls /sys/bus/usb/devices/1-3
Afficher les informations sur les périphériques branchés sur le bus USB
# lsusb | grep -i flash
Afficher la configuration des périphériques branchés sur le bus USB extrait à partir du système de fichier
virtuel sysfs (CPU IRQ, CPU IO, KERNEL module)
# lsusb -v -s 001:043 (bus:001, devnum:043)
Afficher les informations sur les périphériques USB e par interrogation de la base du système de fichier
virtuel sysfs
# udevadm info –p /sys/bus/usb/devices/1-3 -a
Objectifs
Opérations de sauvegarde :
– sauvegarder les données importantes du système ;
– vérifier l'intégrité des fichiers de sauvegarde ;
– restaurer les sauvegardes.
Opérations de sauvegarde :
– supports de sauvegarde ;
– utilitaires de sauvegarde ;
– solutions de sauvegarde réseau.
Mots clés
cpio, dd, tar, mt, rsync, dump, restore
/dev/st*, /dev/nst*,
La commande mke2fs permet aussi de créer un système de fichiers ext2, et en utilisant l'option -j on peut créer un système
de fichiers ext3.
La commande fsck analyse les systèmes de fichiers et corrige les erreurs détectées, telles que :
blocs de données non utilisés et non enregistrés ;
blocs de données marqués comme libres mais également utilisés dans un fichier ;
inodes non référencés ;
répertoires non reliés au système de fichiers ;
informations incorrectes dans le superbloc.
Les disques sont généralement analysés au démarrage du système avec la commande fsck -p. Cette commande examine et
corrige les systèmes de fichiers listés dans le fichier /etc/fstab. Linux garde une trace des systèmes de fichiers qui ont été
correctement démontés. Concernant les systèmes de fichiers qui ne sont pas démontés correctement,
Linux procède à leur analyse et à leur correction. Si une certaine forme de journalisation est activée, fsck indique que le
système de fichiers est journalisé et applique le dernier état cohérent du système de fichiers.
La commande fsck -p lit le fichier /etc/fstab pour savoir quels sont les systèmes de fichiers à contrôler. Elle les traite par
ordre numérique croissant, en se basant sur la valeur contenue dans la dernière colonne de chaque ligne. La partition racine
est toujours vérifiée en premier.
Même si tous les démontages des systèmes de fichiers ont été faits correctement, on peut forcer la vérification après un
certain nombre de montages. La valeur par défaut est 25 démontages. C’est une bonne précaution, toutefois, sur les
ordinateurs de bureau où les montages de systèmes de fichiers sont fréquents, faire un fsck tous les 25 montages peut
devenir fastidieux. On peut donc fixer à 50 le nombre maximum de montages entre deux vérifications.
EXEMPLE
# tune2fs -c 50 /dev/sda3
tune2fs 1.35 (28-Feb-2004)
Setting maximal mount count to 50
Depuis la version 2.6.2 du noyau Linux, le service udev gère dynamiquement la création et la suppression des noeuds dans le
répertoire /dev en fonction de l'ajout ou de la suppression des périphériques du système.
Le service udev peut aussi charger automatiquement les pilotes des périphériques, assurer que les périphériques gardent
toujours les mêmes noms, indépendamment de leur ordre de branchement, et notifier aux autres programmes la présence
d'un périphérique.
La figure illustre le principe de fonctionnement du service udev : il écoute les messages du noyau, appelés uevent,
concernant les changements d'état des périphériques. Il peut effectuer une variété d'actions quand un périphérique est
découvert ou déconnecté, pour cela il se base sur des règles définies dans les fichiers des répertoires /etc/udev/rules.d
et /lib/udev/rules.d/.
2. Vérifier la configuration
# echo ‘/dev/sdb1 ext4 /mnt/myHomeBackup defaults 0 0’ >> /etc/fstab
# cat /etc/fstab
Les commandes LVM commencent par deux lettres qui reflètent le niveau d'abstraction LVM :
– les commandes pv manipulent les volumes physiques ;
– les commandes vg manipulent les groupes de volumes ;
– les commandes lv manipulent les volumes logiques.
TUTORIAL 3: BACKING UP
STEP 0: Installing lvm2 package and Collecting physical volume components
# aptitude install lvm2
# obtain /dev/sdc1 /dev/sdd1 and /dev/sde1 partitions (fdisk)
TUTORIAL 3: BACKING UP
STEP 1: Creating a file system on the LVM volume support
# mkfs -t ext4 /dev/ensaVG/ensaLVM
TUTORIAL 3: BACKING UP
Le premier exemple sauvegarde les fichiers du répertoire personnel de l'utilisateur user dont la date de dernière
modification est plus récente que celle du fichier test.txt
# tar cvf myHomeBackup.tar /home
− Cet exemple montre comment compresser une archive par les ou ls gzip et bzip2:
# gzip myHomeBackup.tar /media/backupsLVM
/media/backupsLVM/myHomeBackup.cpio.gz
# bzip2 myHomeBackup.tar
/media/backupsLVM/myHomeBackup.cpio.bz2
Le deuxième exemple sauvegarde les fichiers du répertoire personnel de l'utilisateur user dont la date de dernière
modification est plus récente que celle du fichier test.txt
# find /home -type f | cpio -ov
|
bzip2 > /media/backupsLVM/myHomeBackup.cpio.bz2
Objectifs
Il existe deux méthodes pour installer un logiciel sous Linux :
− à par r des paquetages binaires qui sont déjà compilés et construits par les éditeurs de logiciels ou de distribu ons ;
− à par r des paquetages comportant les codes sources.
La première méthode est celle qui est préférée mais la deuxième, s'avére indispensable dans des cas particuliers tels que :
− absence de paquetage binaire ;
− besoin d'une version plus récente que les versions binaires disponibles ou
− besoin de refaire la compila on d'un logiciel pour des raisons d'optimisation ou d'adaptation.
En général les étapes d'installation d'un logiciel à partir de ses codes sources sont :
− récupéra on du fichier archive ; − dépaquetage de l'archive ; − prépara on ou configura on de la compila on : pré-
compilation ; − compila on ; − installa on des fichiers binaires : post-compilation.
Points importants Installation à partir des codes sources :
– utilitaires usuels de compression et d'archivage ;
– utilisation de make pour compiler des programmes ;
– paramétrage du script de configuration ;
– emplacement des répertoires de code source.
Mots clés : /usr/src/, gunzip, gzip, bzip2, tar, configure, make, uname, install
La première méthode est celle qui est préférée mais la deuxième, qui est traitée dans cette section, peut s'avérer
indispensable dans des cas particuliers tels que :
absence de paquetage binaire ;
besoin d'une version plus récente que les versions binaires disponibles ou
besoin de refaire la compilation d'un logiciel pour des raisons d'optimisation ou d'adaptation.
Les paquetages comportant les codes sources des logiciels sont distribués sous forme de
fichiers archives. Ces fichiers archives contiennent notamment README et INSTALL, les
fichiers qui décrivent les étapes d'installation à suivre.
En général les étapes d'installation d'un logiciel à partir de ses codes sources sont :
récupération du fichier archive ;
dépaquetage de l'archive ;
préparation ou configuration de la compilation : pré-compilation ;
compilation ;
installation des fichiers binaires : post-compilation.
Pr. ABDERRAHIM BAJIT 6 INTRODUCTIONTOLINUXOPERATINGSYSTEM
COURSE 1.1.
LINUX OS ELEMENT I. MÉTHODOLOGIE D’EMBARQUEMENT D’UN SYSTÈME
D’EXPLOITATION
-SOFTWARE MANAGEMENT SW- Cours 1-1: Introduction sur la structure Generale de LINUX
TP-1.1.1. Démarrage du système -BOOT-
TP-1.1..2. Noyau et modules –KERNEL-
TP-1.1..3. Configurtion Matérielle -HW-
TP-1.1..4. Gestion Systèmes de Fichiers & des Supports de Stockage -LVM-
TP-1.1..5. Gestion de Paquetages Sources et Binaires -SW-
TP-1.1..6. Configuration Réseau -NETWORKING-
EXEMPLE WGET
Les exemples de cette section traitent l'installation pas à pas, à partir de codes sources, de
l'utilitaire GNU Wget.
La première étape consiste à récupérer la dernière version de l'utilitaire wget à partir du site FTP du projet GNU,
« http://ftp.gnu.org/gnu/wget/ ». Il s'agit du fichier wget-1.12.tar.gz.
Par contre, si on ne dispose pas du privilège root, on doit exécuter le script ./configure en précisant un répertoire
d'installation. Dans la plupart des cas c'est le répertoire personnel qui est spécifié comme répertoire d'installation :
$ ./configure --prefix=FULL_DIRECTORY_PATH (CUSTOMIZED CONFIGURATION)
Objectifs
Configuration élémentaire d'un réseau :
- Configurer des interfaces réseaux afin de se connecter à un réseau local, filaire ou sans fil, et à un réseau étendu ;
- Communiquer entre les différents sous-réseaux d'un même réseau y compris les réseaux IPv4 et IPv6.
Points importants
Configuration avancée d'un réseau et dépannage : - Utilitaires de configuration et de manipulation des interfaces Ethernet.
- Configurer un hôte multiréseau ; - Configuration des réseaux sans fil.
- Configurer un client VPN ; - Utilitaires de manipulation des tables de routage.
- Résolution des problèmes de communication. - Utilitaires d'analyse de l'état des interfaces réseaux.
- Utilitaires de suivi et d'analyse du trafic TCP/IP
Dépannage des problèmes réseaux : - OpenVPN.
- Identifier et corriger les problèmes réseaux les plus fréquents ; - Localisation et contenu des fichiers de contrôle d'accès.
- Reconnaître les emplacements des fichiers de configuration. - Utilitaires de détection et d'affichage de l'état d'un réseau.
Notification des utilisateurs : - Utilitaires de récupération d'information sur la configuration réseau.
- Notifier aux utilisateurs les problèmes relatifs au système. - Méthodes d’information sur les périphériques détectés et utilisés.
- Fichiers et scripts d'initialisation du système.
- Automatisation de la communication avec les utilisateurs à travers les
messages de connexion.
- Notification aux utilisateurs des opérations de maintenance du système.
Pr. ABDERRAHIM BAJIT 6 INTRODUCTIONTOLINUXOPERATINGSYSTEM
COURSE 1.1.
LINUX OS ELEMENT I. MÉTHODOLOGIE D’EMBARQUEMENT D’UN SYSTÈME
D’EXPLOITATION
-NETWOK CONFIGURATION NET- Cours 1-1: Introduction sur la structure Generale de LINUX
TP-1.1.1. Démarrage du système -BOOT-
TP-1.1..2. Noyau et modules –KERNEL-
TP-1.1..3. Configurtion Matérielle -HW-
TP-1.1..4. Gestion Systèmes de Fichiers & des Supports de Stockage -LVM-
TP-1.1..5. Gestion de Paquetages Sources et Binaires -SW-
TP-1.1..6. Configuration Réseau -NETWORKING-
La connexion d'un hôte à un réseau IP nécessite des opérations d'installation et de configuration. Les étapes de la mise en
réseau sont :
– installation d'une interface réseau : cette étape consiste à installer une (ou plusieurs) carte réseau et à paramétrer
l'interface réseau correspondante. Elle suit la procédure générale d'installation d'un périphérique. Lors de l'installation du
système Linux, les cartes réseaux sont automatiquement détectées et configurées ;
– configuration IP : cette étape traite la configuration de niveau réseau ;
– test de la configuration : cette étape consiste à tester la configuration précédemment effectuée et à utiliser les utilitaires
de diagnostic en cas de problèmes réseaux.
La commande lshw permet d'identifier les interfaces réseaux. Elle affiche pour chaque interface l'information sur le bus, le
détail du pilote et les fonctionnalités supportées. EXEMPLE
La commande lshw de cet exemple détecte deux interfaces réseaux connectées sur le bus PCI. La première est une interface
de type Ethernet, nommée « eth0 » et gérée par le pilote « e1000e ». La deuxième est
Pr. ABDERRAHIM BAJIT 6 INTRODUCTIONTOLINUXOPERATINGSYSTEM
COURSE 1.1.
LINUX OS ELEMENT I. MÉTHODOLOGIE D’EMBARQUEMENT D’UN SYSTÈME
D’EXPLOITATION
-NETWOK CONFIGURATION NET- Cours 1-1: Introduction sur la structure Generale de LINUX
TP-1.1.1. Démarrage du système -BOOT-
TP-1.1..2. Noyau et modules –KERNEL-
TP-1.1..3. Configurtion Matérielle -HW-
TP-1.1..4. Gestion Systèmes de Fichiers & des Supports de Stockage -LVM-
TP-1.1..5. Gestion de Paquetages Sources et Binaires -SW-
TP-1.1..6. Configuration Réseau -NETWORKING-
Les changements des paramètres des interfaces Ethernet par la commande ethtool sont
temporaires et seront perdus au prochain redémarrage du système. Afin de les rendre permanents, il faut spécifier ces
paramètres dans le fichier de configuration de l'interface.
Pour les distributions Debian et dérivées, la commande ethtool est spécifiée dans l'instruction pre-up du fichier de
configuration /etc/network/interfaces et pour les distributions Red Hat et dérivées les paramètres sont attribués à la
variable ETHTOOL_OPTS dans le fichier de configuration de l'interface correspondante (/etc/sysconfig/networkscripts/
ifcfg-eth0 pour l'interface eth0).
EXEMPLE
Cet exemple illustre le paramétrage permanent de l'interface « eth0 » de l'exemple précédent pour les deux types de
distributions. Pour les distributions Debian et dérivées, Debian-like:
# cat /etc/network/interfaces
auto eth0
...
pre-up /usr/sbin/ethtool -s eth0 speed 100 duplex full autoneg off wol g
et pour les distributions Red Hat et dérivées, RedHat-like:
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
...
ETHTOOL_OPTS="speed 100 duplex full autoneg off wol g "
Pr. ABDERRAHIM BAJIT 6 INTRODUCTIONTOLINUXOPERATINGSYSTEM
COURSE 1.1.
LINUX OS ELEMENT I. MÉTHODOLOGIE D’EMBARQUEMENT D’UN SYSTÈME
D’EXPLOITATION
-NETWOK CONFIGURATION NET- Cours 1-1: Introduction sur la structure Generale de LINUX
TP-1.1.1. Démarrage du système -BOOT-
TP-1.1..2. Noyau et modules –KERNEL-
TP-1.1..3. Configurtion Matérielle -HW-
TP-1.1..4. Gestion Systèmes de Fichiers & des Supports de Stockage -LVM-
TP-1.1..5. Gestion de Paquetages Sources et Binaires -SW-
TP-1.1..6. Configuration Réseau -NETWORKING-
Les changements des paramètres des interfaces Ethernet par la commande ethtool sont
temporaires et seront perdus au prochain redémarrage du système. Afin de les rendre permanents, il faut spécifier ces
paramètres dans le fichier de configuration de l'interface.
Pour les distributions Debian et dérivées, la commande ethtool est spécifiée dans l'instruction pre-up du fichier de
configuration /etc/network/interfaces et pour les distributions Red Hat et dérivées les paramètres sont attribués à la
variable ETHTOOL_OPTS dans le fichier de configuration de l'interface correspondante (/etc/sysconfig/networkscripts/
ifcfg-eth0 pour l'interface eth0).
EXEMPLE
Cet exemple illustre le paramétrage permanent de l'interface « eth0 » de l'exemple précédent pour les deux types de
distributions. Pour les distributions Debian et dérivées, Debian-like:
# cat /etc/network/interfaces
auto eth0
...
pre-up /usr/sbin/ethtool -s eth0 speed 100 duplex full autoneg off wol g
et pour les distributions Red Hat et dérivées, RedHat-like:
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
...
ETHTOOL_OPTS="speed 100 duplex full autoneg off wol g "
Pr. ABDERRAHIM BAJIT 6 INTRODUCTIONTOLINUXOPERATINGSYSTEM
COURSE 1.1.
LINUX OS ELEMENT I. MÉTHODOLOGIE D’EMBARQUEMENT D’UN SYSTÈME
D’EXPLOITATION
-NETWOK CONFIGURATION NET- Cours 1-1: Introduction sur la structure Generale de LINUX
TP-1.1.1. Démarrage du système -BOOT-
TP-1.1..2. Noyau et modules –KERNEL-
TP-1.1..3. Configurtion Matérielle -HW-
TP-1.1..4. Gestion Systèmes de Fichiers & des Supports de Stockage -LVM-
TP-1.1..5. Gestion de Paquetages Sources et Binaires -SW-
TP-1.1..6. Configuration Réseau -NETWORKING-
TUTORIEL 3: Configuration du serveur DHCP pour gérer le réseau local 192.168.10.0 du domaine (ensa.net)
1. Editer le fichier /etc/dhcp/dhcp.conf et y mettre le contenu suivant
Subnet 192.168.10.0 netmask 255.255.255.0 {
...
option domain-routers 192.168.10.254;
range 192.168.10.10 192.168.10.20;
...
}
TUTORIEL 6: Automatiser le démarrage des services startServer.sh et startClient par le service INIT
1. Coté serveur: démarrer le script startServer.sh au démarrage du service init
mv startServer.sh /etc/init.d
update-rc.d startServer.sh default
3. Coté serveur Rédémarrer les machines serveur et client et verifier la configuration réseau dans le domaine local
ensa.net
Coté serveur :
# init 6
...
Coté client:
# init 6
...
# ifconfig eth0 puis # ping 192.168.10.1