新しいカーネルで古い Linux プログラムを実行できます。 Linux は、何らかの理由で古いバイナリを実行している人々の利益のために (少なくとも文書化されたすべてのインターフェースに対して) 後方互換性を維持しています (ソースを失ったために再コンパイルをしたくないため)。ソースがない商用ソフトウェアなど)。
古い開発ツールを使用したビルド環境、またはカーネル インターフェイスに深く入り込まないテスト環境が必要な場合でも、古いカーネルを実行する必要はなく、古いユーザーランド環境だけが必要です。このために、複雑なことは何も必要ありません。chroot で十分です。 LXC、Docker などのより高度なものは、古い (またはより新しい) ディストリビューションに独自のネットワーク構成を持たせたい場合に役立ちます。それを望まない場合は、既知の環境でソフトウェアをビルドするために Debian が正確に使用するものを使用できます (たとえば、テスト インストールを行ったマシンで Debian 安定版のソフトウェアをビルドします):schroot. 64 ビット Debian/Ubuntu で 32 ビット プログラムを実行するにはどうすればよいですか? を参照してください。 chroot での Debian または派生物の代替インストールのセットアップに関するガイドについては、
古いディストリビューションのカーネルを実行する場合は、KVM や VirtualBox などの実際の仮想マシンが必要です。 LXC などを使用した Linux-on-Linux 仮想化では、全体で同じカーネルが実行されます。
➜ codetv_static# docker run ubuntu:10.04 /bin/echo 'Howdy!'
Unable to find image 'ubuntu:10.04' locally
10.04: Pulling from library/ubuntu
a3ed95caeb02: Pull complete
86b54f4b6a4e: Pull complete
Digest: sha256:f6695b2d24dd2e1da0a79fa72459e33505da79939c13ce50e90675c32988ab64
Status: Downloaded newer image for ubuntu:10.04
Howdy!