最新の64ビットディストリビューションのコンテナで既存の32ビットLinuxソフトウェアを実行する方法

最新の64ビットディストリビューションのコンテナで既存の32ビットLinuxソフトウェアを実行する方法

古い32ビットシステムでUbuntu 8.04を実行するために使用されていた古い独自のソフトウェアを実行するには、コンテナを作成する必要があります。私は必要なライブラリを最新バージョンに接続して、連続OSのアップグレードでソフトウェアを調整してきましたが、今はそれができなくなった点に達しました(少なくとも簡単ではありません)。

しかし、Playonlinuxを使用すると、特別なライブラリを含むコンテナを作成することができ、以前のWindowsプログラムはWindows 3.11にあると信じており、2018ビットシステムのLinux 64であるエイリアンの世界にいることを知らずに動作します。 ..可能であれば、誰かが私のLinux 32ビットソフトウェアを調整する方法を知っていれば、より簡単になります。

「Fakeroot」のような言葉が浮かび上がるのにどこから始めるべきかわかりません。

完全な答えが不可能であっても、手がかりを歓迎します。

PS。私はDebian 9を使用しています

答え1

に基づいてUbuntu Wikiのこのページ1つの方法は、Ubuntu 8.04 chrootでプログラムを実行することです。このガイドラインでは、Ubuntuまたは他のDebian派生物(またはDebian自体)を想定しています。

  1. インストールdebootstrapschroot

    sudo apt install debootstrap schroot
    
  2. 32ビットUbuntu 8.04(Hardy Heronとも呼ばれる)用の設定ファイルを作成し、名前を付けて、/etc/schroot/chroot.d/hardy_i386.conf次のコンテンツを含めます。

    [hardy_i386]
    description=Ubuntu 8.04 Hardy for i386
    location=/srv/chroot/hardy_i386
    personality=linux32
    root-users=mephisto
    run-setup-scripts=true
    run-exec-scripts=true
    type=directory
    users=mephisto
    

    mephisto適切なユーザー名に置き換えてください。カンマを使用して複数のユーザーを指定できます)。

  3. Ubuntu 8.04をインストールします。

    sudo mkdir -p /srv/chroot/hardy_i386
    sudo debootstrap --variant=buildd --arch=i386 hardy /srv/chroot/hardy_i386 http://old-releases.ubuntu.com/ubuntu/
    
  4. chrootを使い始める:

    schroot -c hardy_i386 -u root
    

    (これを行うと、chrootにあるかのようにログインしますがroot、これはもちろん適切でもそうでないかもしれません)。

デフォルトでは、chrootはホームディレクトリをバインドマウントするので危険です。必要に応じ/homeて、行をコメントアウトしてこの機能を無効にできます/etc/schroot/mount-defaults

答え2

仮想マシン(例:キーボード仮想マシンまたは仮想ボックスこのような場合)は、または同じコンテナシステムよりもchroot優れた選択肢です。dockerlxc

Ubuntu 8.04は古いです(2008)。 Wheezy(2013-2016)よりはるかに古く、wheezyでさえ、現在のカーネルとlibc6を持つ最新のシステムで実行するのは難しいです(*)docker。おそらく、コンテナにあるよりもコンテナにある方がchroot簡単です。しかし、私はそれを信じていません。

仮想マシンにUbuntu 8.04をインストールするのは非常に簡単です。インストーラISOをダウンロードしてVMを設定してから(たとえばlibvirtのvirt-managerGUIを使用)、ISOを使用してVMを起動します。

あるいは、さまざまな「物理仮想」テクノロジを使用して、既存のコンピュータを仮想マシンに複製することもできます。 IMO、Ubuntu 8.04を新しくインストールし、古代のアプリケーションを実行するように特別に設定するのが最善です。

(*)たとえば、1年前に、libc6とjessieの他のライブラリをdockerで実行するためにwheezyコンテナにインストールする必要がありました。問題は、実行中のホストがdockerlibc6 2.24にアップグレードされ、wheezyコンテナの以前のlibc6がそれを使用できないことです。コンテナをjessieにアップグレードする方が合理的です。ただし、コンテナで実行されているアプリケーションは、jessieで実行するには古すぎます。だから私はひどいフランケンを喘ぎました。


あなたのアプリケーションはWindows 3.11アプリケーションのようです(またはただの例ではないかもしれません...わかりません)。 VMでは、Ubuntu 8.04を実行する必要さえないかもしれません。この場合、適切な以前のバージョンのWindows(95、98、またはXP. KVM自体でWindows for Workgroups 3.11を実行することもできます)の有効なライセンスがある場合は、VMにインストールしてからVMにアプリケーションをインストールします。

有効なライセンスがない場合は試してみることができますリアクトOS、Windowsのフリーソフトウェアレプリカ(主にWindows Server 2003との互換性を目的としていますが、以前のバージョンのWindowsでソフトウェアを実行することもできます)。ところで、ReactOSとWINE開発の間には多くの交差があります。

それ以外の場合、Ubuntu 8.04+WINE は仮想マシンで正しく実行されます。

答え3

古代のLinuxディストリビューションを実行するのに非常に優れており、シンプルなファイル共有機能を備えた86boxなどのPCエミュレータを試してみてください。

関連情報