Como executar o antigo software linux de 32 bits em um contêiner dentro de uma distribuição moderna de 64 bits

2

Eu preciso criar um contêiner para executar um software proprietário antigo que costumava funcionar no meu antigo computador de 32 bits com o Ubuntu 8.04. Tenho adaptado esse software em sucessivas atualizações de SO, vinculando as bibliotecas necessárias às versões modernas, mas agora chegou a um ponto em que não posso mais fazer isso (pelo menos não com facilidade).

Mas, com o Playonlinux é possível criar um container com bibliotecas especiais e um programa antigo do Windows "acreditará" que ele está dentro do Windows 3.11 e funcionará, sem saber que ele está em um mundo alienígena, um linux de 64 bits máquina em 2018 ... Se isso for possível, adaptar o meu software linux de 32 bits deve ser mais fácil se apenas um soubesse como.

Palavras como "Fakeroot" vêm à minha mente, mas não sei por onde começar.

Mesmo quando uma resposta completa não for possível, as pistas para começar são bem-vindas.

PS. Estou usando o Debian 9

    
por Mephisto 20.02.2018 / 15:53

2 respostas

2

Baseado em esta página no wiki do Ubuntu , uma abordagem para isso é rodar seu programa em um chroot Ubuntu 8.04 . Estas instruções assumem o Ubuntu ou algum outro derivado Debian (ou o próprio Debian).

  1. Instale debootstrap e schroot :

    sudo apt install debootstrap schroot
    
  2. Crie um arquivo de configuração para o Ubuntu 8.04 de 32 bits (também conhecido como Hardy Heron), denominado /etc/schroot/chroot.d/hardy_i386.conf e contendo o seguinte:

    [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
    

    (substituindo mephisto pelos nomes de usuários apropriados; vários usuários podem ser especificados usando vírgulas).

  3. Instale o 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. Comece a usar o chroot:

    schroot -c hardy_i386 -u root
    

    (isso registra você como root no chroot, o que pode ou não ser apropriado, é claro).

Por padrão, o chroot irá montar seus diretórios home, o que pode ser perigoso; se necessário, você pode desabilitar isso comentando a linha /home em /etc/schroot/mount-defaults .

    
por 20.02.2018 / 16:07
1

Uma máquina virtual (com, por exemplo, KVM ou VirtualBox ) é uma opção melhor para algo como isso do que um chroot ou um sistema de contêiner como docker ou lxc .

O Ubuntu 8.04 é antigo (2008) - muito mais antigo que o Wheezy (2013-2016), e mesmo o wheezy é muito difícil (*) para rodar em uma máquina moderna com kernels atuais e libc6 sob docker . Pode ser mais fácil em um chroot do que um contêiner, mas eu não contaria com isso.

Instalar o Ubuntu 8.04 em uma VM é trivialmente fácil. Basta baixar o instalador ISO, configurar uma VM (por exemplo, com virt-manager GUI do libvirt) e inicializar a VM usando o ISO.

Como alternativa, é possível usar várias técnicas "físicas para virtuais" para clonar uma máquina existente em uma VM. IMO, é melhor começar com uma instalação limpa e atualizada do Ubuntu 8.04 e configurá-lo especificamente para executar seu aplicativo antigo.

(*), e. mais de um ano atrás, eu tive que instalar libc6 e um monte de outras bibliotecas de jessie em um contêiner wheezy apenas para colocá-lo em execução no docker. O problema era que o host executando docker tinha sido atualizado para ter libc6 2.24, e a antiga libc6 no contêiner wheezy não funcionava com isso. Teria feito mais sentido apenas atualizar o contêiner para jessie - mas o aplicativo em que estávamos sendo executado era antigo demais para ser executado em jessie. então, eu fiz um monstruoso Frankenwheezy.

Parece que seu aplicativo pode ser um aplicativo do Windows 3.11 (ou talvez seja apenas uma analogia ... não tenho certeza) - com uma VM, talvez você nem precise executar o Ubuntu 8.04. Se for esse o caso, e se você tiver uma licença válida para uma versão adequadamente antiga do Windows (digamos, 95 ou 98 ou talvez XP. É possível obter o Windows for Workgroups 3.11 em execução no KVM). uma VM e, em seguida, instale seu aplicativo na VM.

Se você não tem uma licença válida, você pode tentar o ReactOS , um clone de Software Livre do Windows (principalmente destinado a ser compatível com o Windows Server 2003, mas pode executar software de versões anteriores do Windows). BTW, há muito crossover entre o desenvolvimento do ReactOS e o WINE.

Caso contrário, o Ubuntu 8.04 + WINE funcionaria bem em uma VM.

    
por 21.02.2018 / 03:44