Sysfs został dodany do jądra systemu Linux od wersji 2.6. Jest to wirtualny, rezydujący w pamięci system plików implementowany przez jądro, który zawiera szczegółowe i dobrze zorganizowane informacje na temat dostępnych w systemie urządzeń, ich konfiguracji oraz stanu. Informacje te są dostępne zarówno z jądra, jak i z przestrzeni użytkownika. Przeglądając zawartość katalogu /sys, gdzie zazwyczaj montowany jest sysfs, znajdziesz wszelkie dostępne informacje, od numeru przerwania (IRQ) używanego przez urządzenie, po liczbę bloków zakolejkowanych do zapisu na kontrolerze dysku. Jedna z zasad przewodnich sysfs mówi, że każdy plik w katalogu /sys powinien reprezentować tylko jeden atrybut odpowiadającego mu urządzenia. Taka konwencja wymusza zachowanie pewnej struktury, która w przeciwnym razie byłaby chaotycznym zestawem danych. W tabeli wymienione zostały katalogi znajdujące się w głównym katalogu /sys, z których każdy jest podsystemem zarejestrowanym za pomocą sysfs. Katalogi te mogą się nieznacznie różnić w zależności od dystrybucji.

Informacje na temat konfiguracji urządzeń można było dawniej znaleźć w systemie plików /proc, jeśli były w ogóle dostępne. System plików /proc został odziedziczony po uniksowym System V i z czasem zaczął się rozrastać w nieco przypadkowy sposób. Zbierał wszelkiego rodzaju niepowiązane informacje, w tym wiele elementów niezwiązanych z procesami. Wprawdzie /proc wciąż obsługuje sporą ilość dodatkowych danych w celu zachowania zgodności wstecznej, jednak /sys jest bardziej przewidywalnym i zorganizowanym sposobem odzwierciedlania wewnętrznych struktur danych jądra. Przewidujemy, że z czasem wszystkie informacje dotyczące urządzeń zostaną przeniesione do /sys.

udevadm: testowanie urządzeń
Polecenie udevadm podaje informacje o urządzeniu, wyzwala zdarzenia, steruje demonem udevd i monitoruje zdarzenia udev i jądra. Dla administratorów jego głównym zastosowaniem jest budowanie i testowanie reguł, które zostaną omówione w następnym punkcie. Polecenie udevadm jako pierwszego argumentu oczekuje jednego z sześciu poleceń: info, trigger, settle, control, monitor lub test. Szczególnie interesujące dla administratora są polecenia: info, które wypisuje informacje na temat określonego urządzenia, oraz control, które uruchamia i zatrzymuje udevd lub wymusza na nim ponowne załadowanie plików z regułami. Polecenie monitor wyświetla zdarzenia w miarę ich występowania. Poniższe polecenie wyświetla wszystkie atrybuty udev dla urządzenia sdb. Wyjście polecenie zostało tutaj przycięte, ale w rzeczywistości zawiera ono listę wszystkich urządzeń nadrzędnych — takich jak magistrala USB — będących przodkami urządzenia sdb w drzewie urządzeń.

linux$ udevadm info -a -n sdb

looking at device ‚/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-
1:1.0/host6/target6:0:0/6:0:0:0/block/sdb’:
KERNEL==”sdb”
SUBSYSTEM==”block”
DRIVER==””
ATTR{range}==”16″
ATTR{ext_range}==”256″
ATTR{removable}==”1″
ATTR{ro}==”0″
ATTR{size}==”1974271″
ATTR{capability}==”53″
ATTR{stat}==” 71 986 1561 860 1 0 1 12 0 592 872″

Wszystkie ścieżki dostępu na wyjściu polecenia udevadm (takie jak /devices/pci0000:00/…) są podane względem /sys, nawet jeśli wydają się ścieżkami bezwzględnymi. Wyjście jest sformatowane w taki sposób, aby można je było przekazać do udev przy tworzeniu reguł. Jeśli np. klauzula ATTR{size}==”1974271″ byłaby unikatowa dla tego urządzenia, mógłbyś skopiować ten fragment kodu do reguły jako kryterium identyfikujące. Dodatkowe opcje i opis składni znajdziesz na stronie podręcznika systemowego dla polecenia udevadm.

ZOSTAW ODPOWIEDŹ

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.