UNIX / Linuxシステムでカーネルを変更することは可能ですか?


16

たとえば、FedoraのLinuxカーネルをFreeBSDのカーネルに置き換えるなど、カーネルを変更できるかどうかを知りたかったのです。

現在、すでにDebian GNU / kFreeBSDが存在しています。LinuxディストリビューションをカスタマイズしてBSDカーネルを含めることはできますか?


3
MacOSXは、POSIXに完全に準拠したBSDベースのカーネルです。また、Unixシステムではないと主張するLinuxとは異なり、OSXはUnixシステムです(Unix商標を所有するThe Open Groupによって認定されています)。MacでLinuxアプリを実行することはできません。また、Intel CPU(まあ、
厳密には

回答:


21

いいえ、各カーネルは独自の方法で独自の機能を実装しています。大量のPOSIX互換性がありますが、そこから抜け出した後は、実行可能ファイルをカーネルメカニズムを使用してコンパイルする必要があります。多くのプロジェクトには、FreeBSDまたはLinux用にコンパイルしていると明示的に言った場合にのみコンパイルされるソースコードが含まれています。それは基本的にkFreeBSDです。ツールはFreeBSDカーネルをサポートしていますが、そのためにコンパイルする必要があります。

たとえば、epoll_createFreeBSDで使用しようとすると、期待どおりに動作しません。

もちろん、BSDシステムのLFSスタイルからツールをクロスコンパイルできますが、それは永遠にかかるでしょう。新しいカーネルをコンパイルするだけでは簡単ではありません。


1
MOOLカーネルについてのあなたの意見を聞きたいのですが、それを適応させるOSであるBOSS linuxが既にあります。
スリハルシャチラカパティ16

それが何から来るかを見るのは面白いでしょうが、私はそれについて知的なことを言うほど十分に調べていません。
ブラッチリー

1
つまり、GNUユーザーランドベースのBSDシステムを作成したい場合、BSDカーネル用のすべてのGNUソフトウェアを再コンパイルする必要があります。私は正しいですか?
スイッチ

1
Linux-ismを利用するものはほとんどすべてです。kFreeBSDから始めてそこから進むのが簡単かもしれません。
ブラッチリー16

16

FreeBSDはLinuxカーネルを使用しません-その名前が示すように、BSDカーネルを使用します。

Linuxカーネルを別のLinuxカーネル(自分で作成したカーネルまたはディストリビューションから抽出したカーネル)に置き換えることができます。ディストリビューション内のユーザー空間プログラムは、コンパイルされる特定のカーネル機能に依存している可能性があり、それらの機能なしでビルドされたカーネルで実行すると適切に動作しない可能性があることに注意してください。たとえば、systemdベースのディストリビューションでは、カーネルにcgroupが必要です。

あなたが言及した例では、はい、GNUディストリビューションはLinuxカーネルまたはBSDカーネル用にビルドできます。多くの場合、#ifdefカーネルが同じABIをアドバタイズする場合でも、2つのためにコンパイルされたプログラム間にコンパイル時の違い(例:)があります。少なくとも、Cランタイムライブラリなどの低レベルライブラリは、異なるカーネルABIに対応する必要があります。


Cランタイムライブラリの変更に言及するためにブーストします。
ジョシュア

2

カーネルは独立した部分であり、オペレーティングシステムの更新中に定期的に交換されます。一部のプロプライエタリドライバー(NVIDIAなど)には、ドライバーをカーネルソースにパッチし、そのカーネルをビルドし、現在のカーネルをそれに置き換えるインストールスクリプトがあります。したがって、必要なすべての機能を実行できる独自のカーネルバージョンを開発する場合、それを植え付けて残りのオペレーティングシステムをそのままにしておくことは大きな問題にはなりません。ただし、ほとんどの場合、このような「新しいカーネル」は最近の公式バージョンから派生しています。

Solarisカーネルはある程度この方法で移植されており、OpenSolarisがGnome環境を実行しています。

それでも、インターフェイスをブリッジする必要があるため、まったく異なるカーネルを配置することは大きな努力です。これには、多くのCプログラミングが必要になる可能性が高く、ビルドスクリプトだけではありません。

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