O que acontece se você excluir um arquivo de dispositivo?

21

Conheço aproximadamente os arquivos localizados em / dev.

Eu sei que existem dois tipos (caractere / bloco), acessar esses arquivos se comunica com um driver no kernel.

Quero saber o que acontece se eu excluir um - especificamente para os dois tipos de arquivo. Se eu excluir um arquivo de dispositivo de bloco, digamos /dev/sda, que efeito - se houver - isso tem? Acabei de desmontar o disco?

Da mesma forma, e se eu excluir /dev/mouse/mouse0- o que acontece? O mouse para de funcionar? Ele se substitui automaticamente?

Posso excluir esses arquivos? Se eu tivesse uma VM configurada, tentaria.

alfa
fonte
1
Eu apaguei / dev / zero em um sistema SVR4 uma vez. Péssima ideia. Trabalhei um pouco para inicializar meu sistema novamente.
Brad Lanam

Respostas:

30

Esses são simplesmente arquivos (especiais). Eles servem apenas como "ponteiros" para o dispositivo real. (ou seja, o módulo do driver dentro do kernel.)

Se algum comando / serviço já abriu esse arquivo, ele já possui um identificador para o dispositivo e continuará funcionando.

Se algum comando / serviço tentar abrir uma nova conexão, ele tentará acessar esse arquivo e falhará por causa de "arquivo não encontrado".

Geralmente esses arquivos são preenchidos por udev, o que os cria automaticamente na inicialização do sistema e em eventos especiais, como conectar um dispositivo USB, mas você também pode criar manualmente aqueles usando mknod.

michas
fonte
3
Isto realmente não responder à pergunta ...
Gogeta70
"Geralmente esses arquivos são preenchidos pelo udev" Normalmente, mas no Linux. Existe um makedevcomando que geralmente faz o trabalho e, ao contrário udev, parece estar presente entre os sistemas operacionais mais parecidos com o Unix.
Sergiy Kolodyazhnyy
1
@ Gogeta70, que parte da pergunta este post deixa sem resposta?
Ruslan
@RonJohn A pergunta está etiquetada linuxeudev
Michael Mrozek
1
@ RonJohn Sim, mas com um "mas". O livro Ubuntu Hacks , que é do tipo '06, mostra que existe /etc/init.d/makedev. O manual do freebsd menciona MAKEDEV apareceu em 4.2BSD (de 1983). Eu acho que em 1983 seria tão lógico fazer MAKEDEVautomatizado via de inicialização como em 06
Sergiy Kolodyazhnyy
8

Os arquivos de dispositivo são na verdade um alias do sistema de arquivos para uma entrada na tabela de dispositivos do kernel. Se você olhar para os arquivos / dev com "ls -l", verá que eles têm um número de dispositivo principal e um número de dispositivo menor. Se você excluir os arquivos do sistema de arquivos, sempre poderá recriá-los usando as ferramentas apropriadas para vincular novamente o arquivo especial à entrada na tabela de dispositivos do kernel - consulte mknod (1).

Stephen M. Webb
fonte
3

A partir desse momento, eles só podem ser acessados ​​por programas que já tinham esses dispositivos abertos. Portanto, não há como desmontar sistemas de arquivos. E com o udev, uma reinicialização pode restaurar esses dispositivos. Uma maneira estranha de aprender unix.

Gerard H. Pille
fonte