Що дозволяє BSD запускати бінарні файли Linux, а не навпаки?


42

Що дозволяє BSD запускати Linux (та інші схожі на Unix) бінарні файли, але Linux (і більшість подібних Unix здебільшого) не можуть запускати бінарні файли BSD?


Не знаю, але відповідь може мати щось спільне з їх ліцензіями. Я б міг уявити, що BSD не сумісний з GPL, і більшість Linux-розробників просто не доводять аргумент BSD до свого замовчувального слова.

Відповіді:


55

Ринкові сили.

Існує набагато більше програм, орієнтованих саме на Linux, ніж на * BSD. Багато вихідного коду програмного забезпечення є достатньо портативним, щоб його можна було компілювати на обох, але багато виробників програмного забезпечення, що постачають бінарні файли Linux, не намагаються робити це для BSD, оскільки вони мають менші частки ринку, ніж Linux, по всій стороні. ¹

Якщо частина програмного забезпечення доступна лише у двійковій формі для іншої ОС, емуляція ABI - це один із способів її запустити. Це те, що роблять BSD.

Колись, коли x86 Unix володів більшістю на ринку над Linux, функція iBCS була додана до Linux, щоб вона могла запускати бінарні файли, побудовані для SCO Unix тощо. Інтерес до цієї функції немає частка ринку Linux збільшилася, так що це було дозволено приходити в занепад в серії 2.3 розвитку Linux .³ В Ісках Шосова допомогли донести цю функцію з Linux, але я вважаю , що це вторинне по відношенню до втрати ринку сила, яка породила рису.

Немає жодної технічної причини, чому Linux одного разу не міг отримати функцію, подібну до iBCS, для запуску BSD-файлів, але це, ймовірно, якщо ринкові позиції BSD та Linux чомусь не зміняться.

Сьогодні мало заклику до такого. Скільки ви знаєте програм для BSD, призначених лише для бінарних програм, які також не створені для Linux? Має бути, але я думаю, що більшість із них призначені для вбудованих BSD, таких як Junos . Така функція не буде створена, якщо вона не дозволяє запускати важливий набір програм на Linux, який інакше не запускався.⁴


Виноски:

  1. Я не вважаю ОС X як BSD, оскільки це окрема проблема бінарної сумісності. FreeBSD, OpenBSD і NetBSD використовують ELF на x86, тоді як OS X використовує абсолютно інший виконуваний формат . Динамічний зв'язок також сильно відрізняється на OS X, ніж на традиційних BSD для x86.

    Докладніше див. У цьому питанні щодо історії бінарної сумісності Linux ⇔ OS X.

  2. FreeBSD ; OpenBSD ; NetBSD

  3. Як і у випадку з деякими видами акул , програмне забезпечення, яке перестає рухатися вперед, гине. Це явище ми називаємо біт-гнилью, а не задухою, коли це відбувається з програмним забезпеченням, але причина та наслідки однакові.

  4. Контрастний NDISwrapper , який дозволяє Linux запускати драйвери мережевих карт, призначені лише для двійкових файлів, написані для Windows XP. Потреба визначається, і потреба заповнюється. Де ця потреба запускати бінарні файли, які використовуються лише для BSD?


3
У Linux є інфраструктура для запуску ненародних бінарних файлів через binfmt_miscмодуль, що дозволяє реєструвати довільні обробники двійкових форматів. Деякі люди запускають додатки Mono таким чином, хоча я думаю, що це рідко. Але, як ви кажете, ніхто не мав багато підстав писати * BSD обробник binfmt.
KutuluMike

Це було дуже корисно. Я просто переглядав посібники FreeBSD (перед тим, як задавати питання), і говорив, що BSD може обробляти поперечні * nix бінарні файли, а Linux не міг, але це не пояснив. Це має сенс, хоча, чесно кажучи, я очікував, що більше технічної причини, а не ринкових сил є причиною, але, чесно кажучи, вони [технічні причини та популярність] набагато тісніше пов'язані, ніж я хоч.
Без часу

3
Зауважте, що справа не тільки в BSD. Ви спостерігаєте таку саму тенденцію у всіх Юнісах: з того часу Linux міг би працювати в будь-якій бінарній версії Unix: iBCS підтримує Solaris, 386BSD, FreeBSD, NetBSD, BSDI / 386, SVR4 (Interactive, Unixware, USL, Dell тощо) , SVR3 generic, SCO, SCO OpenServer 5, Wyse V / 386, Xenix V / 386, Xenix 286 та, напевно, деякі інші. Сьогодні все навпаки: усі сучасні Unices підтримують бінарні файли Linux. Є два приклади, якщо ця функція вважалася настільки важливою, що постачальник навіть поставив її в назві! (IBM AIX 5L для "Linux", HP-UX 11i для "інтеграції".)
Jörg W Mittag

1
@ JörgWMittag Ні AIX 5L, ні HP-UX 11i насправді не запускають бінарні файли Linux, не кажучи вже про те, що вони не підтримують архітектуру x86 в першу чергу. Що вони можуть надати, це середовище розробки GNU, що полегшує побудову AIX і відстежує бінарні файли HP-UX від вихідного коду.
jlliagre
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.