Portál AbcLinuxu, 2. května 2025 12:10

Sysfs - brána do jadra

12. 7. 2005 | Matej Gagyi
Články - Sysfs - brána do jadra  

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.

Úvod

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.

Charakteristika Sysfs

Začiatky Sysfs

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).

Štruktúra Sysfs

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.

Sysfs ako nástroj

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!

Jednoduché príklady

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/*
V súbore scheduler si môžete nastaviť alebo vypnúť plánovač fronty úloh pre vaše diskové zariadenia. Plánovač usporiadava jednotlivé diskové operácie tak, aby ich bolo možné vykonať čo najrýchlejšie a aby aby jednotlivé aplikácie, ktoré pristupujú na disk, dostali svoje údaje čím skôr.
noop
Táto voľba vypne plánovanie. Ak nemáte spustených niekoľko procesov, ktoré pristupujú na disk, nespozorujete spomalenie.
anticipatory
Je rýchly plánovač vhodný pre väčšinu prostredí.
deadline
Ak máte na počítači spustenú databázu, ktorá je stále vyťažená, mal by vám pomôcť mierne zvýšiť jej výkon.
cfq
Rozdeluje čas prístupu na disk rovnomerne medzi všetky procesy. Jednotlivé požiadavky sa začnú vykonávať skôr, ale dokončujú rovnakou rýchlosťou.
/sys/class/*/dev
Tento súbor, ak existuje pre dané zariadenie, obsahuje majoritné a minoritné číslo zariadenia. Je to užitočné, pokiaľ používate statický /dev a potrebujete vytvoriť zariadenie ručne.
/sys/class/*/*
Toto sú adresáre pre všetky zariadenia na počítači, aj tie virtuálne, ktoré sú vytvorené modulmi ako fuse, alebo virtuálne terminály.
/sys/bus/*
Tieto adresáre reprezentujú jednotlivé typy zberníc vo vašom počítači (PCI, IDE, USB, ...). Ich podadresáre obsahujú zariadenia pripojené na nich a tak ďalej.

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é.

Administrácia

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'.

Záverom

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.

Související články

Jak se píše procesor
DevFS vs. udev
Jaderné noviny

Další články z této rubriky

Úvod do Dockeru (1)
Paralelizace běžných činností v konzoli pomocí GNU Parallel
Unixové nástroje – 26 (triky pro práci v Bashi)
Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
Linux: systémové volání splice()

Diskuse k tomuto článku

12.7.2005 00:57 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Hmm vcelku dobré
Odpovědět | Sbalit | Link | Blokovat | Admin
Jo vcelku dobré seznámení s sysfs alespoň už vím proč byl navržen. BTW: mám první komentář :-)
MaT avatar 12.7.2005 02:16 MaT | skóre: 28
Rozbalit Rozbalit vše Pochvala
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak tak, taky se mi líbí takovéhle články, které člověku trošku rozšíří obzory... Ale to, že se dá celá cesta předhodit panu Googlovi by možná stačilo napsat jen jednou. :-)
Open source software for open minded people. :-)
12.7.2005 07:22 Smazáno | skóre: 21 | blog: tezkorict
Rozbalit Rozbalit vše Tož nebylo to zlé.
Odpovědět | Sbalit | Link | Blokovat | Admin
Jako úvod. Ale ta o tom procu se mi líbila víc. Třeba to ale taky někam donde. :)
12.7.2005 08:22 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Tož nebylo to zlé.
O /proc je hned příští článek :-)
Yin avatar 12.7.2005 13:45 Yin | skóre: 39 | blog: Yinotopia | Slovesnko, Košice
Rozbalit Rozbalit vše Re: Tož nebylo to zlé.
Ale je skoro rovnaký ako tento :(
Nikdy nie je tak zle, aby to jeden poharik nemohol ešte zhorsiť.
12.7.2005 14:30 1 | blog: 1
Rozbalit Rozbalit vše Jasně, typický nástroj
Odpovědět | Sbalit | Link | Blokovat | Admin
Typický nástroj pro šílence :-). Ne - linuxové "registry" jsou fajn, škoda že nejsou k dispozici free ucelené nástroje (typu Novell eNterprise Linux Services), které by na tyto kvalitní informační a admin zdroje (spíš ten /proc apod.) navazovaly ucelenou formou v nějakém GUI - třeba s možností navázat regulární výrazy, kde je to potřeba, využívat šablony nastavení a tak.
Problém nevidím, že tady ty nástroje nejsou TEĎ. Ale že nevím o něčem smysluplném co by alespoň vznikalo. Viz na jiné úrovni v článku zmíněný Yum vs. např. YaST.
1
12.7.2005 14:33 1 | blog: 1
Rozbalit Rozbalit vše Re: Jasně, typický nástroj
V tomhle aktuálním článku.
1
Yin avatar 13.7.2005 20:48 Yin | skóre: 39 | blog: Yinotopia | Slovesnko, Košice
Rozbalit Rozbalit vše Re: Jasně, typický nástroj
(ak som ťa správne pochopil): skripty...
Nikdy nie je tak zle, aby to jeden poharik nemohol ešte zhorsiť.
14.7.2005 11:41 1 | blog: 1
Rozbalit Rozbalit vše Re: Jasně, typický nástroj
Jasně - koherentní, drtivou většinu obvyklých věcí pokrývající sada skriptů s rozhraním, které má tak pěkné "stromečky" funkcí jako YaST. Včetně úpravy konfiguráků. Mě spíš zaujalo to, jak na roztříštěné zdroje informací o systému a konfiguračních utilit navázat něco co těm zdrojům (/sys /proc /blabla, /devfs ..) dá jednu a přívětivou tvář. Protože pořád řešit - "jo před půlrokem jsem to uměl... no musím se to naučit vlastně znovu. Navíc se změnila struktura v jádře, tohle se jmenuje jinak ..." je na nic.
1
27.7.2006 18:09 Drašar | skóre: 27 | Velký Týnec
Rozbalit Rozbalit vše Re: Sysfs - brána do jadra
Odpovědět | Sbalit | Link | Blokovat | Admin
Zdravim. Nevite nekdo, jestli existuje pro sysfs neco obdobnyho jako sysctl pro procfs? Resp. jak nejak elegantne nastavovat hodnoty v /sys po spusteni systemu? Dik.
Patička

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.