Cosa consente a BSD di eseguire binari Linux, ma non viceversa?


42

Cosa consente a BSD di eseguire binari Linux (e altri simili a Unix), ma Linux (e altri simili a Unix per la maggior parte) non possono eseguire binari BSD?


Non lo so, ma la risposta potrebbe avere qualcosa a che fare con le loro licenze. Immagino che BSD non sia compatibile con GPL, che e la maggior parte degli sviluppatori Linux semplicemente non fanno apparire l'argomento BSD una parola di silenzio.

Risposte:


55

Le forze di mercato.

Esistono molti più programmi specifici per Linux rispetto a * BSD. Un sacco di codice sorgente del software è abbastanza portatile da poter essere compilato su entrambi, ma molti produttori di software che distribuiscono binari Linux non si preoccupano di farlo per i BSD poiché hanno quote di mercato più piccole di Linux, su tutta la linea. ¹

Se un software è disponibile solo in forma binaria per un diverso sistema operativo, l'emulazione ABI è un modo per farlo funzionare, che è ciò che fanno i BSD.

C'era una volta, quando Unix x86 deteneva la maggioranza del mercato su Linux, la funzionalità iBCS veniva aggiunta a Linux per consentirgli di eseguire binari creati per SCO Unix e simili. L'interesse per questa funzionalità è diminuito all'aumentare della quota di mercato di Linux, per cui è stato lasciato cadere in rovina durante la serie di sviluppo di Linux 2.3 .³ Le azioni legali SCO hanno contribuito a far uscire questa funzionalità da Linux, ma credo che ciò sia secondario alla perdita del mercato forza che ha dato vita al film.

Non c'è alcun motivo tecnico per cui un giorno Linux non possa ottenere una funzione simile a iBCS per l'esecuzione di binari BSD, ma non è probabile a meno che le posizioni di mercato di BSD e Linux cambino per qualche motivo.

Oggi c'è poco appello a una cosa del genere. Di quanti programmi solo binari per BSD sei a conoscenza, che non sono creati anche per Linux? Devono essercene alcuni, ma immagino che la maggior parte di essi sia per BSD integrati, come Junos . Tale funzionalità non verrà creata se non consente l'esecuzione su Linux di un insieme importante di programmi che altrimenti non verrebbero eseguiti


Note:

  1. Non sto contando OS X come BSD qui, poiché si tratta di un problema di compatibilità binaria separato. FreeBSD, OpenBSD e NetBSD usano ELF su x86, mentre OS X usa un formato eseguibile completamente diverso . Anche il collegamento dinamico è molto diverso su OS X rispetto ai tradizionali BSD x86.

    Vedi questa domanda per ulteriori informazioni sulla storia di compatibilità binaria di Linux ⇔ OS X.

  2. FreeBSD ; OpenBSD ; NetBSD

  3. Come per alcune specie di squalo , muore il software che smette di avanzare. Chiamiamo questo fenomeno bit-rot piuttosto che asfissia quando succede al software, ma la causa e l'effetto sono gli stessi.

  4. Contrasto NDISwrapper , che consente a Linux di eseguire driver di schede di rete solo binari scritti per Windows XP. Viene identificato un bisogno e viene riempito un bisogno. Dove è necessario eseguire binari solo BSD?


3
Linux ha l'infrastruttura per eseguire binari non nativi tramite il binfmt_miscmodulo, che consente di registrare gestori di formato binario arbitrari. Alcune persone eseguono le applicazioni Mono in questo modo, anche se penso che sia raro. Ma come dici tu, nessuno ha avuto molte ragioni per scrivere un gestore binfmt * BSD.
KutuluMike

Questo è stato davvero utile. Stavo solo guardando i manuali di FreeBSD (prima di fare una domanda), e diceva che BSD può gestire binari cross-* nix e Linux non poteva, ma non lo spiegava. Ciò ha senso, anche se onestamente mi aspettavo più di una ragione tecnica, piuttosto che essere la causa delle forze di mercato, ma onestamente sembra che [ragioni tecniche e popolarità] siano molto più vicine di quanto pensassi.
No Time

3
Nota che non si tratta solo di BSD. Vedi esattamente la stessa tendenza in tutti gli Unices: nel passato Linux poteva eseguire praticamente qualsiasi binario Unix: iBCS supportava Solaris, 386BSD, FreeBSD, NetBSD, BSDI / 386, SVR4 (Interactive, Unixware, USL, Dell ecc.) , SVR3 generico, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286 e probabilmente alcuni altri. Oggi è il contrario: tutti i moderni Unices supportano l'esecuzione di binari Linux. Ci sono due esempi in cui questa funzione è stata ritenuta così importante che il venditore l'ha persino inserita nel nome! (IBM AIX 5L per "Linux", HP-UX 11i per "integrazione".)
Jörg W Mittag,

1
@ JörgWMittag Né AIX 5L né HP-UX 11i eseguono binari Linux, per non parlare del fatto che non supportano l'architettura x86. Ciò che potrebbero fornire è un ambiente di sviluppo GNU che facilita la creazione di file binari AIX, rispetto a HP-UX dal codice sorgente.
jlliagre,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.