sysfs - system plików do eksportowania obiektów
jądra
System plików sysfs jest pseudosystemem
plików, który zapewnia interfejs do struktur danych
jądra (precyzyjniej: pliki i katalogi w sysfs dają
wgląd w struktury kobject, zdefiniowane wewnętrznie w
jądrze). Pliki w sysfs udostępniają informacje o
urządzeniach, modułach jądra, systemach plików i
innych składowych jądra.
System plików sysfs jest najczęściej
montowany jako /sys. Zwykle jest to dokonywane automatycznie przez
system, ale można go zamontować również
ręcznie, za pomocą polecenia takiego jak:
mount -t sysfs sysfs /sys
Wiele z plików w systemie plików sysfs jest
tylko do odczytu, lecz niektóre są zapisywalne, co
umożliwia zmianę zmiennych jądra. Aby
uniknąć dublowania, do łączenia wpisów w
systemie plików używa się wielu dowiązań
symbolicznych.
Poniższa lista opisuje niektóre z plików i
katalogów znajdujących się w hierarchii
/sys.
- /sys/block
- Podkatalog zawierający po jednym dowiązaniu symbolicznym dla
każdego urządzenia blokowego, które zostało
odkryte w systemie. Dowiązania symboliczne wskazują na
odpowiadające katalogi w katalogu /sys/devices.
- /sys/bus
- Katalog zawiera po jednym podkatalogu dla każdego typu magistrali w
jądrze. W każdym z nich, znajdują się dwa
podkatalogi:
- devices
- Podkatalog zawierający dowiązania symboliczne do
wpisów w /sys/devices, odpowiadającym
urządzeniom odkrytym na tej magistrali.
- drivers
- Podkatalog zawierający po jednym podkatalogu dla każdego
sterownika urządzenia załadowanego do tej magistrali.
- /sys/class
- Podkatalog zawiera po jednym poziomie dalszych podkatalogów, na
każdą klasę urządzeń,
którą zarejestrowano w systemie (np. terminale,
urządzenia sieciowe, urządzenia blokowe, urządzenia
graficzne, urządzenia dźwiękowe itd.).
Wewnątrz każdego z tych podkatalogów znajdują
się dowiązania symboliczne do każdego z
urządzeń danej klasy. Dowiązania prowadzą do
wpisów w katalogu /sys/devices.
- /sys/class/net
- Każdy z wpisów w tym katalogu jest dowiązaniem
symbolicznym reprezentującym rzeczywiste lub wirtualne
urządzenie sieciowe, które jest widoczne w przestrzeni nazw
sieci procesu, uzyskującego dostęp do katalogu. Każde
z dowiązań prowadzi do wpisów w katalogu
/sys/devices.
- /sys/dev
- Katalog zawiera dwa podkatalogi: block/ i char/
odnoszące się, odpowiednio, do urządzeń
blokowych oraz znakowych w systemie. Wewnątrz każdego z
podkatalogów są dowiązania symboliczne z nazwami w
postaci numer-główny:numer-poboczny,
które odpowiadają numerowi głównemu i
pobocznemu danego urządzenia. Każde z dowiązań
wskazuje na katalog sysfs urządzenia. Dowiązania
symboliczne w /sys/dev dają zatem łatwy wgląd
w interfejs sysfs, za pomocą numerów
urządzeń zwracanych przez wywołanie stat(2)
(lub podobne).
- Poniższa powłoka sesji pokazuje przykład z katalogu
/sys/dev:
-
$ stat -c "%t %T" /dev/null
1 3
$ readlink /sys/dev/char/1\:3
../../devices/virtual/mem/null
$ ls -Fd /sys/devices/virtual/mem/null
/sys/devices/virtual/mem/null/
$ ls -d1 /sys/devices/virtual/mem/null/*
/sys/devices/virtual/mem/null/dev
/sys/devices/virtual/mem/null/power/
/sys/devices/virtual/mem/null/subsystem@
/sys/devices/virtual/mem/null/uevent
- /sys/devices
- Katalog zawiera drzewo urządzeń jądra, czyli
hierarchię sktruktur device w jądrze,
reprezentowaną w postaci systemu plików.
- /sys/firmware
- Podkatalog zawiera interfejsy do przeglądania i zmiany
obiektów oraz atrybutów związanych z oprogramowaniem
układowym.
- /sys/fs
- Katalog zawiera podkatalogi niektórych systemów
plików. System plików będzie miał tu
podkatalog tylko, jeśli wyraźnie zdecyduje, że chce
go utworzyć.
- /sys/fs/cgroup
- Katalog konwencjonalnie używany jako punkt montowania systemu
plików tmpfs(5), zawierającego punkty montowań
systemów plików cgroups(7).
- /sys/fs/smackfs
- Katalog zawiera pliki konfiguracyjne SMACK LSM. Więcej informacji w
pliku Documentation/admin-guide/LSM/Smack.rst, w
źródłach jądra.
- /sys/hypervisor
- [do udokumentowania]
- /sys/kernel
- Podkatalog zawiera różne pliki i podkatalogi
dostarczające informacji o działającym
jądrze.
- /sys/kernel/cgroup/
- Informacje o plikach w tym katalogu zawarto w podręczniku
cgroups(7).
- /sys/kernel/debug/tracing
- Punkt montowania dla systemu plików tracefs,
używanego przez mechanizm jądra ftrace (więcej
informacji o ftrace znajduje się w pliku
Documentation/trace/ftrace.txt w źródłach
jądra).
- /sys/kernel/mm
- Podkatalog zawiera różne pliki i podkatalogi
udostępniające informacje o podsystemie zarządzania
pamięcią jądra.
- /sys/kernel/mm/hugepages
- Podkatalog zawiera po jednym podkatalogu, dla każdego rozmiaru
dużych stron, które obsługuje system. Nazwa danego
podkatalogu wskazuje rozmiar dużej strony (np.
hugepages-2048kB). Wewnątrz każdego z tych
podkatalogów znajduje się zbiór plików,
które mogą służyć do
przeglądania i (czasem) zmiany ustawień związanych z
danym rozmiarem dużych stron. Więcej informacji w pliku
Documentation/admin-guide/mm/hugetlbpage.rst w
źródłach jądra.
- /sys/module
- Podkatalog zawiera po jednym podkatalogu, dla każdego modułu
załadowego do jądra. Nazwa danego podkatalogu jest
nazwą modułu. W każdym z tych podkatalogów,
mogą istnieć następujące pliki:
- W każdym z tych podkatalogów, mogą istnieć
następujące podkatalogi:
- drivers
- [do udokumentowania]
- holders
- [do udokumentowania]
- notes
- [do udokumentowania]
- parameters
- Katalog zawiera po jednym pliku dla każdego parametru
modułu, przy czym każdy plik zawiera wartość
danego parametru. Niektóre z plików są
dostępne do zapisu, pozwalając na modyfikację
wartości.
- sections
- Podkatalog zawiera informacje o sekcjach modułów.
Służą głównie do debugowania.
- [Do udokumentowania]
- /sys/power
- [do udokumentowania]
Ta strona podręcznika jest niekompletna, prawdopodobnie
niedokładna i należy do tych, które powinny być
bardzo często poprawiane.
proc(5), udev(7)
P. Mochel. (2005). The sysfs filesystem. Sprawozdanie z
2005 Ottawa Linux Symposium.
Plik Documentation/filesystems/sysfs.txt w
źródłach jądra i różne inne pliki
w Documentation/ABI i Documentation/*/sysfs.txt
Tłumaczenie niniejszej strony podręcznika:
Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną
dokumentacją. Bliższe informacje o warunkach licencji
można uzyskać zapoznając się z
GNU General
Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika
prosimy zgłaszać na adres listy dyskusyjnej
manpages-pl-list@lists.sourceforge.net.