FreeBSD QandA 1247
Q. Linux(x86) 版の MATLAB を FreeBSD で使えますか?
(keyword: MATLAB, Linux, emulation)
A. 使えます。もちろんライセンスの問題はこれとは別に解決する必要があります。
FreeBSD 2.2.8-STABLE での例を紹介します。これ以外方法や、他の動作環境
での実績があれば QandA に報告して追加・修正して下さい。
[概略]
適当な Linux マシンに Linux(x86) 用の MATLAB をインストールし、その
ディレクトリを FreeBSD マシンが NFS マウントします。FreeBSD では、linux
エミュレーション機能によってこのディレクトリ中の MATLAB を実行します。
(試した環境は、FreeBSD が 2.2.8-STABLE、MATLAB が 5.2.1 で Linux
(Debian 2.2) マシンにインストールされ、ネットワークフローティングの
ライセンスは Solaris 2.6 が管理しているという環境です)
[手順]
Step 0.(適当なマシンに MATLAB をインストールし NFS export する)
・NFS サーバとなる Linux マシンに、Linux(x86) 版のバイナリを含めて
MATLAB をインストールし、少なくともそのマシンで使えるようにします。
・MATLAB をインストールしたディレクトリ (例えば /usr/local/matlab と
します) を、FreeBSD マシンに対して NFS export します。
Step 1.(FreeBSD マシンで linux エミュレーション機能を有効にする)
・linux_lib-2.6.1 を packages/ports からインストールします。ただし、
FreeBSD 3.3-RELEASE から linux_lib は linux_base に置き換えられた
ため、この QandA の手順では動作しないかもしれません。
・linux(8) エミュレータ・カーネルモジュールをロードします。また、
rc.conf(5) で linux_enable=YES とすればブート時に自動的に実行します。
Step 2.(MATLAB の linux(x86) 版のあるディレクトリをマウントする)
・上記の例に従って、mount -t nfs server:/usr/local/matlab /matlab
とし、ls /matlab で bin や etc 等中身が見えるようにします。server
は Linux マシンのホスト名、/matlab は予め mkdir しておきます。また、
fstab(5) に書いておくか amd(8) などを併用すれば便利でしょう。
Step 3.(FreeBSD マシンに必要な linux のライブラリを追加する)
・MATLAB の動作に不足している linux のライブラリを、/compat/linux/lib
に追加します。/compat/linux/usr/bin/ldd /matlab/bin/* などと実行し、
見付からないライブラリを MATLAB をインストールした Linux 側の /lib
からコピーすれば良いでしょう。
(ld-linux* は特に重要そうなのだが、取捨選択が私には難しい。そこで
Linux 側の /lib を全部コピーした。linux_lib が上書きされるし、必要
以上にコピーするので乱暴かも知れないが、私の場合はこれで動作した。
現状は[付録]のようになっている)
・ライブラリを追加したら /compat/linux/sbin/ldconfig を実行します。
Step 4.(MATLAB を実行する)
・例えば、/matlab/bin/matlab -lnx86 によって、MATLAB を使用できます。
更にライブラリが不足しているようなら Step 3.を繰り返します。
[使用感]
少なくとも DEMO は全て実行できます。
音も出ます。(sb なサウンドドライバで確認)
[付録]
% ls -il /compat/linux/lib
total 6031
749 -rwxr-xr-x 1 root wheel 45017 Feb 21 14:37 ld-2.0.7.so*
747 lrwxrwxrwx 1 root wheel 18 Mar 9 19:10 ld-linux.so.1@ -> ld-linux.so.1.9.10
124 -rwxr-xr-x 1 root wheel 21367 Oct 26 1996 ld-linux.so.1.7.14*
773 -rwxr-xr-x 1 root wheel 24396 Jan 14 12:23 ld-linux.so.1.9.10*
141 lrwxrwxrwx 1 root wheel 11 Mar 9 19:10 ld-linux.so.2@ -> ld-2.0.7.so
736 -rwxr-xr-x 2 root wheel 99488 Jan 14 12:23 ld.so*
125 -rwxr-xr-x 1 root wheel 24580 Oct 26 1996 ld.so.1.7.14*
736 -rwxr-xr-x 2 root wheel 99488 Jan 14 12:23 ld.so.1.9.10*
750 -rw-r--r-- 1 root wheel 2768 Feb 21 14:37 libBrokenLocale-2.0.7.so
142 lrwxrwxrwx 1 root wheel 24 Mar 9 19:10 libBrokenLocale.so.1@ -> libBrokenLocale-2.0.7.so
751 -rw-r--r-- 1 root wheel 651436 Feb 21 14:37 libc-2.0.7.so
134 lrwxrwxrwx 1 root wheel 14 Mar 9 19:10 libc.so.5@ -> libc.so.5.4.46
128 -rwxr-xr-x 1 root wheel 705995 Oct 26 1996 libc.so.5.3.12*
139 -rwxr-xr-x 1 root wheel 1861963 Apr 11 1997 libc.so.5.4.23*
819 -rw-r--r-- 1 root wheel 586732 Mar 9 11:46 libc.so.5.4.46
143 lrwxrwxrwx 1 root wheel 13 Mar 9 19:10 libc.so.6@ -> libc-2.0.7.so
724 lrwxrwxrwx 1 root wheel 17 Mar 9 19:10 libcom_err.so.2@ -> libcom_err.so.2.0
117 -rw-r--r-- 1 root wheel 4100 Feb 11 08:13 libcom_err.so.2.0
752 -rw-r--r-- 1 root wheel 150380 Feb 21 14:37 libcrypt-2.0.7.so
144 lrwxrwxrwx 1 root wheel 17 Mar 9 19:10 libcrypt.so.1@ -> libcrypt-2.0.7.so
753 -rw-r--r-- 1 root wheel 55588 Feb 21 14:37 libdb-2.0.7.so
145 lrwxrwxrwx 1 root wheel 14 Mar 9 19:10 libdb.so.2@ -> libdb-2.0.7.so
754 -rw-r--r-- 1 root wheel 6612 Feb 21 14:37 libdl-2.0.7.so
126 lrwxrwxrwx 1 root wheel 15 Mar 9 19:09 libdl.so@ -> libdl.so.1.7.14
135 lrwxrwxrwx 1 root wheel 15 Mar 9 19:10 libdl.so.1@ -> libdl.so.1.9.10
127 -rwxr-xr-x 1 root wheel 6983 Oct 26 1996 libdl.so.1.7.14*
816 -rwxr-xr-x 1 root wheel 5660 Jan 14 12:23 libdl.so.1.9.10*
146 lrwxrwxrwx 1 root wheel 14 Mar 9 19:10 libdl.so.2@ -> libdl-2.0.7.so
735 lrwxrwxrwx 1 root wheel 13 Mar 9 19:10 libe2p.so.2@ -> libe2p.so.2.3
733 -rw-r--r-- 1 root wheel 8820 Feb 11 08:13 libe2p.so.2.3
732 lrwxrwxrwx 1 root wheel 16 Mar 9 19:10 libext2fs.so.2@ -> libext2fs.so.2.4
728 -rw-r--r-- 1 root wheel 68524 Feb 11 08:13 libext2fs.so.2.4
136 lrwxrwxrwx 1 root wheel 15 Mar 9 19:09 libfbm.so@ -> libfbm.so.1.0.0
132 lrwxrwxrwx 1 root wheel 15 Mar 9 19:09 libfbm.so.1@ -> libfbm.so.1.0.0
130 -rwxr-xr-x 1 root wheel 72053 Oct 26 1996 libfbm.so.1.0.0*
755 -rw-r--r-- 1 root wheel 104192 Feb 21 14:37 libm-2.0.7.so
133 lrwxrwxrwx 1 root wheel 13 Mar 9 19:09 libm.so.5@ -> libm.so.5.0.8
129 -rwxr-xr-x 1 root wheel 36084 Oct 26 1996 libm.so.5.0.6*
138 -rwxr-xr-x 1 root wheel 76697 Apr 11 1997 libm.so.5.0.8*
157 lrwxrwxrwx 1 root wheel 13 Mar 9 19:10 libm.so.6@ -> libm-2.0.7.so
746 -rw-r--r-- 1 root wheel 242644 Oct 30 22:57 libncurses.so.3.4
741 lrwxrwxrwx 1 root wheel 17 Mar 9 19:10 libncurses.so.4@ -> libncurses.so.4.2
738 -rw-r--r-- 1 root wheel 240572 Dec 4 00:28 libncurses.so.4.2
756 -rw-r--r-- 1 root wheel 19044 Feb 21 14:37 libnsl-2.0.7.so
158 lrwxrwxrwx 1 root wheel 15 Mar 9 19:10 libnsl.so.1@ -> libnsl-2.0.7.so
757 -rw-r--r-- 1 root wheel 24660 Feb 21 14:37 libnss_compat-2.0.7.so
159 lrwxrwxrwx 1 root wheel 22 Mar 9 19:10 libnss_compat.so.1@ -> libnss_compat-2.0.7.so
758 -rw-r--r-- 1 root wheel 18096 Feb 21 14:37 libnss_db-2.0.7.so
160 lrwxrwxrwx 1 root wheel 18 Mar 9 19:10 libnss_db.so.1@ -> libnss_db-2.0.7.so
759 -rw-r--r-- 1 root wheel 9976 Feb 21 14:37 libnss_dns-2.0.7.so
161 lrwxrwxrwx 1 root wheel 19 Mar 9 19:10 libnss_dns.so.1@ -> libnss_dns-2.0.7.so
760 -rw-r--r-- 1 root wheel 30204 Feb 21 14:37 libnss_files-2.0.7.so
162 lrwxrwxrwx 1 root wheel 21 Mar 9 19:10 libnss_files.so.1@ -> libnss_files-2.0.7.so
761 -rw-r--r-- 1 root wheel 32092 Feb 21 14:37 libnss_nis-2.0.7.so
163 lrwxrwxrwx 1 root wheel 19 Mar 9 19:10 libnss_nis.so.1@ -> libnss_nis-2.0.7.so
830 lrwxrwxrwx 1 root wheel 14 Mar 9 19:10 libpam.so.0@ -> libpam.so.0.66
766 -rw-r--r-- 1 root wheel 96472 Feb 25 04:28 libpam.so.0.66
826 lrwxrwxrwx 1 root wheel 19 Mar 9 19:10 libpam_misc.so.0@ -> libpam_misc.so.0.66
814 -rw-r--r-- 1 root wheel 5516 Feb 25 04:28 libpam_misc.so.0.66
748 -rw-r--r-- 1 root wheel 31708 Feb 10 12:38 libproc.so.1.9.0
764 -rw-r--r-- 1 root wheel 49524 Feb 21 14:37 libpthread-0.7.so
164 lrwxrwxrwx 1 root wheel 17 Mar 9 19:10 libpthread.so.0@ -> libpthread-0.7.so
743 lrwxrwxrwx 1 root wheel 18 Mar 9 19:10 libreadline.so.2@ -> libreadline.so.2.1
742 -rw-r--r-- 1 root wheel 176320 Feb 17 17:56 libreadline.so.2.1
762 -rw-r--r-- 1 root wheel 45104 Feb 21 14:37 libresolv-2.0.7.so
165 lrwxrwxrwx 1 root wheel 18 Mar 9 19:10 libresolv.so.2@ -> libresolv-2.0.7.so
745 lrwxrwxrwx 1 root wheel 17 Mar 9 19:10 libslang.so.1@ -> libslang.so.1.2.2
744 -rw-r--r-- 1 root wheel 226916 Oct 16 16:58 libslang.so.1.2.2
727 lrwxrwxrwx 1 root wheel 12 Mar 9 19:10 libss.so.2@ -> libss.so.2.0
726 -rw-r--r-- 1 root wheel 13972 Feb 11 08:13 libss.so.2.0
131 lrwxrwxrwx 1 root wheel 19 Mar 9 19:09 libtermcap.so.2@ -> libtermcap.so.2.0.8
137 -rwxr-xr-x 1 root wheel 11925 Oct 26 1996 libtermcap.so.2.0.8*
763 -rw-r--r-- 1 root wheel 6692 Feb 21 14:37 libutil-2.0.7.so
140 lrwxrwxrwx 1 root wheel 16 Mar 9 19:10 libutil.so.1@ -> libutil-2.0.7.so
737 lrwxrwxrwx 1 root wheel 14 Mar 9 19:10 libuuid.so.1@ -> libuuid.so.1.2
833 -rw-r--r-- 1 root wheel 5700 Feb 11 08:13 libuuid.so.1.2
484567 drwxr-xr-x 2 root wheel 1024 Mar 8 14:24 security/
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。