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?
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?
Risposte:
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:
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.
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.
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?
binfmt_misc
modulo, 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.