Portál AbcLinuxu, 3. května 2025 07:12
Zřejmě se budeme stále častěji setkávat s tím, že se budou ovladače pro Linux realizovat jako běžné uživatelské programy, namísto modulů do jádra. Důvodů k takovému vývoji je celá řada a s tím, jak přibývají filesystémy pro FUSE, je toto směřování čím dál zřetelnější.
V červenci jsem psal o tom, jak Linux drobnými krůčky směřuje k mikrojádru. Ty krůčky se v poslední době čím dál zvětšují a možná to skutečně za pár let dopadne tak, že tu budeme mít nefalšovanou mikrojádrovou architekturu.
Technologii FUSE zná snad každý. Umožňuje implementovat souborové systémy jako běžné programy, což má hned několik výhod. Implementaci lze snadno udržovat mimo jádro, při změně jádra se nemusí překompilovávat, chyby nemají fatální následky pro celý systém a implementace nemusí mít licenci GPL (libfuse
je pod LGPL). Výhod je ještě víc, toto jsou jen ty hlavní. Prakticky jedinou nevýhodou je mírné snížení výkonu.
Hlavním akcelerátorem změn se zřejmě stanou právě licenční aspekty. Například nedávno vzniklý, zajímavě navržený, filesystém ZFS, má svoji původní implementaci šířenou pod licencí CDDL. Nelze ji tedy začlenit do jádra. Jsou proto dvě možnosti - buď napsat vše znovu (což je v případě poměrně komplikovaného filesystému docela náročná věc), anebo využít FUSE. Druhá možnost je samozřejmě mnohem jednodušší a proto již intenzivně probíhají práce na zprovoznění.
V poslední době sílí tlak vývojářů jádra na licenční čistotu, jednak odepřením přístupu "ne úplně čistým" modulům (tj. těm, které mají nastavenu proprietární licenci), a současně i dalšími blokacemi, jak jsme svědky v případě ndiswrapperu.
Jak už napsal Josef Kufner v diskusi u zprávičky o vývoji ZFS, jsme skutečně na cestě k mikrojádru. Již nyní se hodně experimentuje s řešením síťování v uživatelském prostoru. Nyní v podstatě zbývá už jen vytvořit abstraktní model komunikace s hardwarem (do určité míry to jde už nyní), aby šly podobným způsobem snadno tvořit ovladače zařízení.
Co by to přineslo? V první řadě by se omezilo "zacpávání kernelu binárním svinstvem", tedy licenční i technické problémy související s proprietárními moduly. Další výhody jsou takové, jak jsem již popsal v souvislosti s FUSE. Především by to ale mohlo přinést mnohem lepší podporu zařízení, jejichž výrobci by se nemuseli bát, že jim někdo "ukradne know-how".
Druhým krokem by mohl být postupný přenos řady existujících ovladačů do uživatelského prostoru - tak jako tak již probíhá přechod na implementaci prostřednictvím procesů jádra. Přímo v jádře by toho zůstalo minimum a mohlo by tak být skutečně "rock-stable". A mikrojaderná architektura by se stala realitou.
Jak to bude doopravdy? Těžko říct. Vše záleží na tom, jak se budou vyvíjet události okolo ndiswrapperu a dalších podobných "udělátek", pomocí kterých se stylem "A je to!" (Pat a Mat) zprovozňují v Linuxu mnohá zařízení. Bude-li to pokračovat dále (a ujme-li se FUSE tak dobře, jak to zatím vypadá např. u ntfs-3g), dost možná k tomu mikrojádru opravdu dojdeme.
Tiskni
Sdílej:
Je otázka, co je lepší. Jestli binární drivery od výrobce (které ovšem - narozdíl od reality na Windows - při chybě nesestřelí celý systém), nebo žádné drivery či nechutné bastly.Možná je lepší nemít žádné drivery a uživatelům tak na rovinu říci, že je to hardware, který není pořádně podporovaný. Není nic horšího, než když si uživatel koupí nějaký HW, protože se kdesi dočetl, že se dá nějakým pochybným způsobem (binární modul od výrobce, ndiswrapper a spol.) pod Linuxem rozchodit, a pak zjistí, že funguje jen tak napůl, nebo že sice funguje, ale jen s 32-bitovým jádrem, zatímco on potřebuje 64-bitové, a tak dále. Takových problémů je už teď přespříliš a zavedením userspacových ovladačů by se nejspíš ještě řádově zhoršily. Microsofti stále více propagují certifikované drivery (a mají k tomu dobré důvody -- mnohé drivery, které stvoří výrobci hardwaru, jsou opravdu strašlivé bastly), Linux něco takového má už od svého vzniku: driver, který se dostal do jádra
if (strcmp(mod->name, "fuse") == 0) add_taint_module(mod, TAINT_PROPRIETARY_MODULE);Pak se mu nedostane
EXPORT_SYMBOL_GPL
a dopadne to stejně jako s ndiswrapperem. A jestli ne, bude to nefér.
K tomuto Linux NIKDY nedospeje...Never say never
FUSE je skvělá vychytávka, to bezpochyby.
Možnost přesunutí i některých ovladačů hardware do userspace může vypadat na první pohled taky zajímavě, ale ve skutečnosti to s nimi nebude tak růžové. Domnívat se, že chyba v userspace ovladači nemůže sestřelit celý systém, je omyl. Ovladač musí mít možnost dělat si s hardwarem, který má řídit, co chce. Blbě řízený hardware se může pěkně splašit. U FUSE tento problém nevzniká. FUSE proces lze také kdykoliv sestřelit, což u ovladače hardware není vůbec zaručeno.
A rozhodně nechci zažít, že kvůli možnosti dělat ovladače v userspace začnou výrobci HW ztrácet motivaci pro zveřejňování HW specifikací a tvorbu svobodných ovladačů. Pak se nám systémy začnou plnit plnit dalšími proprietárními, nekontrolovatelnými, neportabilními bloby. To, že budou v userspace místo v kernelu, je už úplně jedno.
pv < /mnt/win/pagefile.sys > /dev/nulla jelo to kolem 24-26 MB/s.
pv
? Se bojím že test filesystému čtením jednoho souboru skoro nic neřekne, ovladač FS jej pouze za minimální režie CPU namapuje do page cache, a pak se o vše stará VFS, nikoliv FS. Kde bude rozdíl je parsování adresářových položek- hodně volání, málo I/O, tam se režie userspace kódu projeví spíš.
real 1m58.596s user 0m0.275s sys 0m6.035sext3 -> VFAT
real 3m8.140s user 0m0.270s sys 0m31.652sNTFS (FUSE) -> VFAT
real 3m54.498s user 0m0.219s sys 0m29.187sNepovažuji to samozřejmě za žádný reprezentativní test, ale je snad jasné, že takový problém s tím nebude. Test spíš prokázal ukrutnou pomalost zápisu na VFAT
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.