Hlavní navigace

Firmware periferií není totéž co uzavřené ovladače v systému (komentář k Debianu)

22. 9. 2022 12:03 (aktualizováno) Petr Krčmář

Krátká poznámka o tom, co se teď řeší v Debianu. Spousta lidí totiž volně zaměňuje uzavřené ovladače a firmware. Ovladače jsou součástí operačního systému v hlavní paměti, zatímco firmware běží v periferiích.

Debian řeší, zda má na instalační média přidávat uzavřený firmware pro periferie. V současné době na oficiálních médiích binární firmware nenajdete a pokud ho potřebujete, musíte sáhnout po polooficiálních sestaveních, od kterých se projekt Debian distancuje.

Interní hlasování

Protože je to pro uživatele nepříjemná komplikace, rozproudil o tom Steve McIntyre interní debatu, která vyústila v hlasování o dalším postupu. Původně měly být na výběr tři varianty, nakonec jich bylo vymyšleno šest:

  1. Jeden instalátor s veškerým firmwarem, který se použije podle potřeby,
  2. samostatná média s nesvobodným firmware, uživatel si bude moci během instalace vybrat,
  3. samostatná média s nesvobodným firmware, uživatel si může stáhnout to či ono,
  4. média s nesvobodným softwarem zůstanou mimo oficiální vydání Debianu,
  5. upravit Společenskou smlouvu Debianu a nabídnout jeden instalátor,
  6. upravit Společenskou smlouvu Debianu a nabídnout dvě varianty instalátoru.

Četl jsem na to téma několik veřejných internetových debat (vedle mailing listu Debianu) a veřejnost má velký zmatek v tom, co se v tomhle hlasování řeší. Zejména jde o to, že se v těchto debatách nerozlišuje problém uzavřených ovladačů (které běží v systému) a uzavřených firmware (které běží v periferii). Protože se to opakuje stále dokola, rozhodl jsem se to viditelněji objasnit tady na blogu.

Co je to firmware

Každá periferie připojovaná k počítači dnes používá nějaký procesor a na něm běží software. Protože ho potřebujeme odlišit od běžného programového vybavení běžícího na hlavním procesoru, říkáme mu firmware. Jde prostě o kus software v binární podobě, který celé to zařízení rozhýbává.

Takových binárních blobů najdeme v každém počítači celou řadu: základní deska, grafická karta, síťová karta, pevný disk, klávesnice, webová kamera, čtečka otisků prstů, tiskárna a prakticky cokoliv dalšího, co si vymyslíte. Jak se tam ten firmware dostane?

V části zařízení je uložen na paměti typu flash a přichází rovnou zapečený od výrobce. Připojíte, rozeběhne se a funguje. To je ideální stav. V jiných zařízeních ale najdete paměť typu RAM, která je po zapnutí prázdná. Takto vybavené zařízení je pak samozřejmě nefunkční a čeká, až ho někdo obslouží. Ten někdo je operační systém běžící na hlavním procesoru, který by měl disponovat příslušným ovladačem.

Takový ovladač může být z našeho hlediska buď uzavřený nebo otevřený, ale měl by pro správné fungování své periferii na začátku poslat firmware. Ten se nahraje do RAM daného zařízení, které se teprve v tu chvíli správně rozeběhne. Tenhle firmware neběží v hlavní paměti, jen je načten ze souboru a je poslán po sběrnici někam ven.

Svoboda vs. použitelnost

Debian od začátku distribuuje jen otevřený a svobodný software a není to kvůli nějakému náboženskému pohnutí. Důvody jsou ryze praktické: jeho vývojáři se domnívají, že tahle otevřenost dává uživatelům do rukou vládu nad vlastním počítačem a soukromím. Přesným opakem jsou dnes mobilní platformy, na kterých běží uzavřený operační systém, pomocí uzavřeného obchodu s aplikacemi stahujete další nástroje, které jsou rovněž uzavřené.

Proto také Debian nedistribuuje na médiích uzavřené ovladače třeba pro grafické karty. Výše zmíněný firmware mu ale z tohohle rámce vystupuje, protože ten není součástí systému a nikdy nebyl. Běží v odděleném prostředí zařízení, které je pro počítač periferií. Mohli bychom se samozřejmě bavit o tom, jak moc má takový firmware přístup k uživatelským datům, ale v praxi v tom zařízení stejně takový software musí běžet. Buď v paměti flash nebo v RAM. K funkci toho zařízení je ale nezbytný a uživatelé ho potřebují.

Konkrétní příklad: mám doma televizní tuner pro DVB-T2, který mám připojený k serveru. Tento tuner má otevřené ovladače v linuxovém jádře a krásně funguje. Ovladač vás ovšem při zasunutí tohoto tuneru do USB varuje, že to nebude fungovat, protože není k dispozici správný firmware. Vy pak musíte vlítnout na web LinuxTV, zjistit informace a pak obvykle narazíte na projekt OpenELEC. Nakonec se doklikáte na GitHub, kde existuje specializovaný repozitář s firmwarem. Ten správný soubor si stáhnete a uložíte do  /lib/firmware/.

Uložení tohoto souboru do správné cesty pak způsobí, že zařízení začne správně fungovat. Proč? Protože svobodný ovladač najde správně pojmenovaný soubor ve správném adresáři a nahraje ho přes sběrnici (v tomto případě USB) do tuneru. Vše se rozeběhne a krásně funguje po mnoho vašich spokojených let, kdy se vyvíjí linuxové jádro a s ním třeba i ovladač. Firmware je ale pouze v zařízení a nikam jinam se nedostane.

Jen když je to nutné

V diskusích se stále opakuje to, že správně by měl instalátor nainstalovat kvalitnější uzavřenou verzi ovladače a jen na výslovnou žádost nabídnout tu svobodnou. Tohle je přesně důkaz toho, že pisatel nepochopil, o čem je tu řeč. Nejde o svobodné a nesvobodné ovladače, které Debian teď vůbec neřeší a nemá v plánu distribuovat.

Jde tu právě jen a pouze o firmware do periferií. Ten je prakticky vždycky uzavřený a téměř nikdy neexistuje jeho svobodná varianta. Je tu sice pár výjimek (třeba Coreboot), ale ty jsou opravdu jen velmi okrajové. Drtivá většina běžně používaných periferií má připravený firmware výrobcem.

Ten firmware pak může být součástí instalačního média a obvykle není vůbec licenční problém s jeho šířením. Druhou variantou je, že si ho uživatel může stáhnout dodatečně, stejně jako jsem to já udělal s tunerem pro DVB-T2. Jenže problém nastává, když je potřeba firmware nahrát už při instalaci systému do nějakého zásadního zařízení, například do síťové karty.

Na komunitě vývojářů Debianu teď tedy je, aby vyjádřila svůj přístup k tomu, co není uzavřený software v tom smyslu, ve kterém ho obvykle chápeme – Flash, ovladače Nvidia, Opera, Zoom, Dropbox, Steam a já nevím co ještě. Firmware pro periferie je prostě samostatná kategorie, která nezapadá do současných škatulek.

Sdílet