Đ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?
Đ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?
Câu trả lời:
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:
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.
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.
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?
binfmt_misc
mô-đ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.