異なるLinux / Unixカーネルは互換性がありますか?


14

Linuxカーネルを使用して、たとえばFreeBSDで使用したり、その逆に使用したりできますか(DebianのFreeBSDカーネルなど)。普遍的な答えはありますか?制限は何ですか?障害物は何ですか?


5
いいえ、まったくありません。試してみて、それがどのように壊れるかを確認することをお勧めします。Linuxカーネルをはるかに古いLinuxカーネルに確実に置き換えることもできません。ただし、ユーザーランドツールの交換は間違いなく実行可能です(再コンパイルする場合)。
クサラナナンダ

3
debian.org/ports/kfreebsd-gnudebian.org/ports/hurdがあなたの興味を引くかもしれません
muru

@Kusalanandaは、ユーザーランドツールの置き換え、BSDからLinuxへの移行に苦労する場合があります。一部のBSDツールは、非BSDシステム上で構築するのが非常に困難です。 、しかしそれは非自明であることが判明しました:-/。
スティーブンキット

1
@StephenKittその逆もまた真です:-)特に、ソフトウェアが/proc他のLinux固有の機能にアクセスできることを前提とする場合。
クサラナナンダ

できることは、x86_64(linux)カーネルを取得し、それをi386 32ビットディストリビューションに強制インストールすることです(64ビットのIntel CPUと、コンパイルされた32ビットバイナリのサポートを前提としています)。この...非常によく知られているが、すぐに明らかにされていません
ラドヴァンGarabík

回答:


39

いいえ、Unixスタイルのオペレーティングシステムのさまざまな実装のカーネルは、特にシステムの残りの部分(ユーザースペース)-システムコール(ioctl仕様を含む)、使用するさまざまな仮想ファイルシステムに対して異なるインターフェイスを提供するため、互換性がありません。 ..

ソースレベルである程度互換性があるのは、カーネルとCライブラリ、またはカーネルとライブラリが公開するユーザーレベルのAPIの組み合わせです(基本的に、POSIXによって記述されるレイヤーのビューは、それはかどうかを検討している)、実際にPOSIX。この例には、FreeBSDカーネルの上にDebianシステムを構築するDebian GNU / kFreeBSDや、Hurdの上にDebianシステムを構築するDebian GNU / Hurdが含まれます。

これはカーネルの互換性のレベルではありませんが、再コンパイルを必要とせずにさまざまなシステムでバイナリを使用できるように、一般的なアプリケーションバイナリインターフェイスを標準化する試みがありました。1つの例はIntel Binary Compatibility Standardで、これに準拠するバイナリは、iBCS 2レイヤーを備えた古いバージョンのLinuxを含む、それを実装するUnixシステム上で実行できます。90年代後半にこれを使用して、LinuxでWordPerfectを実行しました。

Linux内部でFreeBSD chrootをビルドする方法もご覧ください。


1
一部の人々は持っているかなり強い意見それは同期カーネルとユーザーAPIを維持することがいかに重要であるかに:)
tonysdg

4
確かに@tonysdg、そして私を信じて、私はそれについてすべて知っている:-/。
スティーブンキット

@tonysdgリンクに見つからないページが表示されます。(それが私が行方不明の冗談でない限り?)
mbrig

1
@mbrig:昨日まで、そこにありました-ここにアーカイブされたバージョンがあります:web.archive.org/web/20171102142621/http
//…

@StephenKitt:Ouch :(すみません!!しかし、カーネルにコードが含まれていることでさえ、大きな称賛です!
-tonysdg

4

一部のカーネルにはバイナリ互換性があり、ユーザー空間プログラムと異なるABIを混在させることができます(たとえば、freebsdはある程度Linuxバイナリで動作します)-ただし、コアバイナリ(たとえば、initプログラム、モジュールローダー、デバイスドライバーセットアップツール、Cライブラリ) 、ファイルシステムのセットアップに必要なツール...)実際には、外部カーネルを使用してシステムを正常に起動するには、カーネルレベルのインターフェイスについて知る必要があります。

また、ファイルシステムには互換性が必要です。また、バイナリ互換オプションはカーネルに「ハード」にコンパイルする必要があります。カーネルモジュールとして実装されたものはすべて、モジュールローダーを実行できなかったために失敗します。

前述のように、ユーザー環境は、freebsdベースのdebianシステムのように、またはLinuxでnetbsd pkgsrcシステムをセットアップするなど、再コンパイルする意思がある場合、多少移植性が高い傾向があります(決して簡単ではありませんが、サポートされております!)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.