Cosa succede se si elimina un file del dispositivo?


21

Conosco approssimativamente i file che si trovano in / dev.

So che ci sono due tipi (carattere / blocco), l'accesso a questi file comunica con un driver nel kernel.

Voglio sapere cosa succede se ne elimino uno, in particolare per entrambi i tipi di file. Se elimino un file del dispositivo a blocchi, diciamo /dev/sda, che effetto ha, se presente, questo? Ho appena smontato il disco?

Allo stesso modo, cosa succede se cancello /dev/mouse/mouse0- cosa succede? Il mouse smette di funzionare? Si sostituisce automaticamente?

Posso anche cancellare questi file? Se avessi configurato una VM, la proverei.


1
Ho cancellato / dev / zero su un sistema SVR4 una volta. Cattiva idea. Ci è voluto un po 'di lavoro per riavviare il mio sistema.
Brad Lanam,

Risposte:


30

Questi sono semplicemente file (speciali). Servono solo come "puntatori" al dispositivo reale. (ovvero il modulo driver all'interno del kernel.)

Se qualche comando / servizio ha già aperto quel file, ha già un handle per il dispositivo e continuerà a funzionare.

Se un comando / servizio tenta di aprire una nuova connessione, proverà ad accedere a quel file e fallirà a causa di "file non trovato".

Di solito questi file sono popolati da udev, il che li crea automaticamente all'avvio del sistema e su eventi speciali come collegare un dispositivo USB, ma è anche possibile crearli manualmente usando mknod.


3
Questo non risponde davvero alla domanda ...
Gogeta70,

"Di solito quei file sono popolati da udev" Di solito, ma su Linux. C'è un makedevcomando che di solito fa il lavoro, e a differenza udevche sembra essere presente nella maggior parte dei sistemi operativi unix-like.
Sergiy Kolodyazhnyy,

1
@ Gogeta70 quale parte della domanda lascia senza risposta questo post?
Ruslan,

@RonJohn La domanda è taggata linuxeudev
Michael Mrozek

1
@RonJohn Sì, ma con un "ma". Il libro di Ubuntu Hacks che proviene da '06 mostra che c'è /etc/init.d/makedev. Il manuale di freebsd menziona MAKEDEV apparso in 4.2BSD (dal 1983). Penso che nel 1983 sarebbe altrettanto logico MAKEDEVautomatizzare via init come nel 06
Sergiy Kolodyazhnyy,

8

I file di dispositivo sono in realtà un alias di filesystem per una voce nella tabella dei dispositivi del kernel. Se guardi i file / dev con "ls -l" vedrai che hanno un numero di dispositivo maggiore e un numero di dispositivo minore. Se elimini i file dal filesystem, puoi sempre ricrearli usando gli strumenti appropriati per ricollegare il file speciale alla voce nella tabella dei dispositivi del kernel - vedi mknod (1).


3

Da quel momento in poi, è possibile accedervi solo da programmi con quei dispositivi già aperti. Quindi, non è possibile smontare i filesystem. E con udev, un riavvio potrebbe ripristinare quei dispositivi. Un modo strano di imparare unix.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.