수감한 Devuan에 PGI 컴파일러 설치

수감한 Devuan에 PGI 컴파일러 설치

2022-10-03 last update

5 minutes reading 데브안 jail PGI FreeBSD

어리석은



FreeBSD 12가 되었으므로 Intel 내장 그래픽스가 움직일까라고 생각해, 위키 에 따라 해 보았습니다.
불행히도 panic이 되어 nvidia로 돌아왔습니다.

망상



FreeBSD에는 Linux 바이너리 호환 기능가 있기 때문에 Linux를 수감 (jail에 설치)하면 PGI 컴파일러가 들어가는 것이 아닌지, 우연히 GPU를 사용할 수 있습니다 ...

앞서



찾아보면 앞서가있었습니다. Systemd가 문제이므로 Debian이 아니라 Devuan을 사용할 수 있다는 것. 자세한 내용은 앞서를 참조하지만 메모해 둡니다.

감옥 준비와 수감



Linux 바이너리 호환 기능


  • /etc/rc.conf에서 linux_enable="YES"
  • emulators/linux_base-c7 설치
  • # pkg install linux_base-c7
    

    감옥용



    루트 파일 시스템을 ZFS로 설치했기 때문에 감옥 용 파일 시스템을 준비했습니다.
    # zfs create zroot/jail
    # zfs create zroot/jail/devuan
    # zfs set mountpoint=/jail zroot/jail
    

    수감


  • sysutils/debootstrap 설치
  • Devuan 설치 (bootstrap)

  • 32비트 머신에서는 amd64가 아니라 i386로 합시다.
    # debootstrap --foreign --arch=amd64 stable /path/to/jail http://deb.devuan.org/merged/
    

    Linux용 파일 시스템 마운트



    마운트할 파일 시스템을 나누어 써 둡니다.

    /etc/fstab.devuan
    ## Mountpoints for Devuan jail
    # Dev       mountpoint        FS        Options           Dump/Check
    linprocfs   /jail/devuan/proc linprocfs rw,late 0 0
    linsysfs    /jail/devuan/sys  linsysfs  rw,late 0 0
    tmpfs       /jail/devuan/tmp  tmpfs     rw,late,mode=1777 0 0 
    

    파일 시스템을 마운트합니다.
    # mount -F /etc/fstab.devuan `pwd`/sys
    # mount -F /etc/fstab.devuan `pwd`/proc
    # mount -F /etc/fstab.devuan `pwd`/tmp
    # mount -t devfs none dev
    

    Devuan의 세계로



    패키지의 최종 조정. 오류가 발생해도 설치된 것 같습니다. base-filessysvinit-core가 부분적으로 구성되어 있는지 (iF) 확인하십시오. 내 환경에서 sysvinit-coreiF입니다.
    # chroot /path/to/jail /bin/bash
    # dpkg --force-depends -i /var/cache/apt/archives/*.deb
    

    PGI Community Edition 설치



    드디어 PGI 커뮤니티 에디션를 설치합니다. FreeBSD에서 다운로드합니다. Devuan에게 가져 오는 것은 단순히 /jail/devuan/rootmv하는 것입니다. jail 편리합니다.

    gcc 설치



    문서의 Installation Guide를 보면 gcc가 필요한 것.
    # apt install build-essential file
    

    문서에 따라 hello.c를 작성하고 실행하고 file 명령을 사용하여 파일을 확인합니다. 확실히 ELF 64-bit입니다. 감동.
    # file hello_64
    hello_64: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=f410c6f83a7043cba28009b0ddc8c597b9c9804b, not stripped
    

    PGI 설치 프로그램 실행



    디렉토리를 만들고 그 안에 펼치십시오.
    # mkdir pgi
    # cd pgi
    # tar zxvf ../pgilinux-2019-1910-x86-64.tar.gz
    
  • 있어야 하는 libncurses.so.5을 찾을 수 없습니다. LD_LIBRARY_PATH에 넣고 실행해도 동일했습니다.
  • /lib64/ld-lsb-x86-64.so.3 찾을 수 없음 오류입니다. 라이센스 관리에 사용하는 것 같습니다만, PGI Community Edition에서는 라이센스 서버는 사용하지 않기 때문에 관계없을 것 같다.

  • jail 설정



    다음 설정을 사용하면 # jail -c devuan로 시작하고 # jexec devuan /bin/bash에서 Devuan으로 들어가 bash를 시작합니다.

    /etc/jail.conf
    devuan {
        host.hostname = "devuan.jail";
        interface = lo0;
        ip4.addr = 127.0.0.5;
        path = "/jail/devuan";
        exec.start = "/etc/init.d/rc 3";
        exec.stop = "/etc/init.d/rc 0";
        persist;
    
        mount.devfs;
        mount.fstab = /etc/fstab.devuan;
    
        allow.mount;
        allow.mount.devfs;
    }
    

    일반 사용자 환경 설정


    # adduser foo에서 일반 사용자를 만들었습니다. # su foo에서 일반 사용자가 되어 환경 변수를 설정합니다.

    .bashrc
    PGI=/opt/pgi
    PATH=$PGI/linux86-64/19.10/bin:$PATH
    MANPATH=$MANPATH:$PGI/linux86-64/19.10/man
    LM_LICENSE_FILE=$PGI/license.dat
    export LM_LICENSE_FILE
    

    Fortran의 Hello World도 문제없이 작동했습니다. 그러나
    $ pgaccelinfo
    No accelerators found.
    Try pgaccelinfo -v for more information
    

    죄송합니다.