LoginSignup
1
1

More than 3 years have passed since last update.

収監したDevuanにPGIコンパイラをインストール

Posted at

愚痴

FreeBSD 12になったのでIntel内蔵グラフィックスが動くかなと思い、wikiに従ってやってみました。
残念ながら、panicになりnvidiaに戻しました。

妄想

FreeBSDにはLinuxバイナリ互換機能があるので、Linuxを収監(jailにインストール)したらPGIコンパイラが入るのではないか、あわよくばGPUが使えたりして...

先達

探してみると先達がいました。Systemdが問題なのでDebianでなくDevuanを使えとのこと。詳細は先達参照ですが、メモしておきます。

監獄の準備と収監

Linuxバイナリ互換機能

  • /etc/rc.conflinux_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が部分的にconfigureされている(iF)ことを確認。私の環境では、sysvinit-coreiFになっていました。

# chroot /path/to/jail /bin/bash
# dpkg --force-depends -i /var/cache/apt/archives/*.deb

PGI Community Editionのインストール

いよいよPGI Community Editionをインストールします。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

残念。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1