Что позволяет BSD запускать двоичные файлы Linux, а не наоборот?
42
Что позволяет BSD запускать двоичные файлы Linux (и других Unix-подобных), но Linux (и большинство других Unix-подобных) по большей части не может запускать двоичные файлы BSD?
Не знаю, но ответ может иметь отношение к их лицензиям. Я полагаю, что BSD несовместим с GPL, и большинство разработчиков Linux просто не приводят аргумент BSD, который является заговорщиком.
Ответы:
55
Рыночные силы.
Существует гораздо больше программ, специально предназначенных для Linux, чем для * BSD. Большая часть исходного кода программного обеспечения достаточно портативна, чтобы его можно было скомпилировать на обоих, но многие производители программного обеспечения, поставляющие двоичные файлы Linux, не удосужились сделать это для BSD, поскольку у них меньшая доля рынка, чем у Linux, по всем направлениям. ¹
Если часть программного обеспечения доступна только в двоичном виде для другой ОС, эмуляция ABI является одним из способов ее запуска, как это делают BSD.
Давным-давно, когда x86 Unix занимал большинство на рынке Linux, в Linux была добавлена функция iBCS, позволяющая запускать двоичные файлы, созданные для SCO Unix и тому подобное. Интерес к этой функции уменьшился, так как доля рынка Linux увеличилась, так что ей было разрешено прийти в упадок во время разработки серии Linux 2.3. Судебные иски SCO помогли вывести эту функцию из Linux, но я считаю, что это вторично по отношению к потере рынка. сила, которая породила особенность.
Нет технической причины, по которой Linux не мог бы когда-нибудь получить iBCS-подобную функцию для запуска двоичных файлов BSD, но вряд ли, если рыночные позиции BSD и Linux по какой-то причине не переключатся.
Сегодня такой призыв практически отсутствует. Сколько бинарных программ для BSD вы знаете, которые также не созданы для Linux? Там должно быть несколько, но я предполагаю, что большинство из них для встроенных BSD, таких как Junos . Такая функция не будет создана, если она не позволяет запускать важный набор программ в Linux, который иначе не работал бы.
Примечания:
Я не считаю OS X здесь BSD, поскольку это отдельная проблема двоичной совместимости. FreeBSD, OpenBSD и NetBSD используют ELF на x86, тогда как OS X использует совершенно другой исполняемый формат . Динамическое связывание также сильно отличается в OS X от традиционных BSD x86.
См. Этот вопрос для получения дополнительной информации о совместимости бинарной совместимости с Linux и OS X.
Как и у некоторых видов акул , программное обеспечение, которое перестает двигаться вперед, умирает. Мы называем это явление « гнилой», а не удушья, когда это происходит с программным обеспечением, но причина и следствие одинаковы.
Контраст NDISwrapper , который позволяет Linux запускать драйверы сетевых карт только для двоичного кода, написанные для Windows XP. Потребность идентифицирована, и потребность удовлетворена. Где это нужно для запуска двоичных файлов только для BSD?
У Linux действительно есть инфраструктура для выполнения не собственных двоичных файлов через binfmt_miscмодуль, который позволяет регистрировать произвольные обработчики двоичного формата. Некоторые люди запускают приложения Mono таким образом, хотя я думаю, что это редко. Но, как вы говорите, ни у кого не было особых причин писать обработчик * BSD binfmt.
KutuluMike
Это было действительно полезно. Я просто просматривал руководства по FreeBSD (перед тем, как задавать вопрос) и говорил, что BSD может работать с кросс-* nix-файлами, а Linux - нет, но это не объясняет. Это имеет смысл, хотя, честно говоря, я ожидал большего по технической причине, а не по причине рыночных сил, но, честно говоря, кажется, что они [технические причины и популярность] гораздо более тесно связаны, чем я.
Нет времени
3
Обратите внимание, что речь идет не только о BSD. Вы видите точно такую же тенденцию во всех Unices: в свое время 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 для «интеграции».)
Йорг Миттаг
1
@ JörgWMittag Ни AIX 5L, ни HP-UX 11i на самом деле не запускают двоичные файлы Linux, не говоря уже о том, что они не поддерживают архитектуру x86. Они могут предоставить среду разработки GNU, которая упрощает сборку AIX или HP-UX из исходного кода.
Ответы:
Рыночные силы.
Существует гораздо больше программ, специально предназначенных для Linux, чем для * BSD. Большая часть исходного кода программного обеспечения достаточно портативна, чтобы его можно было скомпилировать на обоих, но многие производители программного обеспечения, поставляющие двоичные файлы Linux, не удосужились сделать это для BSD, поскольку у них меньшая доля рынка, чем у Linux, по всем направлениям. ¹
Если часть программного обеспечения доступна только в двоичном виде для другой ОС, эмуляция ABI является одним из способов ее запуска, как это делают BSD.
Давным-давно, когда x86 Unix занимал большинство на рынке Linux, в Linux была добавлена функция iBCS, позволяющая запускать двоичные файлы, созданные для SCO Unix и тому подобное. Интерес к этой функции уменьшился, так как доля рынка Linux увеличилась, так что ей было разрешено прийти в упадок во время разработки серии Linux 2.3. Судебные иски SCO помогли вывести эту функцию из Linux, но я считаю, что это вторично по отношению к потере рынка. сила, которая породила особенность.
Нет технической причины, по которой Linux не мог бы когда-нибудь получить iBCS-подобную функцию для запуска двоичных файлов BSD, но вряд ли, если рыночные позиции BSD и Linux по какой-то причине не переключатся.
Сегодня такой призыв практически отсутствует. Сколько бинарных программ для BSD вы знаете, которые также не созданы для Linux? Там должно быть несколько, но я предполагаю, что большинство из них для встроенных BSD, таких как Junos . Такая функция не будет создана, если она не позволяет запускать важный набор программ в Linux, который иначе не работал бы.
Примечания:
Я не считаю OS X здесь BSD, поскольку это отдельная проблема двоичной совместимости. FreeBSD, OpenBSD и NetBSD используют ELF на x86, тогда как OS X использует совершенно другой исполняемый формат . Динамическое связывание также сильно отличается в OS X от традиционных BSD x86.
См. Этот вопрос для получения дополнительной информации о совместимости бинарной совместимости с Linux и OS X.
FreeBSD ; OpenBSD ; NetBSD
Как и у некоторых видов акул , программное обеспечение, которое перестает двигаться вперед, умирает. Мы называем это явление « гнилой», а не удушья, когда это происходит с программным обеспечением, но причина и следствие одинаковы.
Контраст NDISwrapper , который позволяет Linux запускать драйверы сетевых карт только для двоичного кода, написанные для Windows XP. Потребность идентифицирована, и потребность удовлетворена. Где это нужно для запуска двоичных файлов только для BSD?
источник
binfmt_misc
модуль, который позволяет регистрировать произвольные обработчики двоичного формата. Некоторые люди запускают приложения Mono таким образом, хотя я думаю, что это редко. Но, как вы говорите, ни у кого не было особых причин писать обработчик * BSD binfmt.