
Ubuntu 14.04 (Trusty) の標準インストールを使用して、その中に、元々古いカーネルが付属していたコンテナ化された古い Ubuntu バージョンを実行することは可能ですか?
たとえば、12.04 の場合、やlinux-image
などの後続の Ubuntu リリース用のパッケージがあるため、答えは「はい」であると想定します。ただし、10.04 の場合はそうではないため、確信はありません。しかし、何を実行しても問題ないかを判断するために使用できるドキュメントはありますか?linux-image-generic-lts-saucy
linux-image-generic-lts-quantal
私が質問する理由は、カーネル インターフェイスが定期的に更新されるからです。ただし、新しいバージョンのディストリビューションを実行し、同時に以前のバージョンに基づいたビルド環境を維持することが有益な場合もあります。
答え1
古い Linux プログラムを新しいカーネルで実行できます。Linux は、何らかの理由 (再コンパイルが面倒だから、ソースを紛失したから、商用ソフトウェアなのでソースがないなど) で古いバイナリを実行しているユーザーのために、下位互換性を維持しています (少なくともすべての文書化されたインターフェイスについては)。
古い開発ツールを使ったビルド環境、あるいはカーネルインターフェースに深く関わらないテスト環境が必要な場合、古いカーネルを実行する必要はなく、古いユーザーランド環境だけで済みます。これには複雑なものは必要ありません。chrootで十分です。LXC、Docker などのより高度なツールは、古い (または新しい) ディストリビューションに独自のネットワーク設定を持たせたい場合に便利です。それが不要な場合は、Debian が既知の環境でソフトウェアをビルドするために使用するものを正確に使用できます (たとえば、テスト インストールのマシンで Debian stable 用のソフトウェアをビルドする)。シュルート。 見る64 ビットの Debian/Ubuntu で 32 ビット プログラムを実行するにはどうすればよいですか?chroot 内で Debian またはその派生製品の代替インストールを設定するためのガイド。
古いディストリビューションのカーネルを実行したい場合は、KVM や VirtualBox などの実際の仮想マシンが必要になります。LXC などを使用した Linux-on-Linux 仮想化では、全体を通じて同じカーネルが実行されます。
答え2
➜ 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!