BSDでLinuxバイナリを実行できるのはなぜですか?


42

BSDでLinux(およびその他のUnixライク)バイナリを実行できるのはなぜですか?しかし、Linux(および他のUnixライク)はBSDバイナリを実行できませんか?


わからないが、答えは彼らのライセンスと関係があるかもしれない。BSDはGPLと互換性がなく、ほとんどのLinux開発者は単にBSDの議論を口に出さないと思います。

回答:


55

市場の力。

* BSDよりも特にLinuxを対象とするプログラムが多くあります。多くのソフトウェアソースコードは、両方でコンパイルできるほど移植性がありますが、Linuxバイナリを出荷している多くのソフトウェアプロデューサーは、BSD よりも市場シェアが全体的に小さいため、BSDの場合はそうしません¹

ソフトウェアの一部が別のOSでのみバイナリ形式で利用できる場合、ABIエミュレーションはそれを実行する1つの方法です。これがBSDの機能です。²

昔々、x86 UnixがLinuxよりも市場の大半を占めていたとき、iBCS機能がLinuxに追加され、SCO Unixなど向けにビルドされたバイナリを実行できるようになりました。、Linuxの市場シェアが増加するにつれて、この機能への関心は、それが荒廃に陥るさせたのでことを、減少したのLinux 2.3開発シリーズ中にSCO訴訟は Linuxののうち、この機能をアッシャー助けたが、私はそれが市場の損失に二次的だと信じて機能を生んだ力。

LinuxがいつかBSDバイナリを実行するためのiBCSのような機能を取得できなかった技術的な理由はありませんが、何らかの理由でBSDとLinuxの市場の地位が切り替わらない限りそうではありません。

今日、そのようなことを求める声はほとんどありません。Linux用にビルドされていない、BSD用のバイナリ専用プログラムをいくつ知っていますか?いくつかあるに違いありませんが、それらのほとんどはJunosなどの組み込みBSD向けです。このような機能は、他の方法では実行されない重要なプログラムセットをLinux上で実行できない場合、作成されません。⁴


脚注:

  1. ここではOS XをBSDとしてカウントしていません。これは別のバイナリ互換性の問題だからです。FreeBSD、OpenBSD、およびNetBSDはx86でELFを使用しますが、OS Xはまったく異なる実行形式を使用します。動的なリンケージも、OS Xでは従来のx86 BSD とは大きく異なります。

    Linux⇔OS Xバイナリ互換性ストーリーの詳細については、この質問を参照してください。

  2. FreeBSD ; OpenBSD ; NetBSD

  3. 特定の種類のサメと同様に、前進を止めるソフトウェアは死にます。この現象は、ソフトウェアで発生した場合、窒息ではなくビット腐敗と呼ばれますが、原因と結果は同じです。

  4. コントラストNDISwrapperは、LinuxがWindows XP用に作成されたバイナリのみのネットワークカードドライバーを実行できるようにします。ニーズが特定され、ニーズが満たされます。BSDのみのバイナリを実行するには、これはどこで必要ですか?


3
Linuxには、binfmt_miscモジュールを介して非ネイティブバイナリを実行するインフラストラクチャがあります。これにより、任意のバイナリ形式ハンドラーを登録できます。この方法でMonoアプリケーションを実行する人もいますが、まれだと思います。しかし、あなたが言うように、* BSD binfmtハンドラーを書く理由は誰にもありません。
KutuluMike 14

これは本当に役に立ちました。(質問をする前に)FreeBSDのマニュアルをただ見ていましたが、BSDはクロス* nixバイナリを処理できると言っていましたが、Linuxはできませんでしたが、それは説明しませんでした。それは理にかなっていますが、正直なところ、市場の力が原因であるというよりも技術的な理由を期待していましたが、正直なところ、[技術的な理由と人気]は私よりもずっと密接につながっています。
時間なし14

3
BSDだけではないことに注意してください。この傾向はすべての Unicesでまったく同じです。当時、LinuxはほぼすべてのUnixバイナリを実行できました。iBCSはSolaris、386BSD、FreeBSD、NetBSD、BSDI / 386、SVR4(Interactive、Unixware、USL、Dellなど)をサポートしていました、SVR3ジェネリック、SCO、SCO OpenServer 5、Wyse V / 386、Xenix V / 386、Xenix 286およびおそらく他のいくつか。今日では、それは逆になっています。すべての最新のUnicesはLinuxバイナリの実行をサポートしています。この機能が非常に重要であると見なされたため、ベンダーがそれを名前に入れた例も2つあります。(「Linux」の場合はIBM AIX 5L、「統合」の場合はHP-UX 11i。)
ヨルグWミットタグ14

1
@JörgWMittagAIX 5LもHP-UX 11iも、実際にはLinuxバイナリを実行していません。もちろん、そもそもx86アーキテクチャをサポートしていないことは言うまでもありません。彼らが提供するのは、ソースコードからAIXとHP-UXバイナリを簡単に構築できるGNU開発環境です。
-jlliagre
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.