Điều gì cho phép BSD chạy các nhị phân Linux, nhưng không phải ngược lại?


42

Điều gì cho phép BSD chạy các nhị phân Linux (và các loại giống Unix khác), nhưng Linux (và hầu hết các phần giống như Unix khác) không thể chạy các nhị phân BSD?


Không biết nhưng câu trả lời có thể có liên quan đến giấy phép của họ. Tôi sẽ tưởng tượng BSD không tương thích với GPL, và hầu hết các nhà phát triển Linux chỉ đơn giản là không đưa ra đối số BSD là một từ im lặng.

Câu trả lời:


55

Lực lượng thị trường.

Có nhiều chương trình được nhắm mục tiêu cụ thể tại Linux hơn là tại * BSD. Rất nhiều mã nguồn phần mềm có thể di động đủ để có thể được biên dịch trên cả hai, nhưng nhiều nhà sản xuất phần mềm vận chuyển nhị phân Linux không bận tâm làm điều đó cho BSD vì họ có thị phần nhỏ hơn Linux, trên bảng. ¹

Nếu một phần mềm chỉ có sẵn ở dạng nhị phân cho một HĐH khác, thì mô phỏng ABI là một cách để làm cho nó chạy, đó là những gì BSD làm.

Ngày xửa ngày xưa , khi x86 Unix chiếm đa số thị trường so với Linux, tính năng iBCS đã được thêm vào Linux để cho phép nó chạy các nhị phân được xây dựng cho SCO Unix và như vậy. Quan tâm đến tính năng này giảm do thị phần của Linux tăng, vì vậy mà nó được phép rơi vào hư hỏng trong Linux loạt 2.3 phát triển .³ Các vụ kiện SCO đã giúp mở ra tính năng này ra khỏi Linux, nhưng tôi tin rằng đó là thứ yếu so với sự mất mát của thị trường lực sinh ra tính năng.

Không có lý do kỹ thuật tại sao một ngày nào đó Linux không thể có một tính năng giống như iBCS để chạy các nhị phân BSD, nhưng không có khả năng trừ khi các vị trí thị trường của BSD và Linux chuyển đổi vì một số lý do.

Hôm nay, có rất ít cuộc gọi cho một điều như vậy. Bạn biết bao nhiêu chương trình nhị phân cho BSD, chương trình nào cũng không được xây dựng cho Linux? Phải có một số, nhưng tôi đoán hầu hết trong số chúng là dành cho các BSD nhúng, chẳng hạn như Junos . Một tính năng như vậy sẽ không được tạo nếu nó không cho phép một bộ chương trình quan trọng chạy trên Linux mà không chạy được.


Chú thích:

  1. Tôi không tính OS X là BSD ở đây, vì đó là vấn đề tương thích nhị phân riêng biệt. FreeBSD, OpenBSD và NetBSD sử dụng ELF trên x86, trong khi OS X sử dụng định dạng thực thi hoàn toàn khác . Liên kết động cũng khác biệt rất nhiều trên OS X so với trên các BSD x86 truyền thống.

    Xem câu hỏi này để biết thêm về câu chuyện tương thích nhị phân Linux ⇔ OS X.

  2. FreeBSD ; OpenBSD ; NetBSD

  3. Như với một số loài cá mập , phần mềm ngừng di chuyển về phía trước sẽ chết. Chúng tôi gọi hiện tượng này là bit-rot chứ không phải là ngạt khi xảy ra với phần mềm, nhưng nguyên nhân và kết quả là như nhau.

  4. Tương phản NDISwrapper , cho phép Linux chạy trình điều khiển card mạng chỉ nhị phân được viết cho Windows XP. Một nhu cầu được xác định, và một nhu cầu được lấp đầy. Trường hợp này cần chạy nhị phân chỉ BSD?


3
Linux có cơ sở hạ tầng để thực thi các nhị phân không bản địa thông qua binfmt_miscmô-đun, cho phép bạn đăng ký các trình xử lý định dạng nhị phân tùy ý. Một số người chạy các ứng dụng Mono theo cách này, mặc dù tôi nghĩ nó rất hiếm. Nhưng như bạn nói, không ai có nhiều lý do để viết trình xử lý binfmt * BSD.
KutuluMike

Điều này thực sự hữu ích. Tôi chỉ xem qua hướng dẫn sử dụng FreeBSD (trước khi đặt câu hỏi) và nói rằng BSD có thể xử lý các nhị phân chéo, và Linux thì không thể, nhưng nó không giải thích được. Điều đó có ý nghĩa, mặc dù thật lòng tôi đã mong đợi nhiều hơn về lý do kỹ thuật, thay vì nguyên nhân thị trường là nguyên nhân, nhưng thành thật mà nói, họ [lý do kỹ thuật và sự phổ biến] có mối liên hệ gần gũi hơn tôi nhiều.
Không có thời gian

3
Lưu ý rằng đó không chỉ là về BSD. Bạn thấy xu hướng chính xác này trên tất cả các Unice: trước đây, Linux có thể chạy khá nhiều bất kỳ nhị phân Unix nào: iBCS hỗ trợ Solaris, 386BSD, FreeBSD, NetBSD, BSDI / 386, SVR4 (Tương tác, Unixware, USL, Dell, v.v.) , SVR3 chung, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286 và có lẽ một số người khác. Ngày nay, theo một cách khác: tất cả các Unice hiện đại đều hỗ trợ chạy nhị phân Linux. Có hai ví dụ là tính năng này được coi là rất quan trọng là các nhà cung cấp thậm chí đặt nó trong tên! (IBM AIX 5L cho "Linux", HP-UX 11i cho "tích hợp".)
Jörg W Mittag

1
@ JörgWMittag Cả AIX 5L và HP-UX 11i đều không chạy các nhị phân Linux, chưa kể chúng không hỗ trợ kiến ​​trúc x86 ngay từ đầu. Những gì họ có thể cung cấp là một môi trường phát triển GNU giúp dễ dàng xây dựng AIX, tôn trọng các nhị phân HP-UX từ mã nguồn.
jlliagre
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.