Eu sei aproximadamente sobre os arquivos localizados em /dev.
Sei que existem dois tipos (caractere/bloco), o acesso a 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 terá? 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.
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 aquele arquivo e falhará por causa de "arquivo não encontrado".
Normalmente, esses arquivos são preenchidos por
udev
, que os cria automaticamente na inicialização do sistema e em eventos especiais, como conectar um dispositivo USB, mas você também pode criá-los manualmente usandomknod
.Os arquivos de dispositivo são, na verdade, um alias de sistema de arquivos para uma entrada na tabela de dispositivos do kernel. Se você observar os arquivos /dev com "ls -l", verá que eles têm um número de dispositivo principal e um número de dispositivo secundário. 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).
A partir desse momento, eles só podem ser acessados por programas que já tivessem 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.