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.


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.


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).


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.