Que se passe-t-il si vous supprimez un fichier de périphérique?

21

Je connais à peu près les fichiers situés sous / dev.

Je sais qu'il existe deux types (caractère / bloc), l'accès à ces fichiers communique avec un pilote dans le noyau.

Je veux savoir ce qui se passe si j'en supprime un - spécifiquement pour les deux types de fichiers. Si je supprime un fichier de périphérique de bloc, disons /dev/sda, quel effet - le cas échéant - cela a-t-il? Est-ce que je viens de démonter le disque?

De même, /dev/mouse/mouse0que se passe-t-il si je supprime - que se passe-t-il? La souris cesse-t-elle de fonctionner? Se remplace-t-il automatiquement?

Puis-je même supprimer ces fichiers? Si j'avais une VM configurée, je l'essayerais.

alpha
la source
1
J'ai supprimé / dev / zero sur un système SVR4 une fois. Mauvaise idée. A pris un peu de travail pour remettre mon système en marche.
Brad Lanam

Réponses:

30

Ce sont simplement des fichiers (spéciaux). Ils ne servent que de «pointeurs» vers l'appareil réel. (c'est-à-dire le module du pilote à l'intérieur du noyau.)

Si une commande / un service a déjà ouvert ce fichier, il possède déjà un handle vers le périphérique et continuera de fonctionner.

Si une commande / un service tente d'ouvrir une nouvelle connexion, il essaiera d'accéder à ce fichier et échouera en raison de «fichier introuvable».

Habituellement, ces fichiers sont remplis par udev, ce qui les crée automatiquement au démarrage du système et lors d'événements spéciaux comme le branchement d'un périphérique USB, mais vous pouvez également les créer manuellement à l'aide mknod.

michas
la source
3
Cela ne répond pas vraiment à la question ...
Gogeta70
"Habituellement, ces fichiers sont remplis par udev" Habituellement, mais sous Linux. Il y a une makedevcommande qui fait généralement le travail, et contrairement à udevelle, elle semble être présente parmi la plupart des systèmes d'exploitation de type Unix.
Sergiy Kolodyazhnyy
1
@ Gogeta70 quelle partie de la question ce message laisse-t-il sans réponse?
Ruslan
@RonJohn La question est balisée linuxetudev
Michael Mrozek
1
@RonJohn Oui, mais avec un "mais". Le livre Ubuntu Hacks , qui ressemble à '06, le montre /etc/init.d/makedev. Le manuel freebsd mentionne MAKEDEV paru dans 4.2BSD (à partir de 1983). Je pense qu'en 1983, il serait tout aussi logique de rendre MAKEDEVautomatisé via init qu'en 06
Sergiy Kolodyazhnyy
8

Les fichiers de périphérique sont en fait un alias de système de fichiers pour une entrée dans la table des périphériques du noyau. Si vous regardez les fichiers / dev avec "ls -l", vous verrez qu'ils ont un numéro de périphérique majeur et un numéro de périphérique mineur. Si vous supprimez les fichiers du système de fichiers, vous pouvez toujours les recréer à l'aide des outils appropriés pour relier le fichier spécial à l'entrée de la table des périphériques du noyau - voir mknod (1).

Stephen M. Webb
la source
3

À partir de ce moment, ils ne sont accessibles que par des programmes sur lesquels ces appareils étaient déjà ouverts. Il n'est donc pas possible de démonter les systèmes de fichiers. Et avec udev, un redémarrage peut restaurer ces appareils. Une étrange façon d'apprendre Unix.

Gerard H. Pille
la source