Portál AbcLinuxu, 2. května 2025 12:10
Sysfs je virtuálny súborový systém podobný procfs. Nájdete ho v adresári /sys. Pomocou neho môžete kontrolovať hárdvér na svojom počítači. Dnes si porozprávame o jeho charakteristikách a uvedieme niekoľko príkladov použitia.
Ak používate jadro rady 2.6, mohli ste si vo svojom koreňovom adresári
všimnúť adresár /sys
. Je to prípojný bod pre nový virtuálny
súborový systém Linuxu - Sysfs.
Sysfs, ako každý virtuálny súborový systém, sa nachádza len v pamäti a na vašom pevnom disku nezaberá žiadne miesto. Jeho obsah presne reprezentuje vnútorný model zariadení v jádre Linuxu.
Skoro všetky informácie o vašom hardvéri a ovládačoch sú v jeho
štruktúre logicky usporiadané a niektoré i nastaviteľné, podobne ako je
tomu pri Procfs
.
Sysfs bol vyvinutý špeciálne pre Linux a na iných unixových systémoch sa s ním asi nikdy nestretnete. Prvýkrát bol zaradený do jadra experimentálnej rady 2.5 a predpokladá sa, že v jadre zostane veľmi dlho, nakoľko rieši mnoho problémov.
Hlavnou príčinou jeho vzniku bola potreba exportovať štruktúrované informácie z jadra do užívateľského prostredia. V článku DevFS vs. udev píšem o najvýznamnejšom využití Sysfs (využíva ho utilita udev).
Ak sa pozriete do vnútra adresára /sys
, zistíte, že jeho
štruktúra je veľmi hlboká a stále nachádzate ďalšie podadresáre. Často na
konci celej štruktúry narazíte na symbolické linky do iných vetiev tohto
stromu. Môžeme teda povedať, že nieje užívateľsky príjemná, ale rýchlo
si na ňu zvyknete.
Sysfs nieje určené pre priame prezeranie užívateľom. Pomôže mu však, ak si vie napísať aspoň malý skript, ktorý za neho informácie zo štruktúry Sysfs vytiahne. To však nieje pre užívateľa veľmi atraktívne až do chvíle, kým nezačne riešiť nejaký hardvérový problém.
Sysfs presne zodpovedá rozloženiu premenných v jadre. Každý adresár predstavuje samostatný subsystém alebo modul. Súbory obsahujú skoro vždy len jednu informáciu a ich názov túto informáciu presne vystihuje.
Konkrétnu informáciu môžete z adresára /sys
dostať
jednoduchým výpisom súboru.
$ cat /sys/block/fd0/removable
1
$ cat /sys/block/hda/removable
0
Dozvedeli sme sa, že disketová jednotka fd0
používa
vymeniteľné média, zatiaľčo disk hda je pevne zabudovaný.
Nastaviť nejaký parameter jadra za chodu je rovnako jednoduché. Musíte však mať patričné práva na zápis, takže musíte byť prihlásený ako root.
# cat /sys/block/hda/queue/scheduler
noop [anticipatory] deadline cfq
# echo "cfq" > /sys/block/hda/queue/scheduler
# cat /sys/block/hda/queue/scheduler
noop anticipatory deadline [cfq]
Nastavili sme plánovač fronty príkazov pre pevný disk hda. Plánovač CFQ je vhodný hlavne pre desktop, takže sme trochu zvýšili pružnosť, s akou sa čítanie a zápis na disk budú prevádzať. Niekedy je to o poznanie lepšie.
Nastaviteľné parametre jadra spoznáte podľa toho, že daný súbor má priradené práva na zápis. POZOR! Nieje dobré zisťovať, na čo slúži daný parameter tým, že do neho začnete zapisovať rôzne hodnoty.
$ find /sys -perm +222 ! -type d ! -type l | sort
Ak sa o jednotlivých parametroch jadra chcete niečo dozvedieť, skúste si názov súboru (aj s cestou) vygooglit, alebo sa pohrabte v dokumentácii k zdrojovým kódom jadra. Pokiaľ si nieste istý, čo robíte, nič nenastavujte!
Abyste sa mali od čoho odraziť, uvediem niekoľko ukážok zaujímavých súborov v Sysfs a dodám aj popis.
/sys/block/*/queue/scheduler
/sys/block/*/queue/io_sched/*
noop
anticipatory
deadline
cfq
/sys/class/*/dev
/dev
a potrebujete vytvoriť zariadenie ručne./sys/class/*/*
/sys/bus/*
Toto sú naozaj len ilustračné ukážky zo štruktúry Sysfs. Nič užitočné som neuviedol, ale zatiaľ som pomocou Sysfs riešil len problémy typu: "Rozpoznalo mi tú zvukovku? Netreba len nastaviť hlasitosť?" A Sysfs ma ušetril hľadania spôsobu, ako to zistiť.
Druhýkrát som sa so Sysfs stretol, keď som potreboval nechať zaspať
počítač a nevedel som, ako to rýchlo urobiť. Podarilo sa mi to príkazom
echo "standby" > /sys/power/state
, ale lepšie je stiahnuť
si programy, ktoré sú na takéto úkony určené.
Sysfs nieje určený práve na administráciu systému, ale skôr ako zdroj informácií. Väčšie administračné schopnosti ponúka Procfs. Sysfs ponúka len tie administračné funkcie, ktoré sú silne späté s hardvérom a ovládačmi.
Na internete nájdete mnoho príkladov užitočného použitia Sysfs. Skúste
si vyhliadnúť nejaký súbor v štruktúre /sys
a vložte jeho
celú cestu do Googla.
Mne sa takýmto spôsobom podarilo nájsť niekoľko užitočných návodov. Lenže ako som povedal, tento článok nepíšem ako 'návod', ale 'úvod'.
Jedným z veľkých úspechov linuxových programátorov je nepochybne aj Sysfs. Nieje to síce vlastnosť, pre ktorú by masy obyčajných používateľov prechádzali pod Linux, ale tým, čo tak už učinili, prináša nové možnosti.
Často sa môžete stretnúť s tvrdením, že Sysfs má úplne nahradiť Procfs - a to nieje pravda. Vývojári Linuxu a rôznych nástrojov potrebovali štruktúrované informácie o hardvéri, ktoré by boli ľahko spracovateľné programami, a to im Sysfs ponúka.
Dúfam, že v článku ste si našli odpovede na niektoré otázky, alebo
som vám aspoň ukázal spôsob, ako sa k nim dostanete. V každom prípade,
adresár /sys
už má vo vašom systéme jasné miesto.
sysfs
neco obdobnyho jako sysctl
pro procfs
? Resp. jak nejak elegantne nastavovat hodnoty v /sys
po spusteni systemu? Dik.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.