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.
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:
Č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.
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.
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.
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.
On by dost pomohl uz jen kompromis... mit tam ten firmware alespon pro zakladni hardwarove komponenty. Aneb DVB-T si clovek poresi klidne dodatecne, ale kdyz po instalaci nemam firmware k sitovym kartam a nikam se nedostanu... tak je sice krasne, ze jsme "militantne opensource", ale z hlediska i zakladni \ pouzitelnosti je takovy system na pendrek.
Já myslím, že tu nejde o „militantní open source“, ale jde o to upravit pravidla tak, aby odpovídala realitě. Tedy uvědomit si, že ten firmware je mimo otázku svobodného software v Debianu.
Mimochodem ty firmwary mají obvykle desítky kilobajtů, takže celkem není problém jich tam mít mnoho. Licenčně to problém vůbec není.
Pokud ovladac vznikl reverse engineeringem, a dany BLOB byl kuchnut z uzavreneho ovladace.. trocha pochybuji.
Ale zas i cesky autorsky zakon dovoluje delat podobne sediny, pokud je duvodem interoperabilita (coz by mohla byt pravda, v pripade nutnosti/cileni na pouzivani daneho hw uzivatelem).
Já to řeším tak, že jsem si vyrobil instalační flashku, která má 2 partice. Na první je instalátor na druhé jsou soubory s firmwarem. Standardní instalátor Debianu si totiž umí o firmware během instalačních kroků říct. Bohužel si ho neumí najít na oddíle s instalátorem, jen na ostatních zařízeních - takže buď další médium, nebo ten druhý oddíl, ať se to nemusí řešit dvěma flashkama.
"Firmware pro periferie je prostě samostatná kategorie, která nezapadá do současných škatulek."
A uz se to zacina ohybat, jak potrebujeme. Je to totiz uplne to stejne, pokud by treba neexistoval svobodny prohlizec, tak se na net taky nedostanu, abych si nesvobodny stahl (ok mame tu wget nebo i jine moznosti, jak prenest instalacni balicek, ale jde spise o princip).
Jediny rozdil je v tom, ze alternativni firmware bud neni nebo neni nic moc, takze se radeji budeme pragmaticky tvarit, ze problem neexistuje. Pokud je nasim cilem aspon trochu nutit vyrobce do otevrenych firmwaru, tak to urcite neni distribuci tech uzavrenych, spise naopak. Na druhou stranu na tehle fronte uz je dobojovano, ted je potreba to nejak pragmaticky uzavrit, aby se koza nazrala, vlk zustal cely a neporanilo to nase krehka ega :) Licencne to problem nebyva, vyrobce je spise rad, ze jeho vyrobek bude fungovat v konkretni distribuci uz od instalace, nez aby resil, ze je distribuovan jeho firmware. Za me tedy sup s tim do instalace (minimalne veci, ktere souvisi se siti)
Stejné to práve nie je. Prohlížeč, wget (driver) a internet (firmware), keď funguje, tak si niečo stiahnete. Ale aby to neranilo niekoho ego, ktorému je jedno driver alebo firmware, tak to zahrnú (snáď) do inštalačky. Za mňa tiež áno.
Naopak je to uplne to stejne, co ti brani si to stahnout vedle a pomoci USB flashky to tam nakopirovat ? Nic. Pokud by nahodou nahodou firmware pro USB radic byl taky non-free, tak je to uplne stejny problem.
Mi je jedno jak se rozhodnou, jestli tak nebo onak, ale zduvodnovat si zarazeni non-free firmware tim, ze je to prece neco jineho, je dost pokrytecke :)
Veď hovorím, že je Vám jedno driver/firmware. P.Krčmár to vysvetlil. Je Vám jasné, že Debian umožňuje aj teraz priamo počas inštalácie natiahnuť hocijaký firmware?
Zdôvodnenie máte tu:
https://lists.debian.org/debian-vote/2022/08/msg00001.html
Nevysvetlil, pouze alibisticky sdelil, ze firmware je neco uplne jineho, takze neni zadny problem ho distribuovat. Ja tvrdim, ze je to uplne to stejne, jako kdyby hodili na instalacni medium treba Chrome. Samozrejme v dnesni dobe se na CD/USB dava jenom zaklad a pocita se s tim, ze zbytek si uzivatel doinstaluje.
Kazdopadne uvidime jak to dopadne, vubec bych se nedivil kdyby Debian zustal oficialne bez non-free.
To je problém celého Linuxu.
V komunitě existují lidé kteří otevřenost a svobodu razí za každou cenu. V mnoha oblastech je to správné, ale u operačního systému pro laiky nikoliv.
První který udělá distribuci která bude stabilní a nabídne možnost primárně používat "uzavřené" ovladače/firmware, tzn. že tam budou fungovat periférie tak jak jsou lidé zvyklý z Windows, vyhraje. Když k tomu přibalí balík lokalizovaného softwaru pro běžnou domácí agendu s instalací na jeden klik tak by to byl úspěch.
Osobně nemám chuť, respektive už mne to nebaví, abych ztrácel čas s hledáním tak nicotné chyby že mi nefunguje periférie.
takze mluvis treba o *buntu? ;-) (a jiste i vetsiny dalsich distribuci (krome Debianu) ktere nepouzivam...)
- v *buntu ma oficialni instalacni medium v some non-free firmware
- pri instalaci mas 1 fajfku pro nainstalovat metabalik uzavrenych casti (ffmpeg extra "codeky", non-free fw(nebo to uz je mozna i bez fajky?), ms corefonts, unrar, atd...)
- uzavreny ovladac na grafickou kartu nainstalujes na 1 klik v nastroji "Dodatecne ovladace"
Můj názor:
Firmware klidně může být uzavřené. Je to stejné, jako by bylo uvnitř zařízení a to že se instaluje při inicializací zařízení je jen forma technikálie.
Z hlediska ovladačů tam se mi líbí, jak to je/bylo v ubuntu rozdělené. Uživatel nechť si vybere.
Zatímco firmare je úzce spjato s HW daného zařízení a je plně pod jeho správou, ovladač je spjat spíše s HW mého PC a musí kooperovat s ostatními součásti operačního systému
Nelíbí se mi překlad "svobodný a nesvobodný" software. Spíš otevřený a uzavřený
neni to totez. Napriklad "otevreny a nesvobodny" je napr. Microsoft, kdyz poskytoval zdrojaky Win pro vlady a skoly, k vyzkumnim ucelum (Shared source - se to jmenovalo).
Děkuji za článek, pane Krčmář.
Vrtají mi ale hlavou dvě věci:
1. proč to vůbec řeší Debian a nedávaj to výrobci rovnou na zařízení? Sám popisujete, že ideální je, když to tam nahrajou rovnou výrobci, ale pokud to nedělají, tak to jistě bude mít nějaký důvod, ne? Napadá mě jen možnost updatů?
2. Jak to řeší ostatní velký distribuce?
Mohu odpovědět na 1)
Zjednodušují se tím případné opravy/upgrade firmware. Pamatuji jak bylo obludný, když se flashoval firmware na ntb pro BT. Jednou se něco pokazilo a ja od té doby neměl BT. Naštěstí to vyřešila reklamace. z hlediska HW to je bezpečnější.
Mimochodem když jsme u obdobných binárních blobů, jak se Debian staví k CPU microcode? Ja tyhle linux hrátky uz delší dobu neřeším, presedlá jsem ma Apple, jednak má slušný hw za rozumnou cenu a stabilní unix like system, takže vlastně vše co potřebuji k životu. Jediný firmware co řeším je QMK v klávesnici.
"Ovladače jsou součástí operačního systému v hlavní paměti, zatímco firmware běží v periferiích."
No já mám za to, že firmware všech zařízení se načítá při startu počítače a nahraje se do hlavní paměti za BIOS. Nebo se za posledních 20 let něco změnilo?
Firmware, běží v úplně jiném procesoru, který má úplné jinou instrukční sadu a úplně jiné kódy instrukcí, a je fyzicky v tom periferním zařízení.
Dnes i myš se realizuje tak, že v ní bydlí malý osmibitový procesor s vlastní malou RAM a malou ROM, možná flash ? Pokud to zrovna není BT-myš, tak je ten procesor třeba také 32-bitový :-)
I disky, ty rotační určitě, mají vlastní procesor, RAM i paměť programu, snad flash, tento počítač běží úplně mimo hlavní paměť i procesor a je na desce, která je pevně součástí toho disku a s grafikou to bude zrovna tak, ... tam těch procesorů bude několik z toho některé mají třeba i několik-stovek-jáder.
Tak že Firmware neběží na tom Celeronu, nebo Core i5, Atomu, nebo co to máš na hlavní desce. O tom je celý tento článek.
To si pletete s ROM konkrétní periférie. Např. VGA karty. Boot ROM síťovky. Firmware je něco jiného. Přečtěte si článek, neběží na CPU počítače.
Úplně si to neplete, protože na grafické kartě je GPU, který se řídí vlastním firmwarem (je to malý jednoúčelový počítač). Grafická karta má i kus paměti, který rozšiřuje BIOS (mapuje se do adresního prostoru CPU počítače) a umožňuje například zobrazování textových zpráv nebo grafického loga při startu systému, případně změnu režimů (aby se mohlo zobrazit menu zavaděče Grub).
Současné periférie už nejsou hardware, který něco dělá, ale jsou buď nastavitelné (při startu je potřeba do nich zapsat informace, aby dobře fungovaly) nebo dokonce programovatelné (periférii řídí např. ARM čip s vlastní RAM a obsahuje kvůli tomu firmware).
Záleží asi nejvíce na tom, proč nemáme rádi uzavřené systémy,
1. úniky dat ?
2. nemožnost přizpůsobení ?
3. konformizmus ?
4. ... ?
Osobně is myslím, že by to mělo záležet, na způsobu připojení periférie k hlavnímu systému, Pokud má kanál, kterým je pouhým slejvem hlavního systému a nedostane se nikam do paměti, na disk, na síť, ... , tak ať u takovýchto periferii ten blob součástí distribuce je. Distribuce podle mě zůstane tímto stále stejně bezpečná. Tedy pokud výrobce nebude právně šikanovat co se s tou binárkou může a co se s ní nesmí.
Pokud si ale perifetní zařízení může převzít sběrnice, nevím zda to na dnešních deskách je ještě možné, před třiceti lety to bylo běžné. Tak si myslím, že blob takovéhoto zařízení nemá ve svobodném systému co dělat, protože může snadno převzít řízení a může například snadno dojít k úniku dat.
Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. GNU/Linuxem a Unixem obecně se zabývá již více než deset let a věnuje se především jeho nasazení v počítačových sítích a bezpečnostní politice. Zde bloguje o Root.cz, Linuxu, internetu a světě kolem sebe.
Přečteno 109 350×
Přečteno 88 864×
Přečteno 72 031×
Přečteno 57 659×
Přečteno 54 057×