Co pozwala BSD na uruchamianie plików binarnych systemu Linux, ale nie odwrotnie?

42

Co pozwala BSD na uruchamianie plików binarnych Linuksa (i innych uniksopodobnych), ale Linux (i w większości innych Uniksów w większości) nie może uruchamiać plików binarnych BSD?

Brak czasu
źródło
Nie wiem, ale odpowiedź może mieć coś wspólnego z ich licencjami. Wyobrażam sobie, że BSD nie jest kompatybilne z GPL, a większość programistów Linuksa po prostu nie przywołuje argumentu BSD.

Odpowiedzi:

55

Siły rynkowe.

Istnieje wiele innych programów skierowanych specjalnie na Linuksa niż na * BSD. Wiele kodów źródłowych oprogramowania jest na tyle przenośnych, że można je skompilować na obu urządzeniach, ale wielu producentów oprogramowania, które dostarczają binaria Linuksa, nie zadaje sobie trudu, aby to zrobić dla BSD, ponieważ mają one mniejszy udział w rynku niż Linux. ¹

Jeśli oprogramowanie jest dostępne tylko w formie binarnej dla innego systemu operacyjnego, emulacja ABI jest jednym ze sposobów jego uruchomienia, co robią BSD2.

Dawno, dawno temu, kiedy x86 Unix posiadał większość rynku w stosunku do Linuksa, do systemu Linux dodano funkcję iBCS, aby umożliwić uruchamianie plików binarnych zbudowanych dla SCO Unix i tym podobnych. Zainteresowanie tą funkcją zmniejszyło się wraz ze wzrostem udziału Linuksa w rynku, więc pozwolono mu popaść w ruinę podczas serii programistycznej Linux 2.3 .³ Pozwy SCO pomogły nam wyprowadzić tę funkcję z Linuksa, ale uważam, że jest to drugorzędne znaczenie dla utraty rynku siła, która zrodziła tę funkcję.

Nie ma technicznego powodu, dla którego Linux nie mógłby kiedyś uzyskać funkcji podobnej do iBCS do uruchamiania plików binarnych BSD, ale nie jest to prawdopodobne, chyba że z jakiegoś powodu pozycja rynkowa BSD i Linux zmieni się.

Dzisiaj nie ma takiej potrzeby. Ile znasz programów binarnych dla BSD, o których nie wiesz, że są też zbudowane dla Linuksa? Musi być kilka, ale chyba większość z nich dotyczy wbudowanych BSD, takich jak Junos . Taka funkcja nie zostanie utworzona, jeśli nie pozwoli na uruchomienie ważnego zestawu programów w systemie Linux, które w innym przypadku nie byłyby uruchomione


Przypisy:

  1. Nie liczę tutaj OS X jako BSD, ponieważ jest to osobny problem z kompatybilnością binarną. FreeBSD, OpenBSD i NetBSD używają ELF na x86, podczas gdy OS X używa zupełnie innego formatu wykonywalnego . Dynamiczne powiązanie jest również bardzo różne w OS X niż w tradycyjnych BSD x86.

    Zobacz to pytanie, aby uzyskać więcej informacji na temat historii zgodności binarnej systemu Linux ⇔ OS X.

  2. FreeBSD ; OpenBSD ; NetBSD

  3. Podobnie jak w przypadku niektórych gatunków rekinów , oprogramowanie, które przestaje się poruszać, umiera. Zjawisko to nazywamy gniciem bitowym, a nie uduszeniem, gdy dzieje się to z oprogramowaniem, ale przyczyna i skutek są takie same.

  4. Kontrastuj z NDISwrapper , który pozwala Linuksowi uruchamiać tylko binarne sterowniki kart sieciowych napisane dla Windows XP. Potrzeba jest zidentyfikowana, a potrzeba jest zaspokojona. Gdzie jest taka potrzeba uruchamiania plików binarnych tylko BSD?

Warren Young
źródło
3
Linux ma infrastrukturę do wykonywania nienatywnych plików binarnych za pośrednictwem binfmt_miscmodułu, co umożliwia rejestrowanie dowolnych programów obsługi formatu binarnego. Niektóre osoby uruchamiają w ten sposób aplikacje Mono, choć myślę, że to rzadkość. Ale jak mówisz, nikt nie miał wiele powodów, aby napisać program obsługi binfmt * BSD.
KutuluMike,
To było bardzo pomocne. Właśnie przeglądałem podręczniki FreeBSD (zanim zadałem pytanie) i mówiłem, że BSD może obsługiwać pliki binarne cross-nix, a Linux nie mógł, ale to nie wyjaśniło. Ma to sens, choć szczerze mówiąc, spodziewałem się raczej powodu technicznego, niż sił rynkowych, ale szczerze mówiąc wydaje się, że [przyczyny techniczne i popularność] są znacznie bliżej powiązane niż myślałem.
No Time,
3
Pamiętaj, że nie chodzi tylko o BSD. Widzisz ten sam trend we wszystkich Uniksach: w przeszłości Linux mógł uruchamiać praktycznie każdy binarny system uniksowy: Solaris obsługuje 383BSD, FreeBSD, NetBSD, BSDI / 386, SVR4 (Interactive, Unixware, USL, Dell itp.) , SVR3 generic, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286 i prawdopodobnie kilka innych. W dzisiejszych czasach jest odwrotnie: wszystkie współczesne Unices obsługują binaria Linuksa. Istnieją dwa przykłady, w których ta funkcja została uznana za tak ważną, że sprzedawca nawet umieścił ją w nazwie! (IBM AIX 5L dla „Linux”, HP-UX 11i dla „integracji”.)
Jörg W Mittag
1
@ JörgWMittag Ani AIX 5L, ani HP-UX 11i nie obsługują plików binarnych Linuksa, nie wspominając już o tym, że nie obsługują one architektury x86. Mogą one udostępnić środowisko programistyczne GNU, które ułatwia budowanie systemu AIX lub plików binarnych HP-UX z kodu źródłowego.
jlliagre