¿Qué sucede si eliminas un archivo de dispositivo?

21

Más o menos sé acerca de los archivos ubicados en / dev.

Sé que hay dos tipos (carácter / bloque), el acceso a estos archivos se comunica con un controlador en el núcleo.

Quiero saber qué sucede si elimino uno, específicamente para ambos tipos de archivo. Si elimino un archivo de dispositivo de bloque, por ejemplo /dev/sda, ¿qué efecto, si lo hay, tiene esto? ¿Acabo de desmontar el disco?

Del mismo modo, ¿ /dev/mouse/mouse0qué sucede si elimino ? ¿Qué sucede? ¿El mouse deja de funcionar? ¿Se reemplaza automáticamente?

¿Puedo incluso eliminar estos archivos? Si tuviera una máquina virtual configurada, lo probaría.

alfa
fuente
1
Eliminé / dev / zero en un sistema SVR4 una vez. Mala idea. Tomó un poco de trabajo volver a arrancar mi sistema.
Brad Lanam

Respuestas:

30

Esos son simplemente archivos (especiales). Solo sirven como "punteros" al dispositivo real. (es decir, el módulo del controlador dentro del núcleo).

Si algún comando / servicio ya abrió ese archivo, ya tiene un identificador para el dispositivo y continuará funcionando.

Si algún comando / servicio intenta abrir una nueva conexión, intentará acceder a ese archivo y fallará debido a "archivo no encontrado".

Por lo general, esos archivos se rellenan udev, lo que los crea automáticamente al inicio del sistema y en eventos especiales como enchufar un dispositivo USB, pero también puede crearlos manualmente mknod.

michas
fuente
3
Esto realmente no responde la pregunta ...
Gogeta70
"Por lo general, esos archivos están poblados por udev" Por lo general, pero en Linux. Hay un makedevcomando que generalmente hace el trabajo y, a diferencia de udevesto, parece estar presente en la mayoría de los sistemas operativos tipo UNIX.
Sergiy Kolodyazhnyy
1
@ Gogeta70, ¿qué parte de la pregunta deja esta publicación sin respuesta?
Ruslan
@RonJohn La pregunta está etiquetada linuxyudev
Michael Mrozek
1
@RonJohn Sí, pero con un "pero". El libro de Ubuntu Hacks que es del '06 muestra que sí /etc/init.d/makedev. El manual de freebsd menciona que MAKEDEV apareció en 4.2BSD (desde 1983). Creo que en 1983 sería tan lógico MAKEDEVautomatizar a través de init como en 06
Sergiy Kolodyazhnyy
8

Los archivos de dispositivo son en realidad un alias de sistema de archivos para una entrada en la tabla de dispositivos del núcleo. Si observa los archivos / dev con "ls -l" verá que tienen un número de dispositivo mayor y un número de dispositivo menor. Si elimina los archivos del sistema de archivos, siempre puede volver a crearlos utilizando las herramientas apropiadas para volver a vincular el archivo especial a la entrada en la tabla de dispositivos del núcleo; consulte mknod (1).

Stephen M. Webb
fuente
3

A partir de ese momento, solo pueden acceder a ellos los programas que ya tenían esos dispositivos abiertos. Por lo tanto, no es forma de desmontar los sistemas de archivos. Y con udev, un reinicio podría restaurar esos dispositivos. Una forma extraña de aprender Unix.

Gerard H. Pille
fuente