Linux a ovladače

Linux a ovladače
« kdy: 06. 12. 2018, 14:33:01 »
Ahoj, jestli to chápu správně, tak jsou v linuxu dvě základní možnosti, kde může být ovladač umístěn.

1) Zkompilovaný přímov jádru
2) Zavedený do jádra pomocí externího jaderného modulu

Lze nějak ovladače z modulu dokompilovat do jádra? Má to případně nějakou zásadní výhodu?

Jedna podotázka: Pokud je někdo výrobcem např. nějakého průmyslového hardwaru a chce poskytovat ovladače i pro Linux, tak jestli to chápu správně, tak nejjednodušší možnost je vytvořit jaderný modul a ten poskytovat. Nebo jak se to dělá?

Díky


MP

Re:Linux a ovladače
« Odpověď #1 kdy: 06. 12. 2018, 15:10:43 »
Ahoj, jestli to chápu správně, tak jsou v linuxu dvě základní možnosti, kde může být ovladač umístěn.

1) Zkompilovaný přímov jádru
2) Zavedený do jádra pomocí externího jaderného modulu

Lze nějak ovladače z modulu dokompilovat do jádra? Má to případně nějakou zásadní výhodu?

Jedna podotázka: Pokud je někdo výrobcem např. nějakého průmyslového hardwaru a chce poskytovat ovladače i pro Linux, tak jestli to chápu správně, tak nejjednodušší možnost je vytvořit jaderný modul a ten poskytovat. Nebo jak se to dělá?

Díky

Nevyhoda je v tom, ze pri dokompilovani ovladace primo do jadra je nutno jadro pri kazdem upgradu prekompilovat, nebot distribuce ta jadra poskytuji jiz zkompilovana.

Co se tyce prumyslovych ovladacu, vetsinou to nekdo doda nekam do vyvojoveho stromu a z nej se to pri kompilaci jadra pro distribuci bere.

Jožo

Re:Linux a ovladače
« Odpověď #2 kdy: 06. 12. 2018, 16:22:47 »
Nejde o to, či "je někdo výrobcem např. nějakého průmyslového hardwaru a chce poskytovat ovladače i pro Linux". V Linuxe ide hlavne o to, či je ten ovládač pod otvorenou licenciou. Ak je, tak tak najjednoduchšie je, keď výrobca linuxovej distribúcie pridá ten ovládač do inštalačných súborov. Pri inštalácii OS dochádza k detekcii hardvéru a z množstva ovládačov sa automaticky nainštaluje ten správny. Linuxové distribúcie sú pod otvorenou licenciou, preto každý jeden kúsok softvéru v nich musí byť tiež pod otvorenou licenciou. Teda aj ovládače. Ak nejaký ovládač je proprietárny, musí sa inštalovať dodatočne. Vtedy je optimálne riešiť to tak, že sa ovládač nainštaluje s pomocou DKMS. https://help.ubuntu.com/community/DKMS . To používateľ nemusí vedieť, čo je DKMS. Proste výrobca linuxovej distribúcie implementuje túto technológiu. Používateľ len nainštaluje ovládač. Ten sa uloží do /lib/modules/verzia-jadra/updates/dkms . To umožní, že ovládač prežije aj aktualizáciu jadra operačného systému.

Jenda

Re:Linux a ovladače
« Odpověď #3 kdy: 06. 12. 2018, 17:18:58 »
1) Zkompilovaný přímov jádru
2) Zavedený do jádra pomocí externího jaderného modulu

3) user-space ovladač, například libusb, ale i všemožné věci se sériákem, I2C a SPI.

Lze nějak ovladače z modulu dokompilovat do jádra? Má to případně nějakou zásadní výhodu?

Blbě (prakticky to znamená zkompilovat jádro znovu) a ne, leda by to byl ovladač disku a nechtěl jsi mít initramdisk (pak by jádro nemělo jak najít disk, na kterém je modul s ovladačem).

Jedna podotázka: Pokud je někdo výrobcem např. nějakého průmyslového hardwaru a chce poskytovat ovladače i pro Linux, tak jestli to chápu správně, tak nejjednodušší možnost je vytvořit jaderný modul a ten poskytovat.

Osobně mi, pokud to jde, přijde nejschůdnější třeba to libusb. Samozřejmě u některých zařízení to nejde.

Neposkytuješ modul (protože ABI se často mění a je těžké vytvořit modul který funguje ve více než jedné verzi jádra, navíc uživatel může mít různé architektury procesoru, že), ale zdrojáky a uživatel si je zkompiluje po nakonfigurování podle svého jádra. I tak ale není zaručeno že se to do budoucna nerozbije (např. se změní nějaká funkce či struktura na úrovni zdrojáku/API). Doporučovaný způsob je ovladač přímo začlenit do jádra, během toho navíc projde kontrolou kvality.

Jose D

  • *****
  • 856
    • Zobrazit profil
Re:Linux a ovladače
« Odpověď #4 kdy: 07. 12. 2018, 20:31:46 »
Lze nějak ovladače z modulu dokompilovat do jádra? Má to případně nějakou zásadní výhodu?
jde, ale nenapadá mě dobrý důvod.

Jedna podotázka: Pokud je někdo výrobcem např. nějakého průmyslového hardwaru a chce poskytovat ovladače i pro Linux, tak jestli to chápu správně, tak nejjednodušší možnost je vytvořit jaderný modul a ten poskytovat. Nebo jak se to dělá?

někteří vendoři poskytují tarball který si vybuildíš pomocí standardních nástrojů a nebo installer, který se to pokusí udělat sám. Koukni třeba na ovladače od Mellanoxu, Intelu, Nvidie.

Tenhle přístup je dost citlivý na QA, takže mám taky zkušenost s přístupem "jednou za čas vydáme binární RPMko", které se pořádně otestuje oproti podporovaným konfiguracím a pak díky weak-modules chvíli funguje.

No a možná nepotřebuješ zrovna přenášet GB dat s DMA.  Pak si do svého zařízení koupíš něco jako https://www.gme.cz/ftdi-prevodnik-s-mini-usb-a-spi a driver si stáhneš od výrobce čipu. Tahle možnost je tak dostupná, že si ji můžeš dovolit i jako bastlíř.

Doporučovaný způsob je ovladač přímo začlenit do jádra
Pro ne-mainstream věci je tohle IMO utopie. A myslím, že i tak trochu plýtváním času komunity.

V Linuxe ide hlavne o to, či je ten ovládač pod otvorenou licenciou.
O to jde jen v případě že chceš driver začlenit do jádra/nějakého OSS distra.
Pokud ho budeš distribuovat skrze svůj web nebo na flashce k tvému výrobku tak je to úplně jedno.


moutzl

Re:Linux a ovladače
« Odpověď #5 kdy: 08. 12. 2018, 19:56:22 »
nejjednodussi je stahnout si zdrojaky a nechat se starat o kompilaci a upgrades DKMS