Hledat
Přihlásit se
  • Věda a technika
  • Herní doupě
  • Tipy pro PC
  • IT Byznys
  • Mobily
  • Počítače
  • Počítače
  • Témata
  • Poradna
  • Diskuzní fórum
  • Video
  • Bazar
  • Blogy
  • MĚŘENÍ RYCHLOSTI
  • RSS
  • Facebook Twitter Google+ YouTube
  • Hardware
  • Software
  • Počítače
  • Notebooky
  • Služby na webu
  • Apple
  • Google
  • Microsoft
  • Seznam
  • Tiskové zprávy
Další témata
  • Týden Živě
  • Zprávy Živě
  • Testy
  • Pitvy
Všechna videa
X

Doporučit článek

Vaše jméno:

Váš e-mail:

E-mail adresáta:

Komentář:

kontrolní kód

Odeslat

Blogy Živě » Linux zblízka

Linux zblízka

 

Ovladače v Linuxu

21. 3. 2010, uzivatel2

V tomto příspěvku uvedu základy nasazení jaderných modulů v Linuxu. Naznačím, proč se někdy vyplatí oželet zařízení než používat nesvobodné ovladače. Ale na úplný začátek zdůrazním význam dostupnosti zdrojových kódů.

API vs. ABI

Rozhraní API (application programming interface) je smluvená funkcionalita a konvence upravující označování této funkcionality v zdrojovém kódu. Rozhraní ABI (application binary interface) je úmluva, jakým způsobem se konkrétně realizuje API ne strojové/assemblerové úrovni. Binární spustitelné soubory vyžadují zakonzervované ABI ze strany podpůrného softwaru. Pro kompilaci potřebujume pouze dostupnust použitých API, možnost kompilace nových verzí nepodmiňuje zakonzervování ABI.

Příklad : Smyšlená aplikace FictionStat na zpracování změřených dat poskytuje API, kdy ve struktuře/třídě mereni uchovává zpracovane hodnoty a kdy v mereni.prumer uchovává průměr zmeřených hodnot. Podle API jsou jednotlivá mereni uspořádána podle času pořízení do pole vsechna_mereni. Váš program čte průměr druhého měření z pole všech měření (tj. vsechna_mereni[2].prumer). Kompilátor při překladu zjistí, že velikost typu mereni je čtyřicet bytů a že hodnota prumer je umístěna čtyři byty od začátku struktury mereni. Kompilátor adresu vsechna_mereni[2].prumer tedy natvrdo přeloží do binárního kódu jako “hodnota čtyřicetčtyři bytů od začátku pole vsechna_mereni“. S novou verzí FictionStat přibyla nová funkcionalita a velikost typu mereni se zvětší např. na sedmdesát bytů. Vaše zkomilovaná aplikace je pak nepoužitelná, protože čtyřicetčtyři bytů od začátku pole vsechna_mereni nyní leží např. nově do API přidaný čtvrtý statistický moment prvního měření. V případě dostupných zdrojových kódů vaší aplikace stačí získat ještě zdrojové kódy nové verze FictionStat a provést kompilaci. Při kompilaci se inkludují definice typů ze zdrojových kódů FictionStat a kompilátor zná správnou velikost typů. Postup bezproblémově funguje, protože se použitá část API nezměnila. (Zkompilovaná nová verze populárních aplikací však pravděpodobně bude již dostupná prostřednictvím repozitáře distribuce a balíčkovací systém pohlídá kompatibilitu veškerého instalovaného softwaru, takže uživatel nemusí složitě zjišťovat softwarové závislosti a kompilovat.)

Dalšími oblastmi ABI úprav jsou způsob volání funkcí a předávání hodnot, name mangling, endian, kódování řetězců znaků, číselné reprezentace pojmenovaných parametrů…

Příklady API a ABI

Známým API operačních systémů je POSIX (viz článek Historie UNIXu). Toto API více méně podporují všechny unix-like systémy. Proto zdrojový kód pracující s POSIX půjde přeložit stejně dobře na Linuxu, FreeBSD, Solarisu… Tyto platformy však nezaručují vzájemnou binární kompatibilitu (mají odlišná ABI) a proto zkompilované spustitelné soubory již nejsou přenositelné mezi zmíněnými systémy.

Linux standard base (LSB) definuje některá ABI pro linuxové distribuce.

Jádro poskytuje několik ustálených API např. pro psaní ovladačů a jiných jaderných modulů (viz níže). Vývojáři však neusilují o ustálené ABI jádra (tzv. kernel ABI, kABI).

Při známém ABI jiného operačního systému lze bez problémů problém na Linuxu toto jiné ABI poskytovat a spouštět aplikace bez emulace jako na jejich nativní platformě. Konkrétně Linux v kombinaci s Wine poskytuje binární rozhraní zvolené verze operačního systému MS Windows a umožňuje tím nativní běh aplikací pro Windows pod Linuxem. Dokonalému fungování Wine brání jen utajování podrobné dokumentace ABI Windows ze strany výrobce. (viz článek Kompatibilita Linuxu a Windows)

Technické řešení ovladačů

Linuxový desktop pracuje výhradně ve dvou dvou režimech procesoru. V privilegovaném režimu se vykonává veškerý kód jádra a ostatní softwarové vybavení (userland) disponuje pouze neprivilegovaným režimem procesoru. (Při některých velmi výjimečných způsobech nasazení jádra, jako jsou některá virtualizační řešení, toto neplatí.) Například běžné procesory x86 zvládají čtyři režimy (protection rings) značené RING0, RING1, RING2, RING3; jádro běží v RING0 a vše ostatní v RING3. Popsaná architektura operačního systému představuje vůbec nejprimitivnější verzi operačního systému s tzv. monolitickým jádrem.

V klasickém monolitickém jádře se přidání nových funkcí do jádra provádí pouze překompilováním zdrojového kódu jádra se začleněným novým kódem, dále musíme restartovat počítač a nechat zavést nové jádro. Toto řešení pro Linux absolutně nedostačuje. Proto jádro obsahuje speciální rozhraní pro zprovoznění nového kódu v jádře za běhu; pro první nepřesnou představu si lze situaci představit analogicky jako spouštění běžných procesů v RING0.

Upozornění : Pro plnění úkolů ovladače (ovládání hardwaru) nestačí možnosti režimu RING3 a proto ovladače vyžadují “jaderný” RING0. Režimy procesoru jsou stavem hardwaru nijak nesouvisejícím s root uživatelem a uživatelskými právy!

Jaderný kód lze stejně dobře zakompilovat natvrdo do jádra jako zkompilovat do samostatného jaderného modulu, který se nahrává podle potřeby do jádra. (Jediný principiální rozdíl je, že jaderný modul obsahuje kód pro své uvolnění (např. kvůli memory leaku).) V případě dynamického zavedení jaderného modulu musí dojít k “dynamickému linkování” s kódem jádra, za tímto účelem se exportují z jádra všechny důležité symboly. V praxi by mohly být jaderné moduly zneužity k obcházení licence jádra, protože nahráním modulu se de facto součástí jádra může stát kód “porušující” licenci jádra. Makra exportující symboly z jádra proto definují různé licence symbolů (např. makra EXPORT_SYMBOL, EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_GPL_FUTURE), jaderný “dynamický linker” zjistí licenci jaderného modulu a v případě pokusu o porušení copyleftu symbol jednoduše nezpřístupní. Toto opatření svazuje ruce ovladačům s nevhodnou licencí. Další komplikace (závislosti modulů, aliasy…) si řeší distribuce automaticky.

Nedostatečná podpora

Výrobci hardwaru často “hrají na sebe” a cíleně brání komunitě v poskytování kvalitní podpory. Metody “znesvobodnění” ovladače jsou například :

  1. chybí potřebné komentáře - zdrojový kód např. nahrává “záhadné” nastavení firmwaru
  2. “znehodnocení” zdrojového kódu obfuskátorem - tato metoda se příliš nepoužívá
  3. distribuce ovladače v binární (zkompilované) formě - klasické nesvobodné ovladače, často nekvalitní kód, může způsobovat problémy se stabilitou systému, funkčnost na všech distribucích nelze zaručit, licenční komplikace… Nesvobodné ovladače představují velmi nedostatečnou a nekvalitní podporu pro Linux.

Existují určitá pravidla identifikace připojeného hardwaru, proto jádro může obvykle přibližně určit typ zařízení. Místo chybějící podpory pak distribuce může zkusit použít ovladač pro podobné zařízení. U nestandardního zařízení (negenerické ovladače) s nezajištěnou podporu pro Linux musíme případnou funkčnost zařízení pod Linuxem pokládat za náhodu. V novější verzi téže distribuce toto zařízení může být nefunkční. Často toto zařízení bez podpory nejde nijak zprovoznit anebo naprogramovat ovladače (chybí dokumentace).

Štítky: Principy Linuxu


Publikováno v rubrice Nezařazené. Reakce v diskuzi lze sledovat prostřednictvím RSS 2.0. Můžete přidat komentář, nebo se na článek odkázat ze svého webu.

« “Utajované” technologie Googlu
Nabídka notebooků s předinstalovaným Linuxem »
 

Komentáře v diskuzi

1.  Linus Balmer(81.201.48.xxx)   22. 3. 2010, 15:16

Čtyřicet bytů je už docela slušná bytovka.

2.  Bill Torvalds(89.173.130.xxx)   22. 3. 2010, 19:24

Konečne rozumné slovo :-)

3.  killer(82.209.11.xxx)   22. 3. 2010, 19:59

proč by komerční firma podporovala systém ze kterého nemá profit? proto je open source na jiné lodi než komerční soft. to je dobře. do komerční sféry ideologie nepatří, navíc vývojáři linuxu jsou schopni vytvořit jakýkoli soft sami. takže ovladače taky. ti nejlepší dokáží napsat i oprační systém z čisté vody. ne tady není žádný problém. stav v oblasti it jak se vyvinul je výhodný. každý si může zvolit dle svých schopností a peněženky. navíc ten kdo zvolí linux o problémech s kompatibilitou ví, takže nekompatibilní hardware nekoupí nebo oželí.

4.  uzivatel2(ověřeno)   23. 3. 2010, 07:26

re killer : Linux je de facto vysoce komerční produkt. (přečtěte si jeden z předchozích článků http://linuxzblizka.blog.zive.cz/2010/03/komerce-postavena-na-open-source/#comment-1199) Rozdíl je, že Microsoft především vydělává na prodeji licencí na unifikovaný trh pro BFU a linuxové společnosti vydělávají na navazujících službách (podpora, zakázkový vývoj, konzultace, integrace řešení…) pro high-endové trhy (bankovní systémy, velké servery, superpočítače, průmyslová zařízení…). Dělení svobodný/proprietární software nesouvisí s dělením nekomerční/komerční software.

>>takže ovladače taky

Nelze vytvořit ovladače bez zpřístupněné dokumentace zařízení…

Mimochodem Linux má pravděpodobně mezi operačními systémy vůbec nejširší podporu hardwaru. Problém je “jen” s politikou některých výrobců komponent pro osobní počítače.

5.  killer(82.209.11.xxx)   25. 3. 2010, 03:26

pro uživate2: běžný linux (ubuntu/suse) není komerční produkt protože je zadarmo. jasně že se dá koupit ale né nezbytně. programátor linuxu je natolik sebevědomý že vytvoří ovladač na cokoli bez dokumentace. sám píšeš že uživatel windows je bfu, takže je logické že uživatel linuxu je génius. …a psal jsem o amatérském použití operačních systémů v domácnosti. supercomputing je všem běžným uživatelům natolik vzdálen že se o něm můžeme bavit jen v teoretické rovině. devadesát procent všech českých uživatelů žádný superkomp nikdy neuvidí.

6.  Woknař(89.102.128.xxx)   26. 3. 2010, 14:24

“Výrobci hardwaru často “hrají na sebe” a cíleně brání komunitě v poskytování kvalitní podpory.” Já myslím, že výrobcům je “komunita” mastných vlasů šumafuk. Když si někdo sestaví na hraní vlastní bastl a předpokládá, že solidní profesionální firmy, zabývající se výrobou hardwaru na skutečnou práci a ne proto, aby na něm běžel amatérský “soft” vyprodukovaný jedincem v jeho volném čase kvůli neschopnosti si najít ženu a provozovat s ní běžné denní činnosti, se budou tetelit blahem aby mu poskytly informace, pak je naivní a hloupý. Za kvalitu a informace nutno platit a tak je to dobře.

7.  David(213.220.208.xxx)   26. 3. 2010, 19:40

re:killer
Tady nejde o to, ze bych firmu, od ktere si koupim hardware, nejak okradal tim, ze ho pouzivam pod Linuxem. Existuji samozrejme patentovane funkce, kterych se firma rada nevzda a radeji nabizi jenom zpackane binarni ovladace pro Windows.
Zarazi me treba postoj firem, vyrabejicich televizni karty: jeden a ten samy model ma nekolik revizi s odlisnym tunerem, firma vyda zabugovane ovladace pod Windows, ktere maji 10MB a problem je vyresen. Pokud chci pouzivat kartu pod Linuxem (kde je jiz mnoho ovladacu napsano), musim kartu vrazit do pocitace, pokud nejde tak ji vnutit jiny modul a doufat. Stacilo by, aby se vyrobce choval “minimalne slusne” a na krabici a v dokumentaci uvedl, jaky chipset a tuner je pouzit.
Popripade mohou firmy samy vydavat vlastni binarni ovladace pod Linux, jako treba Nvidia, ktera si tim urcite neuskodi. Pokud srovnam treba jeji ovladace s ovladaci, ktere nabizi ATI, tak jsou mnohem lepsi a tim si zajistuji vice zakazniku. Mam ATI rad, od doby co jsem presel na Linux (asi 8 let) jsem si koupil uz 2 jejich graficke karty, ale vzdy jsem splakal nad vydelkem, musel je vyhodit a koupit si Nvidii.

8.  mr.dan(193.179.236.xxx)   29. 3. 2010, 14:30

[5]: “není komerční produkt protože je zadarmo”, tahle implikace je uplne spatne postavena. Vyhledavani Google je taky komercni produkt a taky je zadarmo. Web zive.cz je taky komercni produkt a taky je zadarmo. Chce to trochu si rozsirit obzory, neco si o tom precist, vrele doporucuji ;-)

[6]: Mastne vlasy vetsinou nosi pubertaci (a taky asocialove), co nemaji nic jineho na praci, nez psat do diskusi plky, ktere nikoho nezajimaji.
Najdi si holku a neprud, stejne jses za blbecka ty, protoze tomu houby rozumis.

Přidat komentář

*
Opište prosím text z obrázku.
Anti-Spam Image


Aktuální články a bleskovky

Lenovo uvádí nové ThinkPady s čipy Ivy Bridge
Lenovo uvádí nové ThinkPady s čipy Ivy Bridge
Brýle Google Glass jsou patentované
Brýle Google Glass jsou patentované
Ifttt.com: Propojte a automatizujte svůj internet
Ifttt.com: Propojte a automatizujte svůj internet
Nejlepší programy pro práci s Wi-Fi
Nejlepší programy pro práci s Wi-Fi



Linux zblízka využívá WordPress MU a běží na Blog.zive.cz. Vytvořte si svůj vlastní blog
Sledování přes RSS: články a komentáře


  • Seznam odkazů

    • Kontakt na autora blogu
    • Moje články pro LE
    • Různé přílohy k blogu
    • Stránky autora blogu
  • Poslední příspěvky

    • Chystá se revoluce v hraní her?
    • Kontroverze okolo Křišťálové lupy
    • Deset největších open source inovací
    • Nová “daň” za software
    • Má smysl kupovat TV tuner?
    • Zvýšila se v Linuxu spotřeba?
    • Porušování GPL licence ve světě Androidu
    • Je bezplatnost Linuxu výhodou?
    • Potřebujeme nová uživatelská rozhraní?
    • Podvod s hlasováním v přímém přenosu
    • Facebook není zadarmo
    • Nápad na startup
    • Co hrají linuxáci?
    • Nová cloudová platforma OpenShift
    • Kvalitní linuxové antiviry pro desktop ve skutečnosti neexistují
  • Administrace

    • Přihlásit se

1210_Computer.png

Časopis Computer

  • Nakupujte v zahraničí
  • Test 7 čteček elektronických knih
  • Technologie: nové standardy digitálního vysílání
  • Přehled cloudových uložišť
  • Poradíme s výběrem kamery na dovolenou

Partnerská sekce pro IT profesionály:
Microsoft TechNet/MSDN


Video Živě

Bluetooth stojánky pro Android: Philips AS111, AS141 a AS351
Ifttt.com -- založení úkolu
Zprávy Živě - 12. května 2012
iPad docky Logitech AV Stand a Logitech Speaker Stand

další videa »






Mladá Fronta a.s. Mladá Fronta a.s.
Tiráž | Autoři | Připomínky | Odběr novinek | RSS | Textová verze
Copyright 2000–2012 Mladá fronta a.s. | Inzerce: onlinesales@mf.cz | Kontakt na redakci | Návštěvnost měří NetMonitor