Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima

[es] :: Advocacy :: Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima

[ Pregleda: 508 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Branimir Maksimovic
Senior Software Engineer

Član broj: 64947
Poruke: 4342
109.72.51.*



+912 Profil

icon Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima01.03.2020. u 06:32 - pre 3 meseca
Mozda je Linux bolji zbog toga sto na svakom releasu menja kernel modul api i ostalo?
Windows se drzi backward kompatibilnosti ko pijan plota, ali to ne vazi za Linux kernel
developere.

Da li je zbog toga Linux napredniji i bolji jer im nisu vezane ruke ili nije?
Eto zadnji slucaj sa zfs modulom je resen tako sto su zfs developeri
nasli workaround i za koriscenje AVX-a i za kompajliranje kernela
sa opcijom "low latency desktop". Naime problem je sto je kernel
odbijao saradnju sa non gpl modulima i kad god se koristi
neka f-ja koja je gpl kompajliranje fejluje na proveru licence.
Ali i tome se doaka :P
press any key to continue or any other to quit....
 
Odgovor na temu

bojan_bozovic

Član broj: 29028
Poruke: 3289
87.116.178.*

Sajt: angelstudio.org


+390 Profil

icon Re: Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima01.03.2020. u 09:14 - pre 3 meseca
Ali ti nemas problema da dopunis API za kernel module, kad god ti treba i nova tehnologija to zahteva!
Problem je sto Linuxovci nece stabilan API i ABI za kernel module, da ne bi mogao da se koristi proprietary kod sa linux kernelom.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8325
*.mediaworksit.net.



+2705 Profil

icon Re: Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima03.03.2020. u 15:54 - pre 3 meseca
Situacija je ista za Linux i WinNT kernel.

Drajveri za prethodne verzije Windows-a ne rade na kasnijim verzijama Windows, ali aplikativni softver radi.

Dakle, API+ABI kompatibilnost za user space, ali ne i za kernel internals.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Branimir Maksimovic
Senior Software Engineer

Član broj: 64947
Poruke: 4342
109.72.51.*



+912 Profil

icon Re: Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima03.03.2020. u 16:43 - pre 3 meseca
Hm, jesi siguran imamo drajver koji samo iskompajliramo za Xp, 7 ili 10ku.
Nesto sam mnogo ubedjen da ne moramo da menjamo source code :)

press any key to continue or any other to quit....
 
Odgovor na temu

nkrgovic
Nikola Krgović
Beograd

Član broj: 3534
Poruke: 2584

ICQ: 49345867
Sajt: https://www.twinstarsyste..


+532 Profil

icon Re: Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima03.03.2020. u 20:27 - pre 3 meseca
Linux kernel API je (relativno) stabilan - makar u okviru major verzija, zato i radi posle recompile. Mozes da ga dopunis, ali sta god radi ostaje da radi u okviru major verzije Nije stabilan samo ABI, jer programeri misle da im se moze ;) Nesto se secam da je bila fora da je kernel ABI za Solaris bio kompatibilan po 3-4 verzije, tipa drajver za Solaris 2.6 je radio na 8.0, tako nesto... Ali to vise nikome nije zanimljivo.

Ja zapravo ne razumem cilj toga, ako ti treba da dodas, dodaj, naravno, prosiri API (i ABI) novim pozivima, ali zasto namerno rusiti ono sto radi... Zato npr. RedHat ne menja kernel verziju, vec u jedan kernel release backportuje features iz novijih verzija, da bi odrazao stabilan ABI.

Sustina je: Ne vidim nijedan razlog zasto bi Linux bio bolji ako namerno krsis kompatibilnost. Poenta imanja API-ja (i ABI-ja) je da budu standard, sto znaci da ih ne menjas svako malo. Ne moras da menjas nesto da bi ga prosirio.... Mislim da je to vise psihopatologija a ne prednost.
Please do not feed the Trolls!

Profesionalni sport je oksimoron. Profesionalni sportista je, najcesce, samo moron.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 15975
..1a1:1700:4563:4c92:78cb:d6c8



+6767 Profil

icon Re: Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima04.03.2020. u 00:10 - pre 3 meseca
Koliko kapiram, nedostatak kernel ABI kompatibilnosti je "feature" a ne "bug" - ideja je da se ljudi "motivisu" da svoje drajvere drze kao otvoren kod.

@Nedeljko, Windows ima relativno stabilan kernel ABI, jednom u par generacija radikalno promene nesto tipa graficki podsistem, sto zahteva drugacije drajvere, ali obicno imas periode od nekoliko godina (nekad i vise) gde drajveri rade. Jedini izuzetak je grafika, zato sto se tu dosta toga menjalo.

Takodje, velike promene su se desile kada su prebacili gomilu stvari u userland (USB i sl.).

Sto se userland koda tice, Windows ABI je stabilan na nivou decenija. Najveca promena od verzije 2.0 je bila izbacivanje 16-bitne podrske prelaskom na x64. Do tada si bukvalno mogao da teras aplikaciju iz 1987-me 30 (da, trideset) godina kasnije.

Danas cela ta stvar nije toliko bitna kao ranije, zato sto je koristan rok potrosackog hardvera postao mnogo kraci. Prosecan korisnik ce verovatno skartirati parce pre nego sto Windows promeni ABI. Za userland ABI uvek mozes da pokrenes VM. Linux ekipa je i ovako i onako navikla na nepostojecu ABI kompatibilnost i vecina drajvera su otvorenog koda.

Ono sto je gadno kod Linuxa je glibc. Iz nekih razloga, glibc je tesno povezan sa kernelom i ponekad se desi da izmene ABI.

Mislim da je verovatno svako ovde imao bar jednu situaciju gde imaju neki izvrsni kod (bez izvornog koda) kompajliranog za neki anticki glibc, koji jednostavno ne radi sa verzijom koju imaju na sistemu.

Posto je glibc, prakticno, podeljena licnost koja je u isto vreme i C runtime biblioteka kao i userland interfejs Linux kernela, ne mozes tek tako da zamenis glibc sa drugom verzijom, posto se glibc oslanja na vrlo specificne strukture i pozive u kernelu koji se menjaju od verzije do verzije..

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1
Demo Videos: http://www.digicortex.net/node/17
Gallery: http://www.digicortex.net/node/25
 
Odgovor na temu

Branimir Maksimovic
Senior Software Engineer

Član broj: 64947
Poruke: 4342
109.72.51.*



+912 Profil

icon Re: Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima04.03.2020. u 01:32 - pre 3 meseca
Ne znam na sta mislite kad kazete na ABI? ABI na Linux-u se nikad ne menja ni API koliko znam. Ako mislite na ABI calling konvenciju za x86 i x86-64 is userlenda ka kernelu,
to nikad ne menjaju, a ako mislite na API same f-je i znacenje pojedinih parametara tim f-jama. To nisam video da se menja.
No govorim o DKMS. E to je zamisljeno tako da ako imas non gpl ili vec kako svoj modul koji se ne kompajlira u kernel vec se dinamicki
ucitava onda samo rekompajliras gornji sloj tj glue sa kernelom kada god izadje nova verzija kernela. E tu je problem,
kad god izadje nova verzija kernela mora da se menja taj glue kod i postavlja pod #ifdef guardove tako da se razlikuje
od kernela do kernela taj ABI.

edit:
menjaju API za module!!!
evo moj stari modul nece da se iskompajlira sa novim kernelom:
greska:
Code:

home/bmaxa/zfs/bmaxa_data/examples/kmodule/cr0_proc.c:31:36: error: passing argument 4 of ‘proc_create’ from incompatible pointer type [-Werror=incompatible-pointer-types]
   31 |   proc_create("cr0_proc", 0, NULL, &proc_fops);
      |                                    ^~~~~~~~~~
      |                                    |
      |                                    const struct file_operations *
In file included from /home/bmaxa/zfs/bmaxa_data/examples/kmodule/cr0_proc.c:2:
./include/linux/proc_fs.h:64:24: note: expected ‘const struct proc_ops *’ but argument is of type ‘const struct file_operations *’


Znaco ovo je direktna izmena *API*-ja ne ABI-ja.

[Ovu poruku je menjao Branimir Maksimovic dana 04.03.2020. u 03:03 GMT+1]
press any key to continue or any other to quit....
 
Odgovor na temu

Branimir Maksimovic
Senior Software Engineer

Član broj: 64947
Poruke: 4342
109.72.51.*



+912 Profil

icon Re: Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima04.03.2020. u 02:17 - pre 3 meseca
Inace ABI je nabinarnom nivou:
Code:

~/.../amd64examples/console >>> cat params.txt                                                                                                                                                                                
syscall numbers: /usr/src/linux/include/asm-x86_64/unistd.h
kernel parameters:
r9    ; 6th param
r8    ; 5th param
r10    ; 4th param
rdx    ; 3rd param
rsi    ; 2nd param
rdi    ; 1st param
eax    ; syscall_number
syscall

return register:
rax    ; 1st
rdx    ; 2nd

preserved accross function call: RBX RBP ESP R12 R13 R14 R15

functions parameter (when linked with external libraries):
r9    ; 6th param
r8    ; 5th param
rcx    ; 4th param
rdx    ; 3rd param
rsi    ; 2nd param
rdi    ; 1st param
call library


e ovo kad bi promenili nastao bi pitchwajz ;)

press any key to continue or any other to quit....
 
Odgovor na temu

bojan_bozovic

Član broj: 29028
Poruke: 3289
87.116.178.*

Sajt: angelstudio.org


+390 Profil

icon Re: Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima04.03.2020. u 09:30 - pre 3 meseca
Ma problem je Branimire "Bazar model" gde svako krpi kod kako stigne, jeste tako se brze iskorene bagovi, ali ima problema s tim modelom, teze je nametnuti recimo API i ABI za kernel, jer ce neko da forkuje kod i vecina ce onda da nametne nesto drugo, ili iz politickih razloga ili zato sto je trenutno tako lakse.
A programeri najvise grese tako kad izaberu laksi i preci put umesto dobro osmisljenog dizajna. To nije karakteristicno samo za "Bazar model" ima toga i van linuxa ali je upravo kod linuxa jako izrazeno.
Strasno je koliko zato ima izmisljanja tople vode u linuxu, samo pogledaj desktop, pa tu ce skoro svako da napravi svoj desktop environment, umesto da naprave jedan da valja.

 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8325
*.mediaworksit.net.



+2705 Profil

icon Re: Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima04.03.2020. u 10:32 - pre 3 meseca
Linux kernel ima 100% kompatibilan unazad (neograničen broj verzija) API i ABI prema user space-u. Jedan od Linusovih principa je "never break user space". Tu će raditi sve što je ikada radilo.

Međutim, kernel internals mu nije unazad kompatibilan unazad. To "rerlativno" ne znači ništa, jer na to ne možeš da se osloniš.

Pretpostavljam da je Linux kernel unazad ABI i API kompatibilan unazad za kernel internals unutar iste major verzije, ali to treba proveriti.

Ivane, ako je tačan iskaz da ako je nešto radilo datuma n, onda radi i datuma n+1, onda matematičkom indukcijom sledi da ono što radi jednom, radi zauvek. Čim postoji narušavanje kompatibilnosti unazad, postoje dve uzastopne verzije na kojima je kompatibilnost unazad narušena.

WinNT je kompatibilan unazad na nivou iste verzije Windows-a.

Branimire, ako se API čuva, lako je obezbediti čuvanje ABI-ja preko apstrakcije (hendleri i tako to). Ako ABI nije očuvan, biće da nije ni API.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

[es] :: Advocacy :: Linus i gpl te lomljenje kompatibilnosti sa non gpl kernel modulima

[ Pregleda: 508 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.