Une des bases du fonctionnement d'un système Unix est que tout dans l'ordinateur est associé à un fichier et que tous ces fichiers sont localisés dans une arborescence unique, dont l'élément racine (root) est sobrement noté /.
On y trouve bien sur les fichiers normaux, ceux qui sont enregistrés
dans les secteurs des disques durs.
On peut créer un fichier vide à l'aide, par exemple, de la commande
touch.
Les répertoires sont aussi des fichiers, le contenu d'un fichier répertoire
est en fait une liste d'autres fichiers, ce sont les répertoires qui
permettent de construire l'arborescence.
Les répertoires se créent à l'aide de la commande mkdir.
Il faut noter que, sur les types de partitions le permettant, un même
fichier ``physique'' (l'ensemble de secteurs sur le disque dur)
peut être associé à plusieurs noms dans l'arborescence, appelés ``liens
physiques''. Un fichier n'est effectivement supprimé du disque que
lorsque plus aucun lien physique ne pointe vers lui.
Les liens physiques supplémentaires sont créés à l'aide de la commande
ln, un lien physique ne peut pointer que vers un fichier se trouvant
sur la même partition que lui.
On trouve également des fichiers dit ``de périphériques'', placés
dans /dev par convention (mais ce n'est pas obligatoire), et qui permettent,
à l'aide des méthodes habituelles de travail sur des fichiers, d'accéder
aux périphériques de la machine (disques durs, carte graphique, lecteurs
divers, cartes d'acquisitions en tous genres, ports d'entrée sortie
réels ou virtuels, ...).
Ces fichiers sont créés à l'aide de la commande mknod.
Il existe encore d'autres types de fichiers plus exotiques, les tubes
nommés. Ce type de fichier est lié aux fonctionnalités de redirections
d'entrées sorties particulièrement utiles en ligne de commande (à
l'aide des caractère | < >) mais également utilisés en interne (caché
à l'utilisateur, par opposition aux redirections du shell qui elles
sont insérées spécifiquement par l'utilisateur) par beaucoup de programmes.
Ces fichiers sont créés à l'aide de la commande mkfifo.
Il y a enfin des fichiers ``virtuels'' qui permettent d'obtenir
des informations sur le système (charge CPU, mémoire libre, uptime,
...).
Ces fichiers sont créés automatiquement par le noyau et différents
drivers et sont localisés, par convention, dans /proc.
Il existe un type particulier de fichiers, appelés ``liens symboliques'',
qui ne sont en fait que des ``raccourcis'' vers d'autres fichier
de l'arborescence (quel qu'il soit). Un lien symbolique se comporte
exactement comme le fichier vers lequel il pointe, ses permissions
sont celles du fichier pointé, lorsqu'on le visualise ou l'édite c'est
en fait au contenu du fichier pointé qu'on accède, par contre la suppression
d'un lien symbolique ne supprime que le lien, le fichier pointé et
son contenu sont toujours là.
Les liens symboliques sont créés (sur les partitions les supportant)
à l'aide de la commande ln -s. les liens symboliques, contrairement
aux liens physiques, ne sont pas limités par les partitions.
Il y a une petite subtilité concernant les noms de fichier, un fichier dont le nom commence par un point est considéré comme caché (il faut par exemple utiliser l'option -a de la commande ls pour les afficher)
Comme écrit à la section , les disques durs et les partitions qui y sont définies sont représentés par des fichiers localisés dans /dev.
L'ancienne convention de nommage, encore systématiquement utilisées,
est de placer tous les fichiers dans /dev.
Les disques/partitions/lecteurs se trouvant sur interface (E)IDE sont
préfixés par hd, ceux sur interface SCSI sont préfixés par sd. Les
différents disques lecteurs sont ensuite numérotés à l'aide des lettres
de l'alphabet, pour l'interface (E)IDE les lettres a et b représentent
respectivement les disques maître et esclave de la première nappe
IDE, c et d ceux de la deuxième nappe et ainsi de suite. Les disques
sur interface SCSI sont également représentés par des lettres qui
sont ici associées au numéro du périphérique sur l'interface SCSI,
ainsi a est le disque numéro 1 de la première interface SCSI et ainsi
de suite.
La nouvelle convention de nommage utilise, quand à elle, beaucoup plus de sous-répertoires, ainsi les périphériques (E)IDE sont dans /dev/ide et les périphériques SCSI dans /dev/scsi, cela ne s'arrête pas là avec des sous-répertoires host, des sous-sous-répertoires bus , des sous-sous-sous-répertoires target et des sous4-répertoires qui contiennent enfin les fichiers de périphériques. cette convention est la même pour les deux types d'interface.
Il est de coutume de créer des liens symboliques tels que /dev/cdrom, /dev/mouse, /dev/modem ou /dev/scanner vers les périphériques correspondants, pour une plus grande facilité d'utilisation.
Linux supporte un très grand nombre de types de partitions d'origine, et encore plus avec des patchs supplémentaires.
Le plus utilisé actuellement est le type ext2fs (second extended filesystem), qui supporte toutes les possibilités d'un système Unix (permissions, liens physiques et symboliques, fichiers spéciaux). Ce système de fichier est utilisé depuis longtemps, stable, bien connu et supporté par plusieurs autres OS, nativement ou à l'aide d'extensions. Ce système est une évolution de l'ext1 qui n'est plus utilisé.
Le fs [v]fat{12,16,32} habituel du monde windows est bien évidement
supporté, mais ce système de fichier n'apporte pas toutes les possibilités
nécessaires à un système Unix.
Le système ntfs, utilisé par WindowsNT est également supporté, mais
le support en écriture est encore considéré comme dangereux.
Le système utilisé sur les CD-ROM, l'iso9660, est supporté, ainsi
que les extensions joliet propres à MS ainsi que les extensions RockRidge
qui ajoutent à l'iso9660 les possibilités des fs Unix (noms de fichiers
longs, permissions, ...).
Le système UFS utilisé pour les DVD et les CD-RW est quand à lui supporté
en lecture, le support en écriture n'est malheureusement pas encore
fonctionnel.
Depuis quelque temps on voit également l'émergence sous Linux de systèmes de fichiers journalisés, ces systèmes assurent la cohérence du fs, permettant ainsi une réduction considérable du temps de vérification en cas d'arrêt inapproprié de la machine (ils n'assurent cependant pas la pérennité des données contenues dans les fichiers). On dénombre les systèmes suivants
On peut également citer des systèmes de fichiers virtuels, tel procfs déjà évoqué à la section ou encore devfs qui est utilisé pour créer et supprimer automatiquement les fichier de périphérique de /dev, rendant ainsi ce répertoire un reflet du matériel de la machine (ou plutôt du matériel effectivement supporté par Linux).
Comme il a déjà été dit, le système de fichier sous un système Unix est constitué d'une seule arborescence, mais cela n'empêche pas d'utiliser plusieurs partitions, celles-ci sont ``montées'' dans l'arborescence.
Monter une partition dans un répertoire /mapartition signifie que, une fois le montage réalisé, les fichiers et répertoires qui seront disponibles dans /mapartition seront ceux se trouvant à la racine de la partition montée. Et bien sur si avant le montage le répertoire /mapartition contenait déjà des fichiers, ceux-ci seront inaccessibles jusqu'au ``démontage'' de la partition.
Le montage d'une partition se réalise grâce à la commande mount, cette commande possède des options générales et d'autres spécifiques à un type de partition, comme le propriétaire et les permissions par défaut pour les systèmes qui ne les supportent pas.
Il faut bien sur qu'il y ait une partition montée en /, la racine de l'arborescence, on l'appelle la partition racine (root). Cela est nécessaire car il faut au moins que les répertoires dans lesquels seront montées les autres partitions soient enregistrés quelque part.
Les partitions nécessaires au bon fonctionnement du système sont montées au démarrage en lisant le contenu du fichier /etc/fstab, le répertoire /etc doit donc se trouver sur la partition racine, et pas une autre partition montée à cet endroit car dans ce cas le système ne trouverait pas la liste des partitions à monter. Il y a d'autres répertoires devant se trouver sur la partitions racine, ceux et les autres sont décrits à la section .
Cette section passe en revue les répertoires standards d'un système Unix.
Ce répertoire doit se trouver sur la partition racine.
Ce répertoire doit se trouver sur la partition racine.
Ce répertoire doit se trouver sur la partition racine, sauf si l'on utilisé devfs, il faut alors que le noyau monte celui-ci dès son chargement avec l'option devfs=mount.
Il contient en particulier un certain nombre de répertoires numériques, ces répertoires contiennent des informations sur les processus en cours d'exécution sur le système (le nom du répertoire est en fait le PID du processus), tous les processus, sans exception, y sont représentés. On peut donner comme exemples
C'est une bonne idée que ce répertoire soit une partition indépendante, cela évite qu'un trop grand nombre de fichiers temporaires ne remplissent complètement la partition racine.
Il est fréquent de créer une partition pour ce répertoire.
Ce répertoire doit se trouver sur la partition racine.
C'est une bonne idée de créer une partition pour recevoir ce répertoire, cela facilite une réinstallation éventuelle du système sans devoir se soucier des données des utilisateurs, il suffit de ne pas toucher à cette partition.
comme pour /usr, il peut être intéressant de créer une partition pour ce répertoire.
Il arrive que, à l'instar de /usr, on associe une partition à /usr/local, cela n'est cependant utile que sur des systèmes demandant beaucoup de rigueur et d'organisation. Ce répertoire trouve en fait tout son intérêt dans de grands systèmes ou les répertoires sont partagés en réseau.