2009-04-10 25 views
10

Công ty tôi đang làm việc đang phát triển một mô-đun hạt nhân nguồn đóng (tệp .ko). Mô-đun này phải thực hiện cuộc gọi đến các hàm được chứa trong mô-đun gpl2. Về cơ bản, chúng tôi có tình huống như sau:Mô-đun hạt nhân không GPL sử dụng các mô-đun GPL

// GPL 2 kernel module (gpl.c -> gpl.ko) 
void a_function(void) 
{ 
// ... 
} 
EXPORT_SYMBOL(a_function) 


// Closed Source module (closed.c -> closed.ko) 
a_function(); 

Điều này có hợp pháp không? Chúng ta có vi phạm giấy phép GPL2 trong ví dụ này không? Xin lưu ý rằng closed.c không bao gồm bất kỳ tệp tiêu đề gpl2 nào.

+0

+1, câu hỏi hay. –

+4

Tôi đang bỏ phiếu để đóng câu hỏi này là không có chủ đề vì đó là về cấp phép hoặc các vấn đề pháp lý, chứ không phải lập trình hoặc phát triển phần mềm. [Xem tại đây] (http://meta.stackoverflow.com/questions/274963/questions-about-licensing/274964#274964) để biết chi tiết và [trợ giúp] để biết thêm. – JasonMArcher

Trả lời

7

GPL_ONLY gắn cờ cho mô-đun, không được sử dụng trong các mô-đun không GPL. Vì vậy, nếu module bạn đang nói về không phải là GPL_ONLY, bạn có thể sử dụng nó.

Nhưng ngay cả những số này là GPL_ONLY cũng có thể được sử dụng nếu bạn truy cập chúng qua user-space drivers, which are possible in 2.6.23. Đó là chính xác những gì đã xảy ra với hệ thống phụ USB. http://www.linux-magazine.com/online/news/linux_2_6_25_without_closed_source_usb_drivers

Không chính xác giải quyết vấn đề pháp lý, nhưng cung cấp cho bạn một số ý tưởng: http://www.cyberciti.biz/tips/linus-rejects-the-idea-of-non-gpl-kernel-modules.html

+0

Tình yêu bị nhiễm độc :) +1, Câu trả lời hay. –

4

Thứ nhất: Bạn cần trao đổi với luật sư về việc này; có thể là bộ phận pháp lý của công ty bạn.

Thứ hai: Câu hỏi quan trọng là đoạn mã được bắt nguồn từ mã nào khác.

Thật không may, gần như có bất kỳ số lượng câu trả lời nào cho câu hỏi này.

Một số sẽ giữ rằng tất cả các mô-đun hạt nhân có nguồn gốc của hạt nhân, do đó phải được GPL bất kể bao gồm tiêu đề.

Hoặc mô-đun khép kín của bạn xuất phát từ mô-đun GPL và mô-đun GPL bắt nguồn từ hạt nhân, vì vậy mô-đun đóng cũng phải là GPL.

+0

Làm thế nào để có thể có mô-đun nguồn đóng của NVIDIA và ATI được tải sau đó? Tôi cho rằng họ sử dụng các mô-đun hạt nhân agp và drm (nên là GPL). Sau khi tất cả các macro LICENSE cho phép bạn chọn một giấy phép khác, ngay cả khi họ có thể "taint" hạt nhân – Emiliano

+0

Như tôi đã nói - đó là một vấn đề không đồng ý - ATI và NVIDIA rõ ràng tin rằng mô-đun của họ không có nguồn gốc của hạt nhân. Mà họ có thể không được - họ là cổng của trình điều khiển Windows của họ sau khi tất cả. Nhưng tôi không tin rằng có bất kỳ luật lệ nào về điều này nên tất cả các ý kiến ​​đều có thể. –

+0

Bây giờ tôi hiểu ý của bạn. 1 cho điều đó. – Emiliano

6

IANAL vì vậy bạn thực sự nên tìm kiếm ý kiến ​​pháp lý đủ điều kiện. Tuy nhiên, cách tiếp cận này chắc chắn sẽ chống lại tinh thần của giấy phép và sẽ không giành cho bạn bất kỳ người bạn nào trong vùng đất hạt nhân.

Tuy nhiên, bạn có thể xem xét một sự phân chia khác. Một cách tiếp cận là có mô-đun GPL đầy đủ và đặt tất cả "IP công ty bí mật" của bạn trong trình điều khiển không gian người dùng . Đây là một cách tiếp cận tôi đã thực hiện khi công ty tôi làm việc cho không quan tâm đến việc phơi bày chi tiết của FPGA của chúng tôi với thế giới. Tất cả các quyết định và đăng ký cài đặt nơi được quyết định trong không gian người dùng và bên nhân của của trình điều khiển vừa nạp các giá trị vào IRQ. Với thiết kế cẩn thận, bạn có thể quản lý bất kỳ vấn đề thời gian thực nào bạn có thể có và có cách ly sạch đẹp giữa trình điều khiển đóng và hạt nhân của bạn. Tôi tin rằng điều này dễ dàng hơn với các hạt nhân mới hơn với sự hỗ trợ cho không gian người dùng trình điều khiển mặc dù tôi không nghĩ rằng họ hỗ trợ DMA đúng cách (tôi đã phải mã không gian người dùng DMA hạt nhân mô-đun để hỗ trợ DMA trực tiếp giữa chipset và không gian người dùng).

Tuy nhiên (một lần nữa) Tôi thực sự khuyên bạn nên xem xét số của bạn đang cố gắng bảo vệ. Trình điều khiển đóng có thể được chấp nhận cho các ứng dụng nhúng nơi bạn có quyền kiểm soát chặt chẽ phiên bản hạt nhân và phần cứng. Nhưng nếu trình điều khiển này đang được xem xét cho bất kỳ điều gì chung chung hơn (tức là bán phần cứng mọi người sẽ cắm vào hệ thống riêng của họ) sau đó đóng cửa trình điều khiển nguồn sẽ chỉ chứng minh là một nguồn đau liên tục và đau đầu bảo trì .

3

Có một ý kiến ​​được tổ chức bởi một số nhà phát triển hạt nhân chính (nhưng không phải Linus) rằng bất kỳ mô-đun không GPL nào là vi phạm giấy phép của hạt nhân.

Khi một số nhà phát triển tách trình điều khiển Belkin từ bộ định tuyến Linksys, đảo ngược thiết kế và xuất bản kết quả, Belkin không thể ngăn chặn chúng vì ngược lại đưa bản dịch giấy phép này trước tòa án như một biện pháp bảo vệ.

+0

Thú vị, bạn có nguồn trên trường hợp Belkin đó không? –

+0

Không có trường hợp nào ra tòa. – Joshua

3

Vô số trình điều khiển khác đã sử dụng "shim" nguồn mở để kết nối tệp đối tượng nguồn đóng với hạt nhân nguồn mở. Điều này được xem xét bởi hầu hết các nhà phát triển hạt nhân là một hành vi vi phạm, ít nhất là về tinh thần, của GPL.

Theo ý kiến ​​của tôi, điều đó tùy thuộc vào việc bạn có phân phối phần mềm hay không. Nếu bạn đang chạy điều này hoàn toàn trên phần mềm như một dịch vụ, điều đó nên được cho phép. Nếu bạn đang phân phối một thiết bị nhúng hoặc sản phẩm đóng hộp, đó là không có.

Di chuyển bất kỳ chức năng nào bạn cần ra khỏi hạt nhân hoặc mở nguồn thành phần hạt nhân của bạn. Đó là những gì mọi người khác (trung thực) làm, và nó không phải là khó khăn, bởi vì bất cứ ai có số lượng lớn không gian hạt nhân "sở hữu trí tuệ", hoặc có một mô hình kinh doanh xấu hoặc một đội ngũ kỹ thuật không đủ năng lực.

* ở trên là quan điểm của tôi *

+0

Mô-đun chúng tôi viết là một mô-đun thời gian thực, sử dụng mô-đun RTAI GPL. Chúng tôi sử dụng một hạt nhân rất cũ (và các công cụ RTAI cũ) vì vậy chúng tôi PHẢI tải tất cả các mã thời gian thực như là một mô-đun hạt nhân. Nếu chúng ta có thể sử dụng hạt nhân hiện đại và RTAI, chúng ta sẽ đặt tất cả phần IP vào không gian người dùng, tất nhiên là – Emiliano

+0

Với thiết kế cẩn thận, bạn có thể tách mã của bạn giữa một mô-đun hạt nhân mở và không gian người dùng. Phụ thuộc vào bao nhiêu tuổi? <2.4.18? – stsquad

Các vấn đề liên quan