O que permite ao BSD executar binários do Linux, mas não vice-versa?
42
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?
Não sei, mas a resposta pode ter algo a ver com suas licenças. Eu imagino que o BSD não seja compatível com a GPL, que e a maioria dos desenvolvedores Linux simplesmente não trazem o argumento do BSD como uma palavra silenciosa.
Respostas:
55
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.
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?
O Linux possui a infraestrutura para executar binários não nativos por meio do binfmt_miscmó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.
precisa saber é o seguinte
Isso foi realmente útil. Eu estava olhando os manuais do FreeBSD (antes de fazer a pergunta) e dizia que o BSD pode lidar com binários cross-* nix, e o Linux não, mas não explicava. Isso faz sentido, embora honestamente eu estivesse esperando mais uma razão técnica, em vez de as forças do mercado serem a causa, mas honestamente parece que elas [razões técnicas e popularidade] estão muito mais próximas do que eu pensava.
No Time
3
Note que não se trata apenas de BSD. Você vê exatamente a mesma tendência em todos os Unices: antigamente, o Linux podia executar praticamente qualquer binário Unix: o iBCS suporta Solaris, 386BSD, FreeBSD, NetBSD, BSDI / 386, SVR4 (interativo, Unixware, USL, Dell etc.) , SVR3 genérico, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286 e provavelmente alguns outros. Atualmente, é o contrário: todos os Unices modernos suportam a execução de binários Linux. Há dois exemplos em que esse recurso foi considerado tão importante que o fornecedor o colocou no nome! (IBM AIX 5L para "Linux", HP-UX 11i para "integração".)
Jörg W Mittag
1
@ JörgWMittag Nem o AIX 5L nem o HP-UX 11i realmente executam binários Linux, para não mencionar que eles não suportam a arquitetura x86 em primeiro lugar. O que eles podem fornecer é um ambiente de desenvolvimento GNU que facilita a criação do AIX, respectivamente binários HP-UX a partir do código-fonte.
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.
FreeBSD ; OpenBSD ; NetBSD
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?
fonte
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.