O que permite ao BSD executar binários Linux (e outros similares ao Unix), mas o Linux (e outros similares ao Unix, na maior parte) não pode executar binários BSD?
O que permite ao BSD executar binários Linux (e outros similares ao Unix), mas o Linux (e outros similares ao Unix, na maior parte) não pode executar binários BSD?
Respostas:
Forças de mercado.
Existem muitos outros programas direcionados especificamente ao Linux do que ao * BSD. Muitos códigos-fonte de software são portáteis o suficiente para serem compilados em ambos, mas muitos produtores de software que entregam binários Linux não se preocupam em fazê-lo para os BSDs, pois eles têm quotas de mercado menores que o Linux em geral. ¹
Se um software estiver disponível apenas na forma binária para um sistema operacional diferente, a emulação ABI é uma maneira de executá-lo, que é o que os BSDs fazem.²
Era uma vez, quando o x86 Unix detinha a maioria do mercado em relação ao Linux, o recurso iBCS foi adicionado ao Linux para permitir a execução de binários criados para o SCO Unix e outros. O interesse nesse recurso diminuiu à medida que a participação de mercado do Linux aumentou, de forma que foi deixada em mau estado durante a série de desenvolvimento do Linux 2.3 .³ Os processos da SCO ajudaram a liberar esse recurso do Linux, mas acredito que isso é secundário à perda do mercado força que deu origem ao recurso.
Não há nenhuma razão técnica para o Linux não conseguir um dia obter um recurso semelhante ao iBCS para a execução de binários BSD, mas não é provável, a menos que as posições de mercado do BSD e Linux sejam alteradas por algum motivo.
Hoje, há poucas exigências para isso. Quantos programas binários somente para BSD você conhece, que também não foram criados para Linux? Deve haver alguns, mas eu acho que a maioria deles é para BSDs incorporados, como o Junos . Esse recurso não será criado se não permitir que um conjunto importante de programas seja executado no Linux que não seria executado de outra forma.⁴
Notas de rodapé:
Não estou contando o OS X como um BSD aqui, pois esse é um problema de compatibilidade binária separado. O FreeBSD, o OpenBSD e o NetBSD usam o ELF no x86, enquanto o OS X usa um formato executável totalmente diferente . A ligação dinâmica também é muito diferente no OS X do que nos BSDs x86 tradicionais.
Consulte esta pergunta para obter mais informações sobre a história de compatibilidade binária do Linux ⇔ OS X.
Assim como ocorre com certas espécies de tubarões , o software que para de avançar morre. Chamamos esse fenômeno de podridão de bits em vez de asfixia quando ocorre com software, mas a causa e o efeito são os mesmos.
Contraste NDISwrapper , que permite ao Linux executar drivers de placa de rede somente binários criados para o Windows XP. Uma necessidade é identificada e uma necessidade é preenchida. Onde é necessário executar binários somente BSD?
binfmt_misc
módulo, que permite registrar manipuladores de formato binário arbitrários. Algumas pessoas executam aplicativos Mono dessa maneira, embora eu ache isso raro. Mas, como você diz, ninguém teve muitos motivos para escrever um manipulador * BSD binfmt.