Apa yang memungkinkan BSD untuk menjalankan binari Linux, tetapi tidak sebaliknya?

42

Apa yang memungkinkan BSD untuk menjalankan binari Linux (dan yang mirip Unix lainnya), tetapi Linux (dan yang mirip Unix lainnya untuk sebagian besar) tidak dapat menjalankan binari BSD?

Tidak ada waktu
sumber
Tidak tahu tetapi jawabannya mungkin ada hubungannya dengan lisensi mereka. Saya akan membayangkan BSD tidak kompatibel dengan GPL, itu dan kebanyakan pengembang Linux tidak memunculkan argumen BSD itu kata-kata yang tidak jelas.

Jawaban:

55

Kekuatan pasar.

Ada banyak lagi program yang ditargetkan khusus di Linux daripada di * BSD. Banyak kode sumber perangkat lunak yang cukup portabel sehingga dapat dikompilasi pada keduanya, tetapi banyak produsen perangkat lunak yang mengirimkan binari Linux tidak repot melakukannya untuk BSD karena mereka memiliki pangsa pasar yang lebih kecil daripada Linux, secara keseluruhan. ¹

Jika sebuah perangkat lunak hanya tersedia dalam bentuk biner untuk OS yang berbeda, emulasi ABI adalah salah satu cara untuk membuatnya berjalan, itulah yang dilakukan oleh BSD.

Sekali waktu, ketika x86 Unix memegang mayoritas pasar di atas Linux, fitur iBCS ditambahkan ke Linux untuk memungkinkannya menjalankan binari yang dibangun untuk SCO Unix dan semacamnya. Minat fitur ini menurun sebagai pangsa pasar Linux meningkat, sehingga diizinkan untuk jatuh ke dalam rusak selama Linux seri 2.3 pengembangan .³ The SCO gugatan membantu mengantar fitur ini dari Linux, tapi saya percaya itu sekunder untuk hilangnya pasar kekuatan yang melahirkan fitur.

Tidak ada alasan teknis mengapa Linux suatu hari tidak bisa mendapatkan fitur seperti iBCS untuk menjalankan binari BSD, tetapi itu tidak mungkin kecuali posisi pasar BSD dan Linux beralih karena suatu alasan.

Hari ini, ada sedikit panggilan untuk hal seperti itu. Berapa banyak program biner khusus untuk BSD yang Anda ketahui, yang juga tidak dibangun untuk Linux? Pasti ada beberapa, tapi saya kira kebanyakan dari mereka adalah untuk BSD yang tertanam, seperti Junos . Fitur seperti itu tidak akan dibuat jika tidak memungkinkan satu set program penting untuk berjalan di Linux yang tidak akan dijalankan.⁴


Catatan kaki:

  1. Saya tidak menghitung OS X sebagai BSD di sini, karena itu masalah kompatibilitas biner yang terpisah. FreeBSD, OpenBSD dan NetBSD menggunakan ELF pada x86, sedangkan OS X menggunakan format yang dapat dieksekusi yang sama sekali berbeda . Tautan dinamis juga sangat berbeda pada OS X daripada pada BSD x86 tradisional.

    Lihat pertanyaan ini untuk lebih lanjut tentang kisah kompatibilitas biner Linux ⇔ OS X.

  2. FreeBSD ; OpenBSD ; NetBSD

  3. Seperti spesies hiu tertentu , perangkat lunak yang berhenti bergerak maju akan mati. Kami menyebut fenomena ini bit-rot daripada asphyxiation ketika itu terjadi pada perangkat lunak, tetapi sebab dan akibatnya sama.

  4. Contrast NDISwrapper , yang memungkinkan Linux menjalankan driver kartu jaringan biner khusus yang ditulis untuk Windows XP. Kebutuhan diidentifikasi, dan kebutuhan dipenuhi. Di mana ini perlu menjalankan binari hanya BSD?

Warren Young
sumber
3
Linux memang memiliki infrastruktur untuk mengeksekusi binari non-asli melalui binfmt_miscmodul, yang memungkinkan Anda untuk mendaftarkan penangan format biner sewenang-wenang. Beberapa orang menjalankan aplikasi Mono dengan cara ini, meskipun saya pikir ini jarang terjadi. Tetapi seperti yang Anda katakan, tidak ada yang punya banyak alasan untuk menulis * penangan binfmt * BSD.
KutuluMike
Ini sangat membantu. Saya hanya melihat-lihat manual FreeBSD (sebelum mengajukan pertanyaan), dan dikatakan bahwa BSD dapat menangani binari cross-* nix, dan Linux tidak bisa, tetapi tidak menjelaskannya. Itu masuk akal, meskipun sejujurnya saya mengharapkan lebih dari alasan teknis, daripada kekuatan pasar yang menjadi penyebabnya, tetapi jujur ​​tampaknya mereka [alasan teknis dan popularitas] jauh lebih dekat daripada saya.
No Time
3
Perhatikan bahwa ini bukan hanya tentang BSD. Anda melihat tren yang persis sama ini di semua Unices: saat itu, Linux dapat menjalankan hampir semua biner Unix: iBCS didukung Solaris, 386BSD, FreeBSD, NetBSD, BSDI / 386, SVR4 (Interaktif, Unixware, USL, Dell dll.) , SVR3 generik, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286 dan mungkin beberapa lainnya. Saat ini, itu sebaliknya: semua Unites modern mendukung menjalankan binari Linux. Ada dua contoh jika fitur ini dianggap sangat penting sehingga vendor bahkan menyebutkannya! (IBM AIX 5L untuk "Linux", HP-UX 11i untuk "integrasi".)
Jörg W Mittag
1
@ JörgWMittag Baik AIX 5L maupun HP-UX 11i tidak benar-benar menjalankan binari Linux, belum lagi mereka tidak mendukung arsitektur x86. Apa yang mereka berikan adalah lingkungan pengembangan GNU yang memudahkan pembangunan AIX, resp binari HP-UX dari kode sumber.
jlliagre