최신 64비트 배포판의 컨테이너에서 기존 32비트 Linux 소프트웨어를 실행하는 방법

최신 64비트 배포판의 컨테이너에서 기존 32비트 Linux 소프트웨어를 실행하는 방법

이전 32비트 시스템에서 Ubuntu 8.04를 실행하는 데 사용된 이전 독점 소프트웨어를 실행하려면 컨테이너를 만들어야 합니다. 나는 필요한 라이브러리를 최신 버전에 연결하여 연속적인 OS 업그레이드에서 소프트웨어를 조정해 왔지만 이제는 더 이상 그렇게 할 수 없는 지점에 이르렀습니다(적어도 쉽지는 않습니다).

그러나 Playonlinux를 사용하면 특수 라이브러리가 포함된 컨테이너를 생성할 수 있으며 이전 Windows 프로그램은 Windows 3.11에 있다고 "믿고" 2018비트 시스템의 Linux 64인 외계 세계에 있다는 사실을 모른 채 작동합니다. .. 가능하다면 누군가 내 Linux 32비트 소프트웨어를 조정하는 방법을 알고 있다면 더 쉬울 것입니다.

"Fakeroot" 같은 단어가 떠오르는데 어디서부터 시작해야 할지 모르겠습니다.

완전한 답변이 불가능하더라도 단서를 환영합니다.

추신. 나는 데비안 9를 사용하고 있습니다

답변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. 우분투 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 에뮬레이터를 사용해 볼 수 있습니다.

관련 정보