Sysfs je v informatice virtuální systém souborů, který je zahrnut v jádře Linuxu od verze 2.6. Sysfs exportuje informace o zařízeních a ovladačích z jádra systému do uživatelského prostoru pomocí adresářového stromu umístěného v adresáři /sys a je používán i pro konfiguraci systému. Sysfs je podobný mechanismu sysctl, který je obsažen v BSD systémech, ale je implementován jako systém souborů namísto odděleného mechanismu.

Historie editovat

Během vývojové řady 2.5 byl v jádře Linuxu představen model ovladačů, který opravoval několik následujících nedostatků verze 2.4:

  • neexistence jednotné metody reprezentace vztahů typu ovladač-zařízení
  • neexistence žádného obecně použitelného mechanismu hotplug, tedy připojení či odpojení zařízení za běhu systému
  • procesní souborový systém procfs byl přeplněn spoustou informací nesouvisejících s procesy

Sysfs je navržen pro export informací, které jsou zahrnuty ve stromu zařízení, které by nadělaly nepořádek v procfs. Kód napsal Patrick Mochel. Maneesh Sonip později napsal záplatu podpůrného zásobníku sysfs, která redukovala využití paměti na rozsáhlejších systémech.

Systém sysfs je vnitřní systém souborů umístěný v paměti, který byl původně založen na ramfs. Ramfs byl napsán zhruba v době kdy byl Linux verze 2.4.0 stabilizován. To, o jak elegantně vyřešený úkol šlo, se ukázalo tím, jak jednoduché bylo napsat jednoduchý systém souborů za použití tehdy nové VFS vrstvy. Byl velmi prostý a díky použití VFS poskytoval dobrý základ, ze kterého se odvozovalo mnoho dalších vnitřních systémů souborů umístěných v paměti.

sysfs byl původně nazýván ddfs (anglicky Device Driver Filesystem) a byl vytvořen pro odstranění nedostatků nového modelu ovladačů, který byl v té době napsán. Předtím bylo ladění chyb prováděno za použití procfs, který se používal k vygenerování stromu zařízení. S důraznými pobídkami Linuse Torvaldse byl převeden na nový systém souborů založený na ramfs, nový model ovladačů byl začleněn do linuxového jádra ve verzi kolem 2.5.1 a změnil název na driverfs, aby se název stal o něco více popisný.

Během dalšího roku vývoje verze 2.5 se infrastrukturální kapacita nového modelu ovladačů stala společně s driverfs, využitelná i pro další subsystémy. Byly vyvinuty kobjects za účelem poskytování centrální mechanismu pro správu objektů a driverfs byl opětovně přejmenován na sysfs, aby reprezentoval jeho nezávislost na systému.

Technický přehled editovat

Pro každý objekt přidaný do stromu modelů ovladačů (ovladače, zařízení obsahující zařízení třídy) jsou v sysfs vytvářeny adresáře. Vztah rodič-potomek je zobrazen pomocí podadresářů v /sys/devices/ (odráží fyzické rozvržení). Podadresář /sys/bus/ obsahuje symbolické odkazy, která zobrazují, jak jednotlivá zařízení náleží do jednotlivých sběrnic. Adresář /sys/class/ zobrazuje zařízení seskupené podle tříd, jako je například síť, zatímco /sys/block/ obsahuje bloková zařízení.

For device drivers and devices, attributes may be created. These are simple files; the rule is that they should only contain a single value and/or allow a single value to be set (unlike some files in procfs, which need to be heavily parsed). These files show up in the subdirectory of the device driver respective to the device. Using attribute groups, a subdirectory filled with attributes may also be created.

Vybrané sběrnice editovat

PCI editovat

Exportuje informace o PCI zařízeních.

USB editovat

Obsahuje jak USB zařízení, tak i USB hostitele.

S/390 sběrnice editovat

Protože architektura S/390 obsahuje zařízení, která nejsou nikde jinde obsažena, byly vytvořeny speciální sběrnice:

  • css: Obsahuje podkanály (v současné době jediný ovladač poskytovaný pro I/O podkanály).
  • ccw: Obsahuje kanál připojených zařízení (ovládaný pomocí CCW).
  • ccwgroup: Uměle vytvořené zařízení vytvořené uživatelem a sestávající z ccw zařízení, nahrazuje některé z funkcí chandev verze 2.4
  • iucv: Uměle vytvořená zařízení, jako například netiucv, která využívají IUCV prostředí VM.

Sysfs a uživatelský prostor editovat

Sysfs je používán několika nástroji, které spolu s jádrem Linuxu zpracovávají informace o hardware a jejich ovladačích, jako například udev nebo HAL. Skripty byly napsány tak, aby mohly přistupovat k informacím, které byly předtím získány za pomoci procfs. Některé další skripty konfigurují ovladače zařízení a zařízení jako takové prostřednictvím jejich vlastností.

Související články editovat

Externí odkazy editovat