Traductions de cette page?:

Les fichiers sous Linux - Un premier survol

Guide pour les ex Windowsiens… et les autres

Introduction — Le montage

Sous Windows, vous le savez bien, les fichiers sont rangés derrière des lettres de lecteur. La partition C:\ correspond plus ou moins à la première partition principale du disque maître, E:\ pourra par exemple être votre lecteur CD et votre clé USB sera montée dans F:\ quand elle est présente. Tous ces disques sont accessibles depuis le poste de travail ou depuis un terminal de commande windows. (Hé oui, on peut utiliser la ligne de commande sous Windows, c'est même très pratique…)

Depuis NTFS5 et Windows 2000, il est possible de monter un disque pour qu'il soit accessible dans un dossier. C'est à dire que par exemple, la seconde partition ne sera pas accessible par D:\ mais elle sera à l'emplacement C:\MesFilms\.

C:\MesFilms\ ne sera donc pas vraiment un dossier de C:\ mais correspondra en fait aux fichiers présents sur une autre partition.

C'est ce principe là, en bien plus évolué, qui est à l'œuvre sous Linux (qui a dit que Windows avait 20 ans de retard ?)

Et maintenant, sous Linux...

Regardons de plus près comment fonctionne notre système préféré…

La racine

  • « Au commencement était la racine… »

Sur / est montée la partition racine (root en anglais), c'est la base de votre système.

Elle correspond à peu près à C:\ sous Windows. Il s'agit des fondations du système de fichier, on ne peut remonter au dessus de /.

Les documents

  • /home/ désigne alors le répertoire où sont stockées les données utilisateurs. C'est un peu l'équivalent de C:\Documents and Settings\ sauf qu'on n'y trouve pas les données personnelles de l'administrateur. Souvent, très souvent, on préfère mettre /home dans une partition à part. Pourquoi ? Parce que comme ça, si on veut réinstaller le système, il n'est pas utile de toucher à cette partition. On ne la formate pas, et au final c'est comme s'il n'y avait pas besoin de restaurer les données et préférences des comptes utilisateurs.
  • /root/ est le dossier contenant les données personnelles de l'administrateur (en pratique, il s'agit de script de configuration qu'il s'est fait à la main, de mots de passe ou de trucs du genre). Je ne considère pas judicieux de le mettre sur une partition à part dans le cas d'un usage personnel. Les mots de passe ne survivant pas la réinstallation et les scripts étant stockés dans le répertoire de l'utilisateur principal.

L'amorçage

  • /boot/ est le dossier contenant les données relatives au démarrage du système. En pratique quand votre système démarre, le bios lance le gestionnaire de démarrage qui est stocké sur les 512 premiers ko du disque dur. Ensuite celui-ci décide quoi faire.

Si Linux est installé, ce gestionnaire de démarrage est très probablement « grub ». Grub est un système assez sophistiqué qui ne tient pas sur 512 ko, alors ces derniers contiennent en fait les informations nécessaires pour charger le reste du logiciel (qui peut être installé sur une partition ext3, fat32 ou autre).

Sous Linux, Grub est stocké dans /boot/grub/. Entre autre, il y a un fichier de configuration : /boot/grub/menu.lst qui contient la liste des systèmes amorçables et la manière de les amorcer. Ce fichier est en partie généré automatiquement et en partie édité par l'administrateur.

Si l'utilisateur décide de démarrer Linux, alors Grub va charger l'image du noyau spécifiée dans le menu.lst, par exemple /boot/vmlinuz-2.6.30-1-amd64 ainsi qu'une liste de modules contenant les drivers essentiels dont il aura besoin avant de savoir accéder au système de fichier dans sa totalité, par exemple : /boot/initrd.img-2.6.30-1-amd64. La suite, c'est le lancement du système avec le premier processus, INIT, qui lance tous les autres, jusqu'au serveur graphique et à votre jolie interface GNOME… ou pas. Mais bon, je digresse.

Les applications

  • /lib/, /bin/ et /sbin/ contiennent respectivement toutes les bibliothèques, les applications utilisateur et les applications système « essentielles »
  • /usr/ contient toutes les autres bibliothèques et les applications de la distribution (/usr/lib/, /usr/bin/, /usr/sbin/ et d'autres)
  • /opt/ est censé contenir les autres (ie. non fournies par la distribution) bibliothèques et applications.

La configuration

  • /etc/ contient la configuration de base de toutes les applications. On rencontre parfois un /etc/opt/ pour la configuration des applications installées dans /opt/

Les périphériques et les processus

  • /dev/ et /proc/ sont des dossiers qui ne contiennent pas de fichiers, mais dans lesquels on « monte » des systèmes de fichiers virtuels.

Je vois que ça fume, je reprends doucement.

Ces fichiers ne sont pas présents sur le disque dur, ils n'existent en fait qu'en mémoire et pour une notion de « fichier » qu'il vous faudra bien revoir puisqu'elle n'a pas grand chose à voir avec celle sous Windows.

Sur /dev/ ou /proc/, c'est comme si le système avait monté une partition qui n'est pas présente sur un disque dur mais créée virtuellement en mémoire.

  • /dev contient l'ensemble des périphériques (devices) détectés par le noyau. En ce sens, il peut faire penser au « gestionnaire de périphérique » de Windows. À l'intérieur, on trouve un fichier intéressant : /dev/cdrom . Ce fichier, pour le système, représente le lecteur CD-Rom. Lorsqu'un lecteur de musique voudra accéder à un CD audio, il passera par là. De même pour /dev/cdrw pour le graveur et /dev/dvd pour… les dvd.

Il y a des dossiers, c'est un peu le bazar là dedans, je vous laisse explorer. Vous y trouverez tous les disques durs, toutes les partitions, la carte son, la souris usb, et j'en passe.

  • /proc contient lui l'ensemble des processus qui tournent sur la machine. Par exemple, le firefox que je suis en train d'utiliser porte le numéro de processus 4244
fgivors@salade:/dev$ pidof firefox-bin
4244

Alors je peux en savoir plus sur lui avec

fgivors@salade:/dev$ ls /proc/4244/
attr    clear_refs       cpuset   exe     io        maps       mounts      numa_maps  pagemap      sched      stack  status   wchan
auxv    cmdline          cwd      fd      limits    mem        mountstats  oom_adj    personality  sessionid  stat   syscall
cgroup  coredump_filter  environ  fdinfo  loginuid  mountinfo  net         oom_score  root         smaps      statm  task

C'est bien plus puissant que le gestionnaire des tâches de Windows :)

Je peux savoir où il vit, s'il a lancé des processus fils, comment il a été lancé, d'où, etc.

Les médias amovibles et les données externes

  • /media/ et /mnt/ sont relativement vides. Ils sont destinés à recevoir les partitions présentes sur les périphériques respectivement amovibles et réseaux.

Par exemple, /mnt/music_melo/ pourrait contenir la bibliothèque musicale stockée sur l'ordi de mélodie si elle n'avait pas si mauvais goût :)

/media/cdrom0/ est destiné à recevoir les fichiers stockés sur le CD-Rom.

Vous allez me dire « hé là, attends, quid de /dev/cdrom ? /dev/cdrom est le périphérique CD-Rom.

En faisant ce qu'il faut avec ce fichier, on peut par exemple éjecter le CD-Rom :

eject /dev/cdrom

En lisant les données brut, on peut lire un CD audio…

mplayer cddb://

Mais s'il y a des fichiers dessus, ce ne sont pas les données brutes qui nous intéressent, mais les fichiers réellement présents, qui sont encodés différemment suivant le système de fichier utilisé (ext3 / fat32 / ntfs) On doit donc demander à accéder au système de fichier de ce périphérique. Sous Ubuntu, tout se fait tout seul, on insère et ça se «monte». En vrai, un petit lutin caché sous le capo tape mount /dev/cdrom /media/cdrom0. Idem pour les clés USB !

Les données variables

  • /var/ contient les journaux systèmes, le cache d'installation des applications, la liste des paquets installés, etc. C'est le seul dossier que les applications vont s'amuser à modifier toutes seules lors de leur fonctionnement de tous les jours.

Les services

  • /srv/ est vide. Mais il n'en pense pas moins. Il est destiné à contenir toutes les données relatives aux services proposés par la machine. Par exemple, si celle-ci fait serveur ftp, héberge différents sites web, etc. Tout est censé se trouver là.

Les fichiers temporaires

  • /tmp/ est le répertoire qui contient les données temporaires à courte durée de vie. En effet, le répertoire est vidé à chaque démarrage de la machine, contrairement à /var/ et /var/tmp, qui sont, eux, persistants.

Quid de la SWAP

Contrairement à Windows, la SWAP n'est pas présente dans un fichier pagefile.sys qui fragmente et ralentit tout l'ordinateur. Elle est stockée sur une partition à part créée lors de l'installation. Le contenu de cette partition n'est pas vraiment accessible dans le système de fichier.

On notera que cette partition d'échange sert la plupart du temps aussi de stockage lors de l'hibernation, jouant ainsi le rôle du fichier hibernate.sys de Windows.

Conclusion

Avec ça, vous devriez être à même de vous repérer dans une arborescence de fichiers. Bien sûr, il est nécessaire de pratiquer un peu pour prendre l'habitude de cette organisation.

Références

Remerciements

smolski pour sa relecture et ses réflexions pertinentes et constructives !

 
cours/systeme/les_fichiers/1_survol.txt · Dernière modification: 03/03/2010 22:08 par titia