Ciekawostki Ubuntu: sterowniki binarne



Żródła jądra Linux udostępnione są na licencji GPL, co skutecznie utrudnia rozprowadzanie binarnych sterowników. Dzieje się tak z powodu jednego z punktów licencji, która zabrania dystrybucji skompilowanego kodu GPLowego zlinkowanego z efektem kompilacji kodu nie licencjonowanego w ten sposób.

Oczywiście samodzielnie można to sobie dowolnie manipulować różnymi kodami, problem leży tylko w momencie, gdy chcemy efektami podzielić się z innymi. A po to właśnie istnieją dystrybucje.

Jak więc możliwe jest, że Ubuntu zawiera sterowniki binarne (bez dostępnego kodu źródłowego) do m. in. kart graficznych oraz sieciowych i nie ma z tego powodu problemów?

Sprytne rozwiązanie polega na tym, że w paczkach nie jest dostarczany zlinkowany z kodem jądra moduł gotowy do zainstalowania. Znajdziemy tam jedynie pliki .o, które z niczym zlinkowane nie są.

Stąd prosty wniosek, że konsolidacja odbywa się już na komputerze odbiorcy, dzięki czemu unika się rozpowszechniania nielegalnych kompilatów. Twórcy Ubuntu poszli jednak dalej - gotowe moduły (po linkowaniu) nie znajdują się nawet na dysku użytkownika! Przy starcie systemu skrypt lrm-manager tworzy w katalogu z modułami jądra system plików tmpfs (swoisty ram-dysk, zamountowany w katalogu volatile) i wywołuje linkera ld, który z konsoliduje gotowe do załadowania moduły jądra. Umieszczone one zostają w obrębie tmpfs, znikając wraz z wyłączeniem komputera.

W ten sposób zespół Ubuntu unika nielegalnego rozprowadzania binariów. Nie jest to jednak rozwiązanie całościowe - aby dowieść legalności binarnych sterowników, trzeba również wykazać, że nie są one derived work z kodu GPLowego. Czyli, że przy ich powstawaniu nie był używany żaden fragment kodu jądra, włącznie z plikami nagłówkowymi *.h.


Archived comments:

Cthulhu 2005-10-18 22:12:55

heh... kazdy sobie radzi jak moze z powalonym prawem.. :/

zdzichu 2005-10-18 22:14:16

Prawo tu nie ma nic do rzeczy. To licencja GPL wymaga takich zagrywek. Ale celem GPL jest zapewnienie każdemu użytkownikowi dostępu do źródeł, co jest sprzeczne z celem dostawców binarnych sterowników.

Cthulhu 2005-10-18 22:19:27

a licencja nie jest czescia ogolnie pojetego prawa? ;}
Wiesz, użytkownika końcowego nie obchodzi to czy nie dostaje sterownika gdyż GPL na to nie pozwala czy też dlatego, że twórca na to nie pozwala - dla niego ważny jest fakt, że go nie dostaje. GPL jest lekko mówiąc restrykcyjny (Nawet w Mono wybrali inna licencję...) i jeszcze się nam tłumaczy, że to dla naszego dobra ;}.
Szczerze mówiąc to tak długo jak sterowniki działają to nie widzę potrzeby by każdy musiał widzieć ich źródła (zresztą dyskusja o źródłach dla wszystkich przewineła się parę dni temu przy okazji Joggera2). Gorzej jest gdy twórca sterowników nie widzi potrzeby zajmowania się rynkiem. Ale my, użytkownicy linuksa już dawno przyzwyczailiśmy się, że sprzęt kupuje się pod linuksa. (Teraz ja, przy wyborze laptopa jako 2 kryterium po stosunku mocy do czasu pracy na bateriach wybrałem % działających podzespołów z Linuksem...)

wojtekka 2005-10-19 15:34:04

Linker tworząc plik .ko nie łączy niczego z kodem jądra, tylko kilka plików .o w jeden. Konsolidacja z jądrem (kodem na GPL) następuje w momencie uruchomienia insmod. Ciężko takie pojedyncze pliki .o, skompilowane dla Linuksa, nazwać ,,independent and separate works''. Ciężko też kod, który jądro Linuksa linkuje ze sobą (a nie na odwrót) ,,derived work''. Poza tym, to to użytkownik uruchamiając insmod (albo skrypty startowe, które uruchamiają insmod (albo init, który uruchamia skrypty startowe (albo jądro, który uruchamia init (albo bootloader, który uruchamia jądro (albo BIOS, który uruchamia bootloadera (albo komputer, który uruchamia BIOS)))))) wywołuje konsolidację. A użytkownik może zrobić z kodem na GPL cokolwiek mu się podoba, dopóki go nie rozprowadza. Więc dlaczego kod, który jest konsolidowany na na komputerze użytkownika i na jego życzenie, miałoby podpadać pod ,,derived work''? Cała ta sprawa z modułami mocno śmierdzi. Ale jak zwykle, IANAL.

I a propos komentarza zdzicha. To, że GPL zapewnia dostęp do źródeł _kodu_na_GPL_ jest świetną sprawą. Ale jeśli kod na GPL ładuje kod na innej licencji, to wymaganie, by ten drugi był rozprowadzany na zasadach jedynej słusznej licencji, jest jakimś nieporozumieniem.

wojtekka 2005-10-19 15:35:40

> Nie jest to jednak rozwiązanie całościowe - aby dowieść
> legalności binarnych sterowników, trzeba również wykazać,
> że nie są one derived work z kodu GPLowego.

BTW, czy przypadkiem w całym cywilizowanym świecie prawo nie działa w drugą stronę? ;-)

madman 2005-12-06 02:48:53

Jak zwykle sprowadza sie do tego, ze uzytkownik koncowy cierpi.
Szczerze? Tak jak bylo napisane wyzej, nie interesuje mnie co to za modul, skoro dziala poprawnie i stabilnie. Caly ten krzyk wokol binarnych modulow powoduje to, ze producenci sprzetu sa niechetni wypuszczania modulow dla systemu Linux, ze wzgledu na dziwne licencje.
Tak jak wspomnial wojtekka, modul nie jest czescia jadra i nie korzysta z jego kodu do momentu jego zaladowania.
Wiec nie musi byc na licencji GPL.

Zycze Wam i sobie, zeby sterowniki, nawet jesli binarne, powstawaly... Moze kiedys bede mogl uzyc wbudowanej w mojego notebooka irdy czy czytnika kart pamieci...

zdzichu 2005-12-06 09:24:46

Subject Linux in a binary world... a doomsday scenario
From Arjan van de Ven
http://lkml.org/lkml/2005/12/5/32

Tak to widzą deweloperzy.

ja 2006-05-16 15:01:46

Co znaczy że prawo nie ma nic do rzeczy? Przecież licencja nie powstała w próżni prawnej.

Comments


Comments powered by Disqus