Comprendre l'environnement Linux

Posté le par | Réponse(s) : 2

Nous sommes de plus en plus nombreux à utiliser des Raspberry Pi (ou autres micro PC) utilisant un noyau GNU/Linux pour fonctionner. Le succès de ces micro machines ne vient pas entièrement de la part de vieux barbus adorant le Manchot mais aussi par des utilisateurs Windows ou Mac venant de tout horizon et de tout âge. Ce billet est plutôt destiné aux utilisateurs de système d'exploitation Microsoft afin de les aider à se lancer dans le monde éclairé de la Force, les utilisateurs de Mac Os X sont en partie familiarisés avec ce qui va suivre.

Pour commencer Linux ou GNU/Linux c'est quoi ?

Sans trop rentrer dans les détails, un débat divise les partisans du logiciel libre au sujet du nom à donner aux systèmes d'exploitation fondés sur un noyau Linux. Les plus nombreux (avec le grand public) l'appellent simplement «Linux», les autres (peut-être plus proches du projet GNU) l'appellent «GNU/Linux».

Le noyau Linux est un noyau de système d'exploitation de type Unix. Il est un logiciel libre développé essentiellement en langage C par des centaines de bénévoles et/ou salariés communiquant leurs travaux conjointement par Internet. Pour faire court, le noyau est un programme qui permet la communication logiciel/matériel. Un système d'exploitation quant à lui, est un ensemble de programmes de base permettant d'utiliser un ordinateur.

Schématiquement comment ça se passe ? Lorsqu'on met en route l'appareil, le bootloader (un chargeur d'amorçage de systèmes d'exploitation) se lance et, juste après, le noyau est le premier code à s'exécuter. Ce noyau a pour rôle d'initialiser le matériel, puis il lance les premiers programmes (sous Linux : le programme init) et à partir de là, il s'occupe de faire tourner à tour de rôle tous les programmes lancés. Chaque programme peut faire des calculs pour lui-même, mais peut aussi à tout moment retourner dans le noyau pour effectuer certaines tâches qu'il n'a pas le droit de faire en tant que simple programme : se mettre en pause, demander à être réveillé plus tard, accéder à un composant matériel, lire un fichier, lancer un autre programme...

Le noyau est donc un chef d'orchestre, un gros bout de code, un "super-programme", logé quelque part dans la RAM pour toute la durée de fonctionnement de l'ordinateur, et qui arbitre tout ce qui se passe sur le système.

Quelles sont les différences majeures entre les fichiers système Linux et Windows ?

Les systèmes Windows sont des systèmes basés sur des noyaux différents des principes Unix/Linux, les branches de Windows 1.0, 2.0, 3.0, 95, 98, millenium et une partie de XP étant basées sur un système de fichiers de DOS (MS-DOS) et la branche NT (de Windows 2000 à Windows 8) basé sur un noyau inspiré de VAX VMS et d’UNIX intégrant la notion d’objet permettant une utilisation uniforme.

Un système de fichiers (file system ou filesystem en anglais) ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur des mémoires secondaires (disque dur, CD-ROM, clé USB, SSD, disquette, etc.). Une telle gestion des fichiers permet de traiter, de conserver des quantités importantes de données ainsi que de les partager entre plusieurs programmes informatiques. Il offre à l'utilisateur une vue abstraite sur ses données et permet de les localiser à partir d'un chemin d'accès.

Les utilisateur de Mac OS X et Linux ne seront pas déroutés tandis que ces deux derniers seront déstabilisés en utilisant un système Windows. Par exemple pour les caractères « : », « / » ou « \ » ne seront pas interprétés de la même manière sous Windows ou sous Unix/Linux. Pour cela, voyons la structure :

linux-root

Structure du répertoire

Lorsque l'on navigue au travers d'un système de fichier Linux, on ne retrouve pas des répertoires nommés "Windows", "Program Files", ou "Dossiers Utilisateur". On trouvera un répertoire /home très similaire au "dossier Utilisateur" Windows. Je ne vais pas m'arrêter sur le système de fichier Windows, vous le connaissez certainement mieux que moi.

Le Filesystem Hierarchy Standard (FHS) définit la structure des systèmes de fichiers sous Linux et d'autres systèmes d'exploitation de type UNIX. La norme sur la hiérarchie des systèmes de fichiers définit une organisation logique standard concernant l’organisation de ces répertoires. Ainsi, peu importe la distribution GNU/Linux (ou tout autre système d’exploitation adhérant à cette norme) que vous utilisez, vous serez en mesure de retrouver l’information que vous recherchez.

Le système de fichier Linux c'est une nomenclature de ce type :

  • /  - Le répertoire racine (ou root) : tout sur ​​votre système Linux se trouve dans le répertoire /, connu sous le nom de répertoire racine. Vous pouvez penser que le répertoire / est l'équivalent à  C:\ sur Windows - mais ce n'est pas réellement le cas car Linux n'est pas fondé sur des lettres de lecteur. Tandis qu'une autre partition Windows est situé à sous la lettre D:\, cette autre partition apparaît dans un autre répertoire sous / sur Linux (/media ou /mnt par exemple). La partition racine / doit toujours physiquement contenir /etc, /bin, /sbin, /lib et /dev, sinon vous ne pourrez pas amorcer le système.
  • /bin - Exécutables des commandes essentielles : ce répertoire /bin contient les programmes essentiels à l'ultilisateur qui doivent être présents lorsque le système est monté (amorçage). Des applications telles que Firefox sont stockés dans / usr / bin, alors que les programmes système importants et les services publics tels que le shell bash sont situés dans / bin. Le répertoire / usr peut être stocké sur une autre partition - placer ces fichiers dans le répertoire / bin garantit que le système aura ces utilitaires importants, même si aucun autres systèmes de fichiers sont montés. Le répertoire /sbin est similaire, il contient essentiellement les binaires (programmes) d'administration système.
  • /boot - Fichiers de démarrage statique : le répertoire /boot contient les fichiers nécessaires au démarrage du système Par exemple, les fichiers du chargeur de démarrage GRUB et vos noyaux Linux sont stockés ici. Par contre, les fichiers de configuration du chargeur de démarrage ne ​​sont pas situés ici, on les retrouvera dans /etc avec les autres fichiers de configuration.
  • /cdrom - Point de montage pour les CD-ROM : il correspond à un emplacement temporaire pour les CD-ROM insérés dans la machine. Cependant, l'emplacement standard pour les médias temporaires est dans le répertoire /media (clé USB, carte mémoire, éventuellement d'autres partitions ou disques durs, etc).
  • /dev - Fichiers spéciaux des périphérique : Linux expose tous les périphériques comme des fichiers ou des répertoires. /dev contient un certain nombre de fichiers spéciaux qui représentent les périphériques. Ce ne sont pas des fichiers réels tels nous les connaissons, mais ils apparaissent comme des fichiers - par exemple, /dev/sda représente le premier disque SATA dans le système. Si vous vouliez le partitionner, vous pouvez démarrer un éditeur de partition et lui dire de modifier /dev/sda (GParted le fait très bien).
    Ce répertoire contient également des pseudo-périphériques, qui sont des dispositifs virtuels qui ne correspondent pas au matériel. Par exemple, /dev/random produit des nombres aléatoires. /dev/null est un "périphérique virtuel" qui ne produit aucun résultat et qui supprime automatiquement toutes les entrées requête rejetée).
  • /etc - Fichiers de configuration : ce répertoire /etc contient les fichiers de configuration, qui peuvent généralement être éditées à la main dans un éditeur de texte. Notez que le fichier /etc/directory contient les fichiers de configuration système. Par contre, les fichiers de configuration spécifiques à l'utilisateur se trouvent dans le répertoire personnel (home) de chaque utilisateur.
  • /home - Répertoire personnels des utilisateurs : ce répertoire contient un dossier pour chaque utilisateur. Par exemple, si votre nom d'utilisateur est bob, vous avez un dossier situé dans /home/bob. Ce dossier contient des fichiers de données apparentant à l'utilisateur ainsi que les fichiers de configuration spécifiques à l'utilisateur. Chaque utilisateur n'a accès en écriture à leur dossier dans le /home/utilisateur et doit obtenir des autorisations élevées (devenir l'utilisateur root) pour modifier d'autres fichiers sur le système. Votre dossier personnel /home/bob va contenir vos documents, images, musique, vidéo, etc... que vous retrouverez sous /home/bob/documents, /home/bob/images, /home/bob/musique, /home/bob/video, etc...
  • /lib - Bibliothèques partagées essentielles et modules du noyau : il contient des bibliothèques nécessaires aux binaires essentiels dans le dossier /bin et /sbin.
  • /lost+found - Fichiers des "objets perdus/trouvés" : Chaque système de fichiers Linux dispose d'un répertoire /lost+found. En cas de panne du système de fichiers, une vérification du système de fichiers sera effectuée au démarrage suivant. Tous les fichiers corrompus trouvés sont placés dans ce répertoire de sorte que vous puissiez tenter de récupérer les données autant que possible.
  • /media - Répertoire des médias amovibles : il contient les sous-répertoires où les disques amovibles insérés dans l'ordinateur sont montés. Par exemple, lorsque vous insérez un CD dans votre système Linux, le répertoire sera automatiquement créé dans le répertoire /media. Vous pouvez accéder au contenu du CD-ROM dans ce répertoire (dans la majorité des distributions).
  • /mnt - Point de montage temporaires : historiquement parlant, le répertoire /mnt est l'endroit où les administrateurs système montaient les systèmes de fichiers temporairement tout en les utilisant. Par exemple, si vous montez une partition Windows pour effectuer certaines opérations de récupération de fichiers, vous pouvez le monter sur /mnt/windows. On peut toutefois monter des systèmes de fichiers n'importe où sur le système.
  • /opt - Paquetages optionnels : le répertoire /opt contient des sous-répertoires pour les logiciels optionnels. Il est couramment utilisé par les logiciels propriétaires qui ne respecte pas la hiérarchie système de fichiers standard - par exemple, un programme propriétaire peut déverser ses fichiers dans /opt/ application lorsque vous l'installez.
  • /proc - Répertoire virtuel pour les informations système (états du noyau et des processus système) : ce répertoire est similaire au répertoire /dev, car il ne contient pas de fichiers standard. Il contient des fichiers spéciaux qui représentent l'état du système et du traitement des informations.
  • /root - Répertoire root : répertoire du super-utilisateur qui a tous les privilèges sur la machine et sur le système d'exploitation.
  • /run - Fichiers état ​​de l'application : ce répertoire est assez nouveau, et donne aux applications un emplacement standard pour stocker les fichiers temporaires dont elles ont besoin, comme les ID de processus. Ces fichiers ne peuvent pas être stockés dans /tmp, car les fichiers contenus dans /tmp sont supprimés.
  • /sbinAdministration des systèmes binaires exécutables : le répertoire /sbin est similaire au répertoire /bin. Il contient les binaires (éxecutables) essentiels qui sont généralement destinés à être exécuté par l'utilisateur root pour l'administration du système.
  • /selinux - SELinux Virtual File System : Si votre distribution Linux utilise SELinux pour la sécurité (Fedora et Red Hat, par exemple), le répertoire /selinux contient des fichiers spéciaux utilisés par SELinux. Il est similaire à /proc. Ubuntu n'utilise pas SELinux, de sorte que la présence de ce dossier sur Ubuntu semble être un bug. Plus d'informations ici.
  • /srv - Données pour les services du système : il contient "des données pour les services fournis par le système".
  • /tmp - Fichiers temporaires : les applications stockent des fichiers temporaires dans le répertoire /tmp. Ces fichiers sont généralement supprimés chaque fois que votre système est redémarré et peuvent être supprimés à tout moment par les services tels que tmpwatch.
  • /usr - Pour des données en lecture seule par les utilisateurs : Ce répertoire contient les applications usuelles des utilisateurs et leurs fichiers (par opposition aux applications et fichiers utilisés par le système). Au même titre que certaines applications non essentielles se trouvent dans le répertoire /usr/bin au lieu du répertoire /bin, des binaires non essentiels à l'administration système se trouvent dans le répertoire /usr/sbin au lieu du répertoire /sbin, on trouve des bibliothèques dans le répertoire /usr/lib. Le répertoire /usr contient également d'autres répertoires, par exemple, des fichiers indépendants de l'architecture (comme les librairies de cartes graphiques) se trouvent dans /usr/share. Le répertoire /usr/local contient les applications compilées localement installer par défaut).
  • /var - Fichiers de données variables et diverses : ce répertoire est la contrepartie en écriture du répertoire /usr, qui doit être en lecture seule en fonctionnement normal. Il contient les fichiers journaux et tout ce qui serait normalement dans /usr lors du fonctionnement normal sont écrits dans le répertoire /var. Par exemple, vous trouverez les fichiers journaux dans /var/log.

 

Maintenant que nous avons définit le nom, le rôle des fichiers et des répertoires dans un système de fichiers Linux et comment ils sont structurés, nous allons pouvoir aborder les différences notables entre Linux et Windows.

Répertoire d'installation des programmes

Comme vous le voyez, la structure des répertoires Linux ne se contente pas d'utiliser des noms différents pour les dossiers, il utilise une disposition tout à fait différente. Par exemple, sous Windows, une application peut stocker tous ses fichiers dans C:\Program Files\Application. Sous Linux, ses fichiers seront partagés entre de multiples endroits - les binaires dans /usr/bin, ses bibliothèques dans /usr/lib, et ses fichiers de configuration dans /etc.

Sensibilité à la casse

En informatique, la casse désigne le fait de distinguer les lettres majuscules des lettres minuscules.

Sous Windows, vous ne pouvez pas avoir un fichier appelé fichier et un autre nommé FICHIER dans le même dossier. Le système de fichiers Windows n'est pas sensible à la casse, donc il traite ces noms comme un seul et même fichier.

Sous Linux, le système de fichiers est sensible à la casse. Cela signifie que vous pourriez avoir des fichiers appelés fichier, Fichier ou FICHIER dans un même dossier. Chaque fichier peut avoir des contenus différents. Linux traite les lettres majuscules et des lettres minuscules comme des caractères différents.

linux-file-case-sensitivity

Backslashes et Forward Slashes

On entend parfois parler de "slash" et "antislash", ce sont les fameuses barres obliques inversées ou non : «/» ou «\».

Windows utilise des barres obliques inversées, tout comme DOS fait, le chemin vers le répertoire d'un utilisateur sous Windows est C:\Users\Name

windows-forward-slashes

Sous Linux, le chemin vers le répertoire home de l'utilisateur est /home/name

linux-forward-slashes

Lettre de lecteur et arborescence Linux

Windows expose les partitions et les périphériques qu'il contient sous forme de lettres de lecteur. Que vous ayez plusieurs disques durs, des partitions multiples sur le même disque dur, ou des périphériques amovibles connectés, chaque unité de stockage sera disponible sous sa propre lettre de lecteur.

Linux ne connaît pas la notion de lettres de lecteur. Au lieu de cela, il utilise un système de fichiers accessibles via des répertoires arbitraires (Windows peuvent aussi le faire, mais ce n'est pas la façon dont il fonctionne "habituellement").

Sous Linux, tout est sous / (comme vu dans la structure). Le répertoire /media affiche par défaut le contenu des disques durs, partitions montées ainsi que tout périphérique connecté (clé USB, carte mémoire, etc..). Il faut cependant savoir que si vous avez plusieurs disques durs ou partitions de disque dur, vous pouvez les monter où vous voulez dans votre système de fichiers. Par exemple, vous pouvez placer vos répertoires sur une partition séparée en montant une autre partition /home (par exemple /mnt).

Comme tout système de fichiers monté est un sous-répertoire de / (le répertoire racine), tout sur Linux est représenté comme un fichier. Par exemple, votre premier disque dur est représenté par /dev/sda (/dev/sdb pour le deuxième, /dev/sdc pour le troisième, etc..), votre lecteur de CD est disponible dans /dev/cdrom, tandis que la souris est représenté par /dev/mouse. Ce ne sont pas en fait de vrais fichiers, ce sont des fichiers spéciaux qui représentent des périphériques matériels, les informations système, et d'autres choses. Ces fichiers spéciaux peuvent être situés dans des systèmes de fichiers /dev (contenant des fichiers spéciaux qui représentent les périphériques) et /proc (qui contient des fichiers spéciaux qui représentent système et de traiter l'information).

linux-dev

Modification et suppression des fichiers ouverts

Sous Linux et d'autres systèmes d'exploitation de type UNIX, les applications ne se bloquent pas l'accès aux fichiers lorqu'elles les utilisent contrairement à Windows qui lui les verrouillera systématiquement. Prenons l'exemple du visionnage d'une vidéo avec VLC sous Windows. Le film se termine, il est arrêté et comme c'est un navet, sous souhaitez le supprimer. Un magnifique message d'erreur vous indiquera que "une action est en cours de tache sur ce fichier et que vous ne pouvez pas le supprimer". Il faut donc libérer le fichier en quittant VLC pour pouvoir intervenir sur ce navet.

Linux permet cette souplesse et ce confort de travail. Tout bêtement comme pouvoir modifier un fichier de configuration d'un programme en cours d'utilisation. Certes il faudra tout de même, dans la majorité des cas, relancer le programme pour que les modifications prennent effet mais cela a l'avantage d'avoir sous les yeux ce qu'on modifie.

Pour conclure

Ces différences s'appliquent, à quelques différences près, à d'autres systèmes d'exploitation de type UNIX, votre Androphone par exemple. Mac OS X n'est pas sensible à la casse tout comme Windows. C'est ce qui fait que chaque système d'exploitation ne fonctionnera pas de la même manière qu'un autre et pourtant ils permettront, avec leurs différences, d'obtenir les résultats souhaités.

Ah si, il faut quand même rappeler que GNU/Linux est Open Source, ce qui veut dire que tout un chacun a accès à son code, peut tenter de le comprendre et de l'étudier, de le modifier, d'en user et d'en abuser. Ce n'est pas le cas de Microsoft Windows et de Mac Os X. Je vous laisse en tirer les conclusions.

J'espère que ce billet aura été une source compréhension pour tous celles et ceux qui souhaitent installer une distribution Linux sur son ordinateur ou pour d'autres qui envisagent de commander un Raspberry Pi. Évidement tous les aspects évoqués ont été résumés, synthétisés et pour les plus curieux d'entre vous, le Net et une source inépuisable de connaissance à utiliser sans modération, enfin si... il y a une vie à côté de l'informatique 😉

Sources : multiples (prise de notes depuis 2003 sur des sites divers et variés).

Pour aller plus loin : cet article de Framasoft (10 différences fondamentales entre Linux et Windows).

Licence Creative Commons
Cet article, sauf mention contraire expresse, est publié sous licence Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported Licence.

Vous avez aimé cet article ? Alors partagez-le avec vos amis en cliquant sur les boutons ci-dessous :
Google Plus Twitter Facebook Linkedin Framasphere email Flattr !

2 commentaires sur “Comprendre l'environnement Linux

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.