next up previous contents
Next: 1.3 Accéder au système et le quitter proprement Up: 1. Premiers pas Previous: 1.1 Aperçu général

Sous-sections

  
1.2 Système de fichiers [YB]

Le système de fichiers d'un système d'exploitation est un ensemble de principes et de règles selon lesquels les fichiers sont organisés et manipulés. Chaque système d'exploitation possède son système de fichier privilégié, même s'il peut en utiliser d'autres. Le tableau 1.1 donne quelques noms.


 
Tableau 1.1: Systèmes de fichiers de quelques systèmes d'exploitation
Système Système de fichier
MS-DOS FAT, aussi appelé FAT-16 (File Allocation Table 16bits)
Windows 95/98 FAT32, extension du système FAT-16 (File Allocation Table 32bits)
Windows NT NTFS (New Technology File System)
OS/2 HPFS (High Performance File System)
Linux Ext2fs (Second Extended File System)


1.2.1 Qu'est-ce qu'un fichier ? [YB]

Fondamentalement, un fichier est une suite de caractères (on dit <<octets>>) qui constitue un ensemble cohérent (en principe) d'informations. Le fichier est l'élément fondamental d'un système d'exploitation : les instructions nécessaires au fonctionnement de ce système, sa configuration, comment il doit réagir à telle situation, toutes ces informations sont stockées dans des fichiers.

Plus généralement, les fichiers sont utilisés pour stocker les travaux des utilisateurs. Pour ces derniers, les fichiers sont identifiables par un nom, qui doit respecter certaines contraintes (voir plus bas). Cette définition, très générale, inclut également les fichiers qui rassemblent des informations sous forme structurée selon les principes des bases de données, par exemple le fichier des assurés sociaux de la Sécurité Sociale : c'est là une forme plus restrictive de la notion de fichier.

Enfin, les fichiers sont eux-mêmes stockés physiquement sur différents supports, comme les disquettes, les disques durs, les CD-ROMs...

1.2.2 Tout est fichier ! [YB]

Il en est ainsi sous Unix, et donc sous Linux : tous les éléments du système sont manipulés par des fichiers ! Cela peut paraître un peu déroutant de penser que le clavier sur lequel on frappe désespérément est considéré par le système comme un fichier, spécial certes, mais fichier tout de même. Toutefois cette uniformisation permet de simplifier grandement la manipulation du système en général, et sa programmation en particulier.

Sous Linux, les noms de fichiers sont limités à 255 caractères et ne doivent en principe comporter que des caractères alphanumériques (c'est-à-dire des lettres et des chiffres), ainsi que les symboles . - _ ~ + %. Il est toutefois possible d'insérer un espace ou d'autres caractères <<bizarres>> dans un nom de fichier, mais ceci est très fortement déconseillé, pour des raisons qui n'apparaîtront que plus tard (notamment dans le chapitre 2.7 concernant la programmation, page [*]).

Attention, le système fait la différence entre les majuscules et les minuscules ! Ainsi, dans un même répertoire on peut avoir les deux fichiers lettre.txt et Lettre.txt. Nous ne saurions trop vous déconseiller d'abuser de ce genre de possibilités.

Une petite particularité : les fichiers (ou répertoires) dont le nom commence par un point ('.') sont des fichiers cachés, c'est-à-dire qu'ils ne sont pas listés normalement par la commande ls (voir 1.5.4.1 page [*]).

Vous aurez sans doute remarqué que nous utilisons une forme de caractère particulière pour les noms de fichiers, comme nous l'avions annoncé dans l'introduction, ceci afin de faciliter la lecture : il en sera ainsi tout au long de cet ouvrage.

1.2.3 Les répertoires [YB]

Les répertoires sont des fichiers un peu particuliers, qui <<contiennent>> d'autres fichiers et d'autres répertoires.

Le terme de <<contenir>> n'est pas tout à fait approprié, ce n'est qu'une image. Plus précisément, un répertoire est un fichier contenant des références et des descriptions pour d'autres fichiers (qui peuvent être des répertoires...). Ce terme est toutefois celui employé couramment.

On obtient ainsi une structure arborescente, telle que celle visible sur la figure 1.1, page [*]. L'utilisation de répertoires est vivement conseillée pour organiser ses informations.

Il existe sous Linux (et Unix) un répertoire <<ancêtre>> de tous les autres, qui contient tous les autres (directement ou suite à des intermédiaires) : le répertoire root1.2, que l'on note simplement '/' (ce symbole se lit slash).

Prenons une analogie, pour bien vous faire saisir cette notion de répertoire. Considérez votre système comme une bibliothèque : la bibliothèque dans son ensemble peut être assimilée au répertoire racine. Mais généralement, une bibliothèque est subdivisée en sections : la section <<histoire>>, la section <<géographie>>, la section <<romans>>... ce sont là les répertoires situés dans la racine. Entrons dans la section <<romans>>. On y trouve d'autres divisions, les romans <<policiers>>, les romans <<picaresques>>, les romans <<à l'eau de rose>>... ce sont des sous-répertoires du répertoire <<romans>>. Mais peut-être y a-t-il des romans inclassables, qui n'entrent dans aucune des divisions prévues : ils seront simplement entassés à l'entrée de la section <<romans>>, directement accessibles, comme les fichiers présents dans un répertoire. Au sein des romans policiers, on peut trouver encore d'autres catégories selon la langue, l'auteur, etc. pour parvenir enfin jusqu'à une étagère ou un rayon, qui ne soit pas subdivisé : les rayons sont remplis de livres, qui sont les fichiers, car comme les fichiers ils ont un nom (le titre) et un propriétaire (l'auteur).

Chaque répertoire contient deux répertoires particuliers :

'.' 
désigne le répertoire lui-même
'..'
désigne le répertoire de niveau juste supérieur.
Ainsi, sur la figure 1.1, le '..' du répertoire rc.d désigne le répertoire etc.

Une notion importante sous Linux est celle de répertoire courant. On peut considérer une arborescence comme un ensemble de villes reliées par des routes ; le répertoire courant désigne alors la ville où l'on se trouve. Pour reprendre l'analogie de la bibliothèque, le répertoire courant est la section ou sous-section dans laquelle on est en train de déambuler nonchalamment.

Pour définir complètement un fichier, il est nécessaire de connaître la succession de répertoires qu'il faut parcourir pour le trouver : c'est le chemin1.3 du fichier.

Si ce chemin commence par le symbole '/', il est dit absolu : il indique la succession de répertoires depuis la racine pour obtenir le fichier. Par exemple, le texte <</etc/passwd>> est le chemin pour le fichier passwd qui se trouve dans le répertoire etc. Par abus de langage, on appelle également chemin absolu le texte <</usr/local/man>>, qui ne désigne pas un fichier particulier, car comme on le voit sur la figure 1.1, man est un répertoire dans /usr/local. Mais rappelons que les répertoires ne sont que des fichiers particuliers...

Dans le cas contraire, le chemin est dit relatif : il prend comme point de départ le répertoire courant. Ainsi, si le répertoire courant est /usr/local, le texte man/man1 équivaut au chemin absolu /usr/local/man/man1. En utilisant le '..' évoqué plus haut, en partant du même point de départ, le texte ../bin équivaut au chemin absolu /usr/bin. On parle également d'indirection, lorsque le chemin commence par un '..'.

Ces principes et notions peuvent paraître déroutantes dans un premier temps, mais un peu de pratique les font devenir une seconde nature.

1.2.4 Hiérarchie standard [YB]

Il existe une certaine normalisation dans l'architecture des répertoires sous Linux (comme sous Unix, d'ailleurs). La figure 1.1 en page [*] présente une organisation standard1.4. Il peut toutefois exister des variations d'une distribution à l'autre, mais dans l'ensemble c'est assez bien respecté.

Les flèches blanches en pointillés indiquent qu'il est fréquent de trouver d'autres répertoires, mais sans qu'il existe véritablement de norme.


  
Figure 1.1: Hiérarchie standard des répertoires

\rotatebox{90}{\includegraphics{images/rep_standard.eps}}


Quelques précisions concernant ce graphique.

/etc
Contient les fichiers de configuration généraux, les commandes à exécuter au démarrage du système, et même le mode de démarrage du système.
/bin
Contient des commandes nécessaires lors du démarrage du système. Ces commandes pourront par la suite être utilisées par les utilisateurs.
/sbin
Contient des commandes nécessaires lors du démarrage du système, mais en quelque sorte réservées à l'administrateur du système, ou super-utilisateur (voir 2.3.1, page [*]).
/home
Est réservé à l'hébergement des comptes des utilisateurs (voir 2.3, page [*]).
/dev
Ce répertoire contient tous les fichiers spéciaux utilisés pour accéder au matériel, qu'il s'agisse du clavier, du disque dur, de la carte son...
/proc
Voici un pseudo-répertoire : en réalité, son contenu n'existe pas physiquement sur le disque, mais est manipulé directement par le système lui-même. On y trouve nombre d'informations techniques utiles.
/usr
Répertoire à usages multiples, dont les principaux sont :

/usr/bin
Commandes utilisables par tous les utilisateurs, et non nécessaires lors du démarrage du système.
/usr/sbin
Commandes réservées au super-utilisateur (voir 2.3.1, page [*]), et non nécessaires lors du démarrage du système.
/usr/man
Contient les pages de manuel (voir 1.5.2, page [*]).
/usr/doc
Contient de nombreuses documentations et sources d'informations.
/usr/X11R6
Contient (normalement) tous les fichiers se rapportant à la couche graphique X-Window (voir chapitre 4, page [*]).
/usr/local
Lieu où sont stockés les fichiers spécifiques au système installé.
/var
Contient des données mises à jour par différents programmes durant le fonctionnement du système.

/var/lock
Fichiers de blocage, pour interdire par exemple deux utilisations simultanées du modem.
/var/spool
Répertoires utilisés pour l'organisation du travail des imprimantes, de la messagerie électronique, etc.
/var/log
Contient les fichiers logs1.5 provenant de différents points du système.

1.2.5 Quelques fichiers sensibles [YB]

Ces fichiers sensibles sont des fichiers particulièrement importants, sur lesquels repose une grande partie de la stabilité du système, voire de son simple fonctionnement. Il est donc vivement recommandé de ne pas modifier, encore moins d'effacer, ces fichiers, sans un luxe de précautions et sans savoir très précisément ce que l'on fait.

La plupart d'entre eux apparaîtront à nouveau dans la suite, dans les sections auxquelles ils se rapportent.

/etc/passwd
Le fichier des utilisateurs et des mots de passe associés. Supprimez ce fichier, et il vous sera impossible d'utiliser votre système !
/etc/inittab
Précise le mode de démarrage du système et les actions associées. La suppression ou une altération malheureuse de ce fichier peut rendre le système impossible à démarrer.
/etc/fstab
Liste des partitions utilisées par le système et selon quelle méthode il les utilise. A ne pas toucher sans savoir ! Vous pourriez rendre votre système très instable.
XF86Config
Peut se situer en différents endroits (mais souvent sous /etc/X11) selon la distribution employée. Contient la configuration de la couche graphique (voir le chapitre 4 sur la couche graphique X-Window, page [*]). Attention, les informations qu'il contient sont spécifiques au matériel utilisé : une modification hasardeuse peut rendre la couche graphique non fonctionnelle, voire endommager le matériel, notamment l'écran.
vmlinuz...
Peut-être le plus important de tous. Se situe généralement, soit sous la racine (/), soit sous /boot. En fait, il s'agit du système lui-même ! C'est le c\oeur des fonctions internes qui réalisent le fonctionnement de tout le système. Voir 5, page [*].
Ne sont évoqués ici que les fichiers les plus importants. Il existe naturellement un grand nombre d'autres fichiers, qu'il convient de traiter avec douceur, même si les effets d'une erreur sont moins catastrophiques.



Footnotes

...root1.2
racine en français
...chemin1.3
path en anglais
...
Un fichier log est un fichier contenant des informations concernant le déroulement d'un programme. Souvent très utiles en cas de problème ou de dysfonctionnement.
... standard1.4
Description extraite du Linux System Administrator's Guide 0.6
... 1.5

next up previous contents
Next: 1.3 Accéder au système et le quitter proprement Up: 1. Premiers pas Previous: 1.1 Aperçu général
kafka.fr@linux-france.org