如何在现代 64 位发行版的容器中运行旧的 32 位 Linux 软件

如何在现代 64 位发行版的容器中运行旧的 32 位 Linux 软件

我需要创建一个容器来运行一个旧的专有软件,该软件曾经在我的旧 32 位计算机上运行 Ubuntu 8.04。我一直在通过将所需的库链接到现代版本来在连续的操作系统升级中调整该软件,但现在它已经达到了我不能再这样做的地步(至少不容易)。

但是,使用 Playonlinux 可以创建一个带有特殊库的容器,并且旧的 Windows 程序会“相信”他在 Windows 3.11 中,并且会工作,而不知道他在一个外星世界,一台 2018 年的 Linux 64 位机器...如果可能的话,只要有人知道如何调整我的 linux 32 位软件应该会更容易。

像“Fakeroot”这样的词出现在我的脑海中,但我不知道从哪里开始。

即使不可能给出完整的答案,也欢迎提供线索。

附言。我使用的是 Debian 9

答案1

基于Ubuntu wiki 上的此页面,一种方法是在 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

虚拟机(例如,键盘虚拟机或者虚拟盒子对于这样的事情, ) 是比 a 或 像或 这样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 开始,然后专门配置它来运行您的古老应用程序。

(*) 例如,一年多前,我必须将 libc6 和 jessie 的其他一些库安装到一个 wheezy 容器中,只是为了让它在 docker 上运行。问题是运行的主机docker已升级到 libc6 2.24,而 wheezy 容器中的旧 libc6 无法使用它。将容器升级到 jessie 会更有意义 - 但我们在其中运行的应用程序太旧,无法在 jessie 中运行。所以,我做了一个可怕的弗兰肯喘息。


听起来您的应用程序可能是一个 Windows 3.11 应用程序(或者这可能只是一个类比......不确定) - 使用 VM,您甚至可能不需要运行 Ubuntu 8.04。如果是这种情况,并且您拥有适当的旧版本 Windows(例如 95 或 98 或者 XP。甚至可以让 Windows for Workgroups 3.11 本身在 KVM 中运行)的有效许可证,那么您可以将其安装到VM,然后将您的应用程序安装到 VM 中。

如果您没有有效的许可证,您可以尝试ReactOS,Windows 的自由软件克隆(主要是为了与 Windows Server 2003 兼容,但可能运行早期版本的 Windows 中的软件)。顺便说一句,ReactOS 和 WINE 开发之间有很多交叉之处。

否则 Ubuntu 8.04 + WINE 将在虚拟机中运行良好。

答案3

你可以尝试像 86box 这样的 PC 模拟器,86box 非常擅长运行古老的 Linux 发行版,并且具有简单的文件共享功能

相关内容