Pliki specjalne można tworzyć przy pomocy funkcji systemowej mknod(). Pobiera ona jako parametry nazwę pliku, typ, oraz główny i podrzędny numer urządzenia, z tym, że główny i podrzędny numer urządzenia trzeba podać jako jeden parametr typu dev_t (słowo w którym wyższy bajt to numer główny a niższy to numer podrzędny urządzenia). Do utworzenia pliku specjalnego można też użyć programu o nazwie mknod który jako parametry pobiera również nawę, typ, numer główny i numer podrzędny (tylko tym razem numery są osobno). Na przykład polecenie:
[root@bonifacy /dev] mknod /dev/zegar c 10 135stworzy plik specjalny dla urządzenia zegara czasu rzeczywistego (sądząc z numerów) czyli właściwie drugi plik specjalny dla tego urządzenia obok /dev/rtc.
Tworzenie pliku specjalnego oznacza utworzenie i-węzła. W tym momencie nie jest sprawdzane czy nowo utworzona struktura i-węzła zawiera wskaźnik do odpowiedniego zestawu operacji plikowych służących do obsługi danego urządzenia. Dlatego też możliwe jest stworzenie wielu plików urządzeń, które tak naprawdę nie odpowiadają żadnym fizycznym urządzeniom. Tak z resztą jest we wszystkich dystrybucjach, że kilka tysięcy 'pustych' plików specjalnych tworzy się automatycznie w czasie instalacji systemu. To czy plik odpowiada prawdziwemu urządzeniu sprawdzane jest dopiero przy próbie korzystania z tego pliku. Np. jeśli nie mamy myszy 'amigowskiej' w naszym systemie to dostaniemy odpowiedni komunikat:
[root@bonifacy /dev] cat ./amigamouse cat: ./amigamouse: Nie ma takiego urządzenia... chociaż:
[root@bonifacy /dev] ls -l ./amigamouse crw-rw---- 1 root root 10, 4 kwi 14 2001 amigamouse... podczas gdy polecenie 'cat /dev/mouse' daje dosyć zabawny efekt. (dodam, że u mnie /dev/mouse jest linkiem do /dev/ttyS0 i że potem warto wydać polecenie reset)
Może się też okazać, że nie wszędzie możemy utworzyć plik specjalny:
[root@bonifacy /dev] mknod /fat-c/null c 1 3 mknod: /fat-c/null: Operacja niedozwolonagdzie
[root@bonifacy /dev] fs -T /fat-c Filesystem Type Size Used Avail Use% Mounted on /dev/hda1 vfat 1.2G 1.0G 221M 82% /fat-cWynika to z faktu, że funkcja systemowa mknod() korzysta pośrednio z operacji mknod zaimplementowanej dla konkretnego systemu plików i czasem może się okazać, że dla pewnego systemu plików operacja ta nie jest zaimplementowana.