愚痴
FreeBSD 12になったのでIntel内蔵グラフィックスが動くかなと思い、wikiに従ってやってみました。
残念ながら、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用ファイルシステムのマウント
マウントするファイルシステムを分けて書いておきます。
## 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-files
とsysvinit-core
が部分的にconfigureされている(iF
)ことを確認。私の環境では、sysvinit-core
はiF
になっていました。
# 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/root
にmv
するだけ。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が起動します。
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
で一般ユーザになって環境変数を設定します。
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
残念。