Что позволяет BSD запускать двоичные файлы Linux (и других Unix-подобных), но Linux (и большинство других Unix-подобных) по большей части не может запускать двоичные файлы BSD?
Что позволяет BSD запускать двоичные файлы Linux (и других Unix-подобных), но Linux (и большинство других Unix-подобных) по большей части не может запускать двоичные файлы BSD?
Ответы:
Рыночные силы.
Существует гораздо больше программ, специально предназначенных для 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?
binfmt_misc
модуль, который позволяет регистрировать произвольные обработчики двоичного формата. Некоторые люди запускают приложения Mono таким образом, хотя я думаю, что это редко. Но, как вы говорите, ни у кого не было особых причин писать обработчик * BSD binfmt.