Pliki specjalne urządzeń w Linuxie, czyli tzw. device files, faktycznie są zapisywane w katalogu /dev. Jest to standard, który spotkasz praktycznie we wszystkich dystrybucjach Linuksa już od czasów Uniksa. Katalog /dev służy jako miejsce, gdzie system tworzy interfejsy do urządzeń sprzętowych oraz wirtualnych, np. dysków, portów szeregowych, pamięci RAM czy nawet pseudo-urządzeń jak /dev/null albo /dev/random. To rozwiązanie pozwala traktować urządzenia jak pliki, co daje ogromną elastyczność – narzędzia użytkownika mogą komunikować się z hardware’m bezpośrednio przez standardowe operacje wejścia/wyjścia. Co ciekawe, w nowoczesnych systemach większość plików w /dev tworzona jest dynamicznie przez usługę udev, więc nie musisz ich ręcznie generować poleceniem mknod, jak to bywało dawniej. Taki model upraszcza zarządzanie dużą liczbą urządzeń i jest zgodny z zasadą „wszystko jest plikiem”. W praktyce, gdy instalujesz lub podłączasz nowe urządzenie, sterownik często sam tworzy odpowiedni plik specjalny w /dev – potem np. możesz odwołać się do /dev/sda, jeśli chodzi o pierwszy dysk twardy, albo /dev/ttyUSB0 dla adaptera USB-serial. Moim zdaniem warto dobrze poznać zawartość tego katalogu, bo daje to większą kontrolę nad sprzętem i lepsze zrozumienie działania Linuksa od środka. W branży to absolutna podstawa, bo właściwe zarządzanie plikami urządzeń jest kluczowe przy administracji systemami i rozwiązywaniu problemów sprzętowych.
W systemach Linux rozróżnienie katalogów systemowych ma kluczowe znaczenie dla bezpieczeństwa i porządku w systemie plików. Często można się pomylić i wybrać katalog /var, bo tam faktycznie zapisuje się sporo dynamicznych danych, takich jak logi, cache czy pliki tymczasowe – ale nie pliki urządzeń. Błąd ten wynika z założenia, że wszystko, co się zmienia dynamicznie, ląduje w /var, a to zdecydowanie nie dotyczy interfejsów sprzętowych. Z kolei katalog /sbin jest przeznaczony na programy systemowe i narzędzia administracyjne, często wykonywane przez root’a, np. do zarządzania systemem plików czy siecią. /sbin nie zawiera żadnych plików urządzeń – tam znajdziesz raczej binaria jak fdisk albo ifconfig. Błędne jest też wskazanie katalogu /proc. To specjalny system plików, który odzwierciedla stan jądra i procesów systemowych, jest cały generowany dynamicznie przez kernel, praktycznie nie zawiera klasycznych plików ani nie obsługuje urządzeń w taki sposób jak /dev. Często myli się /proc z /dev, bo oba są wirtualnymi systemami plików, ale mają zupełnie inne cele: /proc pokazuje procesy i parametry jądra, a /dev służy właśnie do reprezentowania urządzeń. Moim zdaniem to dość powszechne zamieszanie bierze się z pobieżnego poznania struktury linuksowej albo z przyzwyczajeń z systemów Windows, gdzie wszystko wygląda zupełnie inaczej. W Linuksie urządzenia są dostępne przez pliki w /dev, bo pozwala to na jednolity sposób obsługi wejścia/wyjścia, zgodnie ze starą, ale sprawdzoną zasadą uniksową. Warto doczytać o tym, jak działa udev i czym różnią się poszczególne katalogi – to bardzo pomaga przy rozwiązywaniu nietypowych problemów sprzętowych czy konfiguracji systemu.