Co się stanie, jeśli usuniesz plik urządzenia?

21

Z grubsza wiem o plikach znajdujących się w katalogu / dev.

Wiem, że istnieją dwa typy (znak / blok), dostęp do tych plików komunikuje się ze sterownikiem w jądrze.

Chcę wiedzieć, co się stanie, jeśli usunę jeden - specjalnie dla obu typów plików. Jeśli usunę plik urządzenia blokowego, powiedzmy /dev/sda, jaki efekt - jeśli w ogóle - ma to? Czy właśnie odmontowałem dysk?

Podobnie, co jeśli usunę /dev/mouse/mouse0- co się stanie? Czy mysz przestaje działać? Czy sam się zastępuje?

Czy mogę nawet usunąć te pliki? Gdybym miał skonfigurowaną maszynę wirtualną, spróbowałbym tego.

alfa
źródło
1
Raz usunąłem / dev / zero w systemie SVR4. Kiepski pomysł. Trochę pracy zajęło mi ponowne uruchomienie systemu.
Brad Lanam,

Odpowiedzi:

30

Są to po prostu (specjalne) pliki. Służą one jedynie jako „wskaźniki” do rzeczywistego urządzenia. (tj. moduł sterownika wewnątrz jądra).

Jeśli jakieś polecenie / usługa już otworzyło ten plik, ma już uchwyt do urządzenia i będzie kontynuowało pracę.

Jeśli jakieś polecenie / usługa spróbuje otworzyć nowe połączenie, spróbuje uzyskać dostęp do tego pliku i zakończy się niepowodzeniem z powodu „nie znaleziono pliku”.

Zazwyczaj te pliki są zapełniane przez udev, co automatycznie tworzy je podczas uruchamiania systemu i na specjalnych wydarzeniach, takich jak podłączanie urządzenia USB, ale można również ręcznie utworzyć te przy użyciu mknod.

michas
źródło
3
To tak naprawdę nie odpowiada na pytanie ...
Gogeta70
„Zwykle te pliki są wypełniane przez udev” Zwykle, ale w systemie Linux. Istnieje makedevpolecenie, które zwykle wykonuje tę pracę, i w przeciwieństwie do udevtego wydaje się być obecne wśród większości uniksopodobnych systemów operacyjnych.
Sergiy Kolodyazhnyy
1
@ Gogeta70, która część pytania pozostawia bez odpowiedzi ten post?
Ruslan
@RonJohn Pytanie jest oznaczone linuxiudev
Michael Mrozek
1
@RonJohn Tak, ale z „ale”. Książka na temat Ubuntu Hacks, która pochodzi z 2006 roku, pokazuje, że jest /etc/init.d/makedev. Podręcznik freebsd wspomina MAKEDEV pojawił się w 4.2BSD (od 1983 r.). Myślę, że w 1983 r. Logiczne byłoby MAKEDEVzautomatyzowanie za pomocą init, jak w 06
Sergiy Kolodyazhnyy
8

Pliki urządzeń są w rzeczywistości aliasami systemu plików dla pozycji w tabeli urządzeń jądra. Jeśli spojrzysz na pliki / dev z „ls -l”, zobaczysz, że mają one główny numer urządzenia i mniejszy numer urządzenia. Jeśli usuniesz pliki z systemu plików, zawsze możesz je ponownie utworzyć za pomocą odpowiednich narzędzi, aby ponownie połączyć specjalny plik z wpisem w tabeli urządzeń jądra - patrz mknod (1).

Stephen M. Webb
źródło
3

Od tego momentu dostęp do nich mają tylko programy, w których te urządzenia były już otwarte. Nie można więc odmontować systemów plików. Dzięki udev ponowne uruchomienie może przywrócić te urządzenia. Dziwny sposób na naukę unixa.

Gerard H. Pille
źródło