Même si nous avons un appareil appelé par exemple /dev/sdb1
le point de montage du périphérique est différent, par exemple. /media/user/sth
. Maintenant, je suis confus et curieux de savoir quelle est la relation entre le nom de périphérique réel et le point de montage car, à la fois, dev
et /media/user/sth
sont deux dossiers différents sur le système.
Alors, pourquoi le nom du périphérique est-il associé à un dossier?
TL; DR : Parce que le système de fichiers /dev/
et le point de montage d'un périphérique ont une relation très minimale et qu'ils diffèrent par leur objectif.
Pour citer réponse de Gilles :
Presque tous les fichiers sous/dev sont des fichiers de périphériques. Alors que la lecture et l’écriture dans un fichier standard stocke les données sur un disque ou un autre système de fichiers, l’accès à un fichier de périphérique communique avec un pilote du noyau, qui communique généralement à son tour avec un élément matériel (un périphérique matériel, d’où son nom).
Avez-vous déjà entendu le dicton "tout est un fichier sur * nix"? Eh bien, c’est un peu le fonctionnement du système de fichiers /dev
- il vous permet d’avoir un "fichier" représentant un élément spécifique du matériel connecté à votre ordinateur. Si vous avez une souris connectée, elle apparaîtra par exemple comme suit: /dev/input/mouse0
; Si vous avez un disque dur connecté, il apparaîtra probablement comme /dev/sd<LETTER><NUMBER>
(et il est à noter que, généralement, il est utilisé pour représenter les périphériques de blocs qui vous permettent de lire des données dans des blocs d'un certain nombre d'octets) et font généralement utilisation du protocole SCSI, bien que pour les nouveaux lecteurs NVM, le code /dev/nvme0n1
) soit affiché.
Et il est possible d'interagir avec des appareils comme ça. Il est courant que des personnes fassent des sauvegardes avec dd if=/dev/sda1 of=/dev/sdc1
ou quelque chose de très long. Lorsque vous avez Arduino ou Raspberry Pi connectés via un port série, ils apparaissent en tant que consoles série /dev/ttyUSB0
ou /dev/ttyACM0
et vous pouvez y écrire des octets pour communiquer avec le périphérique, bien que plus pratique consiste à utiliser quelque chose comme screen
ou byobu
ou PuTTY
Logiciel. Mais c'est à peu près tout - vous ne pouvez pas vraiment voir les fichiers sur l'appareil d'une manière simple.
Un système de fichiers est la façon dont les données sont organisées sur un périphérique de stockage quelconque. Et il y a plusieurs systèmes de fichiers . Si vous avez un disque dur sous Mac, les données ont été organisées sur ce disque avec des types de système de fichiers HPFS ou APFS; si cela vient de Windows - cela peut utiliser le système de fichiers NTFS; il vient de Linux - il s'agirait généralement d'une forme de système de fichiers ext
; BSD ou Solaris peuvent utiliser zfs
, etc., etc. Vous pouvez même monter un fichier iso d’une sauvegarde et la lier à un dossier. Ils ont tous leurs propres avantages, mais l’idée principale est que les données sont organisées de manière logique et permettent à un utilisateur de traiter des fichiers individuels plutôt que de traiter des octets ou des blocs de données. Et le trait commun est que tous les systèmes de fichiers doivent avoir un point de montage, la racine logique de l’arborescence des dossiers et des fichiers.
Et c'est là que /dev
entre en jeu. Le /dev
est en fait un système de fichiers virtuel monté sur le dossier /dev
, en ce sens qu'il n'existe que lorsque votre ordinateur est en cours d'exécution; une fois que vous avez fermé, tout dans ce répertoire est parti. Idem avec les répertoires /proc
et /sys
- les représentations des processus et des périphériques physiques n'existent que pour la disponibilité du système. C'est pourquoi vous ne pouvez pas faire de /dev
un point de montage pour votre clé USB ou votre disque dur. C'est déjà un point de montage pour autre chose. En outre, cela violerait hiérarchie de système de fichiers Unix standard.
Bien qu’il soit possible de créer un répertoire dans /dev/my_mountpoint
et d’y monter un disque dur (avec les privilèges root), mais il est redondant et conforme à la norme de hiérarchie du système de fichiers Unix déjà mentionnée.
Nous pourrions faire une comparaison entre les sites Web et les disques. Avec un site Web, vous avez une série de liens vers des pages spécifiques. Mais le site Web est techniquement une collection de données stockées quelque part sur un serveur. Même idée ici - /dev/sda1
peut contenir des données et des fichiers, mais le point de montage vous permet d’interagir avec ces éléments de manière logique, et en connaissant le chemin d’un fichier, vous pouvez facilement y accéder, comme avec les liens du site Web vers lesquels vous naviguez. avoir besoin.
Du point de vue technique, le point de montage et le périphérique sont gérés par plusieurs fichiers. /etc/fstab
vous permettra de spécifier le périphérique (soit par la référence /dev
, soit via un numéro UUID), ainsi que l'endroit où le monter au moment du démarrage. /etc/mtab
, /proc/mounts
, /proc/self/mountinfo
et /proc/self/mountstats
vous indiqueront où les appareils sont actuellement montés . Maintenant, sur Ubuntu, l’interface graphique permet un montage automatique (jadis, Unity, maintenant GNOME, mais dans les deux cas, cela devrait toujours être géré par le même schéma GSettings ). Cela, à son tour, s'interface avec le système UDisks2
, qui monte ensuite votre clé USB ou votre disque dur dans le dossier /media
; en d'autres termes, il existe un logiciel en place qui relie automatiquement votre clé USB avec mountpoint.
Il convient également de noter que certains programmes tels que df
ne peuvent fonctionner que sur les systèmes de fichiers montés, c.-à-d. df
ne vous montrera l’utilisation que pour les lecteurs et partitions montés. En revanche, dans de nombreux cas, il est souhaitable de démonter le système de fichiers pour l'utilitaire de vérification de système de fichiers fsck
ou les utilitaires parted
/Gparted
(car ceux-ci sont utilisés pour le redimensionnement et le redimensionnement d'une partition montée peut entraîner une perte de données). Des utilitaires tels que findmnt
vous permettront de savoir où un périphérique spécifique est monté (que j’utilise personnellement dans l’invite de mon shell pour savoir sur quel lecteur de disque je me trouve actuellement).
Cela n’a probablement toujours pas beaucoup de sens, et c’est compréhensible. Disons simplement qu'il s'agit d'une convention. Pas nécessairement un truc Unix, parce que Windows le fait de manière similaire , avec une terminologie similaire. C'est simplement la façon dont les ordinateurs sont construits et ce qui était logique pour les ingénieurs lorsqu'ils concevaient les systèmes il y a des années et des années. Mais bon - ça marche, non?