質問: 異なるlinux / unixカーネルは交換可能ですか? linuxカーネルを取得して、たとえばfreebsdで使用したり、その逆(たとえば、debianのfreebsdカーネル)で使用したりできますか?普遍的な答えはありますか?制限は何ですか?障害物は何ですか?
回答: いいえ、特にunixスタイルのオペレーティングシステムの異なる実装のカーネルは交換可能ではありません。特に、それらはすべてシステムの残りの部分(ユーザースペース)への異なるインターフェイス、つまりシステムコール(ioctl仕様を含む)、彼らが使用する仮想ファイルシステム...ソースレベルである程度互換性があるのは、カーネルとcライブラリの組み合わせ、またはカーネルとライブラリが公開するユーザーレベルのapi(基本的には、posixで記述されているレイヤーのビューで、 isが実際にposixであるかどうかを検討します。この例には、freebsdカーネルの上にdebianシステムを構築する debian gnu/kfreebsd と、debianシステムを構築する debian gnu/hurd が含まれます。ハード。これはカーネルの互換性のレベルではありませんが、再コンパイルを必要とせずにバイナリをさまざまなシステムで使用できるように、共通のアプリケーションバイナリインターフェイスを標準化する試みが行われてきました。 1つの例は intel binary compatibility standard です。これにより、それに準拠したバイナリを、ibcs 2レイヤーを備えた古いバージョンのlinuxを含む、それを実装する任意のunixシステムで実行できます。私はこれを90年代後半にlinuxでwordperfectを実行するために使用しました。 linux内でfreebsd chrootを構築する方法 も参照してください。