Що дозволяє BSD запускати Linux (та інші схожі на Unix) бінарні файли, але Linux (і більшість подібних Unix здебільшого) не можуть запускати бінарні файли BSD?
Що дозволяє BSD запускати Linux (та інші схожі на Unix) бінарні файли, але Linux (і більшість подібних Unix здебільшого) не можуть запускати бінарні файли BSD?
Відповіді:
Ринкові сили.
Існує набагато більше програм, орієнтованих саме на 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, який інакше не запускався.⁴
Виноски:
Я не вважаю ОС X як BSD, оскільки це окрема проблема бінарної сумісності. FreeBSD, OpenBSD і NetBSD використовують ELF на x86, тоді як OS X використовує абсолютно інший виконуваний формат . Динамічний зв'язок також сильно відрізняється на OS X, ніж на традиційних BSD для x86.
Докладніше див. У цьому питанні щодо історії бінарної сумісності Linux ⇔ OS X.
Як і у випадку з деякими видами акул , програмне забезпечення, яке перестає рухатися вперед, гине. Це явище ми називаємо біт-гнилью, а не задухою, коли це відбувається з програмним забезпеченням, але причина та наслідки однакові.
Контрастний NDISwrapper , який дозволяє Linux запускати драйвери мережевих карт, призначені лише для двійкових файлів, написані для Windows XP. Потреба визначається, і потреба заповнюється. Де ця потреба запускати бінарні файли, які використовуються лише для BSD?
binfmt_misc
модуль, що дозволяє реєструвати довільні обробники двійкових форматів. Деякі люди запускають додатки Mono таким чином, хоча я думаю, що це рідко. Але, як ви кажете, ніхто не мав багато підстав писати * BSD обробник binfmt.