Bociek PLD - Pisarz
I. Informacje podstawowe
II. Instalacja
III. Podręcznik użytkownika
IV. Podręcznik administratora
Kernel i urządzenia
Urządzenia
V. Tworzenie PLD - Praktyczny poradnik
VI. O podręczniku
O tej książce
Spis treści
Inne wersje tego dokumentu
PDF
HTML (jeden plik)
TXT
Odnośniki
Tworzymy dokumentację PLD
Strona PLD
Listy dyskusyjne PLD

Urządzenia

<- ->
 

Podobnie jak w innych systemach uniksowych obowiązuje tutaj zasada "everything is a file", czyli wszystko jest plikiem. Dzięki takiemu podejściu uproszczono sposób komunikacji z urządzeniami, poprzez odwoływanie się do specjalnych plików, odpowiadających konkretnym urządzeniom. Pliki te są przechowywane w katalogu /dev, zwykły użytkownik nie musi się martwić o jego zawartość, wystarczy że będzie znał powiązania między fizycznymi urządzeniami a nazwami tych plików.

Z nazw urządzeń najczęściej korzysta się w przypadku operacji dyskowych, warto zatem znać zasadę ich określania, więcej szczegółów na ten temat podano w tym dokumencie.

Podstawowe informacje o urządzeniu

Nazwy urządzeń nadawane są tak, aby ułatwiać życie użytkownikom, dla jądra są właściwie obojętne. Jądro rozróżnia urządzenia za pomocą pary liczb: major (głównej) i minor (pobocznej). To jakie są wartości tych liczb odczytamy następująco:

ls -l /dev/hda2
	brw-rw----  1 root disk 3, 2 2005-11-11 15:08 /dev/hda2

Na powyższym przykładzie major jest równa 3, zaś minor jest równa 2. Pierwsza literka w łańcuchu opisującego uprawnienia określa rodzaj pliku, znak "b" (jak na powyższym przykładzie) oznacza urządzenie blokowe, zaś "c" urządzenie znakowe.

Jeśli potrzebujemy samodzielnie utworzyć plik urządzenia, to użyjemy do tego programu mknod np.:

# /bin/mknod  /dev/zero c 1 5

Numery major i minor oraz inne informacje odnajdziemy w dokumentacji kernela, jeśli zainstalujemy pakiet kernel-doc to powinniśmy zapoznać się z zawartością pliku /usr/src/linux/Documentation/devices.txt

Systemy plików-urządzeń

Są dwa sposoby dostarczania plików urządzeń dla systemu: dev - statyczny i udev - dynamiczny. Każdy z nich ma wsparcie w PLD, jednak domyślnie instalowany jest pakiet udev. Jeśli chcemy użyć innego mechanizmu, wystarczy że odinstalujemy udev a zainstalujemy dev w jego miejsce, dla pewności tą operację lepiej przeprowadzać przy pomocy operacji chroot-a.

Najstarszym z rozwiązań jest pakiet dev, dzięki niemu w katalogu /dev zostanie utworzona spora ilość węzłów (nawet jeśli nie mamy danego rodzaju urządzenia), wystarczająca dla większości zastosowań. Jeśli jednak mamy jakieś egzotyczne urządzenie to będziemy musieli samemu utworzyć wymagane pliki. Pliki urządzeń tworzymy za pomocą opisanego wcześniej programu mknod.

W odróżnieniu od statycznej bazy plików urządzeń w ostatnim czasie popularność zdobywają systemy automatycznego tworzenia węzłów w katalogu /dev. W chwili podłączenia urządzenia lub startu systemu automatycznie tworzone są wymagane pliki. Jest to ogromne ułatwienie dla użytkowników, gdyż nie wymaga od nich wiedzy na ten temat.

UDEV

Udev automatycznie tworzy pliki urządzeń, jednak sam potrzebuje kilku z nich, aby mógł zacząć działać, są to: /dev/console, /dev/null, /dev/zero. Pliki te są dostarczane razem z pakietem, a więc nie musimy się to martwić.

System udev jest wart uwagi dlatego, że nie tylko tworzy wymagane węzły urządzeń lecz dodatkowo ładuje wymagane moduły jądra dla danego urządzenia. Więcej informacji o udev znajdziemy w tym dokumencie

Należy pamiętać o tym, że udev jest wywoływany z rc-skryptów, i nie wystartuje przy użycia parametru jądra init lub przy próbie wykonania operacji chroota z innego systemu. Wtedy wymagane pliki nie zostaną utworzone, co może spowodować nieoczekiwane problemy z działaniem programów. W przypadku wykonania operacji chroota problem ten rozwiązujemy poprzez wcześniejsze podmontowanie katalogu /dev z systemu głównego. W pozostałych przypadkach uruchamiamy skrypt /etc/rc.d/rc.sysinit, w ostateczności tworzymy wymagane urządzenia za pomocą programu mknod lub skądś je kopiujemy. Operacja chroota została szerzej opisana w tym dokumencie. Parametr jądra init jak i wiele innych szerzej opisano w tym dokumencie.

Jaki system wybrać?

Na stacji roboczej bez zastanowienia można polecić udev, gdyż pozwoli na znaczne podniesienie komfortu pracy. W przypadku serwerów będzie to głównie zależało od preferencji administratora i wybór nie będzie miał tu większego znaczenia.

Zupełnie inaczej to wygląda w przypadku systemów zamkniętych typu chroot, zarówno plikami urządzeń jak i modułami zajmuje się system gospodarz, ponadto udev może stać się poważnym wyłomem w bezpieczeństwie klatki. W takim wypadku powinniśmy użyć statycznych plików (dev), których lista powinna zostać poważnie ograniczona do kilku niezbędnych.

 
<- ->