Pliki specjalne urządzeń w systemie Linux rzeczywiście są przechowywane w katalogu /dev. To jest taka trochę fundamentalna sprawa, jeśli chodzi o architekturę Linuksa. Katalog /dev jest miejscem, gdzie znajdują się tzw. pliki urządzeń – inaczej mówiąc device files albo device nodes. Każde urządzenie sprzętowe, takie jak dysk twardy, port szeregowy czy karta dźwiękowa, otrzymuje swój plik w /dev. Dzięki temu system operacyjny i aplikacje mogą obsługiwać sprzęt tak, jakby był zwykłym plikiem – można go otwierać, czytać, zapisywać, a nawet stosować standardowe polecenia typu cat, dd, czy echo. To jest przykład bardzo eleganckiego podejścia do zarządzania sprzętem, które przyjęło się praktycznie w każdym uniksopodobnym systemie. Moim zdaniem to też spore ułatwienie przy automatyzacji i skryptowaniu, bo jak podłączysz np. pendrive, od razu dostaje on swój wpis w /dev, np. /dev/sdb1. Są też pliki urządzeń wirtualnych, np. /dev/null czy /dev/zero, które nie odnoszą się do fizycznego sprzętu, ale są równie ważne w codziennej pracy administratora. Warto pamiętać, że standard FHS (Filesystem Hierarchy Standard) jasno opisuje tę strukturę – katalog /dev zarezerwowany jest właśnie na pliki urządzeń. Tak więc jeśli widzisz /dev/sda albo /dev/ttyUSB0, od razu wiesz, że to jest właśnie to miejsce, gdzie Linux mapuje sprzęt na pliki. Przemyśl to na przyszłość – znajomość /dev i umiejętność operowania na tych plikach może bardzo ułatwić rozwiązywanie problemów sprzętowych.
Bardzo często można się pomylić, analizując katalogi w Linuksie, bo każdy z nich pełni swoją specyficzną rolę i niektóre nazwy brzmią myląco. Zacznę od katalogu /var – on służy głównie do przechowywania danych zmiennych, takich jak logi systemowe, kolejki wydruku czy pliki tymczasowe serwisów sieciowych. W praktyce nie znajdziesz tam plików reprezentujących sprzęt, a raczej dynamiczne dane produkowane przez uruchomione usługi. Zdarzają się też sytuacje, gdzie ktoś błędnie uważa, że skoro logi dotyczą sprzętu, to pliki urządzeń też są w /var, ale to zupełnie nie ten cel. Teraz /sbin – to katalog przeznaczony na narzędzia systemowe i administracyjne, programy wykorzystywane głównie przez administratora, np. do montowania dysków lub zarządzania procesami. Tu masz pliki wykonywalne, a nie pliki urządzeń. Czasem ktoś myli /sbin ze /dev, bo część poleceń z /sbin operuje na urządzeniach (np. fdisk, mount), ale same pliki urządzeń tam nie trafiają. Co do /proc – to bardzo specyficzny katalog, bo zawiera wirtualny system plików, który odzwierciedla stan jądra systemu, procesów, modułów i wielu innych parametrów runtime. Jest to narzędzie raczej do monitorowania i diagnostyki, niż do bezpośredniej interakcji ze sprzętem przez pliki urządzeń. Często można spotkać opinię, że /proc i /dev to prawie to samo, bo oba są dynamiczne, ale to nieprawda – /proc pokazuje, co dzieje się w systemie, a /dev daje dostęp do sprzętu. Ten błąd wynika z mylenia pojęcia wirtualnego systemu plików z fizycznymi (lub symulowanymi) interfejsami urządzeń. Reasumując: tylko /dev zgodnie ze standardami i dobrymi praktykami jest miejscem, gdzie linuksowy system tworzy specjalne pliki reprezentujące urządzenia sprzętowe i wirtualne. Znajomość tej struktury to podstawa sprawnego administrowania systemem.