Linux カーネルを 2 つのオペレーティング システム間で共有できますか?

Linux カーネルを 2 つのオペレーティング システム間で共有できますか?

非常に単純な質問です。私は、ユーザーが使いやすい環境で起動できるように、btrfs サブボリュームを使用して同じマシンに複数のオペレーティング システム (すべて Linux) をインストールするプロジェクトに取り組んでいます。これらすべてが Linux カーネルを使用しているため、単一のカーネルをコンパイルして、マシン上のすべてのオペレーティング システムで使用できますか? OS 固有のものはありますか? ある場合、OS に必要なのはカーネル モジュールだけですか、それともそれよりも深いところまでありますか?

私の現在の想定では、カーネルは OS から完全に独立しており、両方の OS のすべてのモジュールが 1 つの共有カーネルに含まれている限り、両方の OS でカーネルを共有でき、したがってカーネルに対する更新や変更を共有できるはずです。

答え1

オープンVZあなたが求めていることを正確に実行します。

互いに 100% 独立しているが、同じ変更されたカーネルを共有するコンテナを作成します。

完全仮想化と比較した唯一の欠点は、コンテナを使用するときに Linux 以外のものをインストールできないことです。

答え2

OpenVZ は優れており、コンテナ向けの安全で安定した使いやすいソリューションを提供します。ただし、Linux に組み込まれている Linux コンテナもあり、最近のカーネル リリースでは大きな進歩が遂げられています。

Linux コンテナには、lxc、vzctl (OpenVZ 製)、libvirt、docker など、使用できるユーザー スペース ユーティリティが多数あります。

Linux コンテナを使用すると、プロセス (およびユーザー名前空間を使用する場合はユーザー) を別の名前空間で実行できます。これにより、同じカーネルで別のシステムが実行されているような感覚が得られ、cgroup を使用してリソースに制限を追加できます。Linux コンテナは、Xen、Qemu/KVM、VMWare などのハードウェア仮想マシンと比較して非常に軽量です。

関連情報