Domanda

Dato che il kernel di Linux è GPL e LGPL non suppongo che è illegale per collegare codice proprietario ad esso. Come funziona l'elude settore questo? Mi aspetto che la licenza GPL costringerà a qualsiasi sviluppatore di rilasciare sotto licenza GPL conducente e / o modulo del kernel.

Forse sono confuso e l'attuazione di un nuovo modulo non è in realtà che collega contro il codice del kernel ??? Come fanno le aziende affrontare questo? Forse che collega l'altro intorno strada (da kernel per i loro binari)?

D'altra parte v'è il kernel BSD. Dove si è liberi di collegamento protetto IP. Si può ottenere una migliore progettazione attuare i driver all'interno di un kernel BSD? C'è qualche limitazione di progettazione in sede di attuazione driver per GPL kernel?

È stato utile?

Soluzione

Come ha detto la licenza BSD come quello usato dal kernel BSD è molto più liberale in modo che non è un problema di collegamento qualunque sia concesso in licenza i moduli lì.

Per il caso Linux è vero che la GPL per sé proibisce il collegamento di codice non GPL compatibile-che potrebbe non consentire il collegamento a moduli proprietari o moduli LGPL addirittura.

Tuttavia, i titolari di diritti d'autore linux concedono di collegare il modulo "LGPL" con qualsiasi codice proprietario. Un esempio di questo è il driver nvidia:

/------------.-\
| Kernel       |
|              |
|   /--------\ |
|   | Module | |     /-------------------\
|   | (LGPL) <========> proprietary code |
|   \--------/ |     \-------------------/
\--------------/

Questo sarebbe ancora illegale sotto licenza GPL, in generale, ma è esplicitamente consentito per il kernel Linux Come riferimento, vedere ciò che Linus Torvalds ha da dire sulla questione qui:.

http://linuxmafia.com/faq/Kernel/proprietary-kernel- modules.html

P.S. Il collegamento è un'operazione simmetrica in termini di GPL.

Altri suggerimenti

Non è l'atto di collegare sé che attiva le restrizioni GPL.

È distribuzione di un "lavoro derivato" del lavoro GPL che attiva le restrizioni - si deve dare a nessuno hai dato il "lavoro derivato" al codice sorgente necessario per ricreare il " opera derivata".

Ora, la domanda diventa uno dei cui viene disegnata la linea "lavoro derivato" - (! Ed è probabile che sia diversa in diverse giurisdizioni), che è tutt'altro che cristallino. Ad esempio, se si distribuisce un compilato kernel Linux binario con il codice staticamente collegati in una parte di questo, è abbastanza chiaro che l'intero binario è un "lavoro derivato". D'altra parte, se si distribuisce solo il modulo che utilizza solo "interfacce pubblicate" del kernel, allora probabilmente non è un "lavoro derivato".

C'è un sacco di spazio in tra queste due posizioni, però. Per esempio, chi distribuisce un dispositivo che contiene la memoria flash che contengono il kernel Linux e un driver binario compilato, è l'intero contenuto della memoria flash "un derivato di lavoro"? Di certo sembra che a me - ma le opinioni differiscono, e solo risposta definitiva arriverà quando è testato in tribunale (e anche allora, solo per la competenza di tale tribunale)

.

Non posso dire dalla tua domanda, ma si può pensare su questo indietro. Se si sta tentando di utilizzare un driver proprietari su Linux, allora sì, questo dovrebbe essere consentito.

E 'vero che qualsiasi codice che i collegamenti contro codice GPL-ed deve essere di per sé GPL-ed. Tuttavia, il codice GPL-ed possono collegamento con le librerie closed-source, senza alterare la licenza di quelle librerie (in caso contrario, potremmo fare ogni biblioteca esistente open-source semplicemente scrivendo un programma GPL e collegandolo contro la Biblioteca). Pertanto, il GPL-ed Linux kernel possono Link contro il driver closed-source, senza alcun problema.

Detto questo, questo richiede che il driver è scritto in modo tale che questa sia completamente autonomo o collegamenti solo con le librerie che consentono il collegamento senza restrizioni (LGPL, MIT, ecc). Che significa anche che il driver dovrebbe essere un modulo del kernel caricabile e non compilato staticamente nel kernel.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top