NEC のワークステーション EWS4800(OS: UX/4800)シリーズは、 数少ない国産 UNIX の一つです。 ユーザレベルでは以下の様な特徴があります。
- 長所
- SystemV R4.2 互換 UNIX
SystemV 系、BSD 系 どちらのコマンドも使える。
/bin と /usr/bin がリンクされている。 (厳密に区別する BSD 系よりユーザレベルでは使いやすい)- 日本語対応
国産であるだけに日本語の表示や入力だけでなく、 フィルタ系コマンド(grep,sed,awk) がデフォルトで日本語対応しており、 マニュアルや NLS カタログも日本語対応している。 (FreeBSD/Linux 等は、この辺りがまだまだ)- デスクトップ環境
Motif を使った Windows95 レベルのデスクトップ環境がある。 (UNIX なので使用頻度は少ないけれど)- キーボードが PC98 と同じ。
(短所ではない! [Ctrl] を押す機会の多い UNIX では 106 キーボードは辛い)- 短所
- フリーソフトが対応していない。 gzip, gtar, tcsh, bash, perl, ghostscript, LaTeX や Tcl/Tk もない。 ブラウザもない。 (これが最大のネック。 ただし、以下の様にしてほとんど導入可能です。 有名なもので移植されていないのは top ぐらい)
- R11.* 以下ではデフォルトの X のバージョンが X11R5
(回避は可能です)- グラフィック系が PC に比べ弱い。
最新 PC のグラフィックチップに比べるとどうしても。- 先が見えない…
EWS4800 を使いやすくするためにフリーソフトを導入しましょう。 といっても初めから自分でする必要はありません。 UX/4800 Compile Memo に、ほとんどの有名なフリーソフトのコンパイルメモと patch があります。
しかし、そこに無いソフトをコンパイルする必要があるかもしれません。 そこで、以下に EWS4800 でフリーソフトをコンパイルする時に 注意すべきことがらをまとめておきました。
最近のフリーソフトは、configure スクリプトを 持っているものが増えてインストールが楽になりました。 多くの OS では、と打つだけでインストール出来る様になっていますが、 EWS4800 では問題があるものが多いです。configure make make install
まず、GNU の autoconf を用いて configure スクリプトを 作成している場合、config.guess というファイルが 付属しているのですが、このファイルが EWS4800 UX/4800 R10.0 以上に対応していないのです。 config.guess(autoconf-2.12 付属) の中に、と EWS4800 用のエントリがあるのですが、 これは UX/4800 R9.* 以下用なのです。 そこで、UX/4800 R10.0 以上では、R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)と変更します。 これで、config.guess がある場合の configure は、ほとんど通る様になります。R3000:*System_V*:*:* | R*000:UNIX_S*V:*:*) ↑ ↑
また、config.guess が無い場合で configure を実行すると、 "unknown host" の様なエラーが出る場合は、とオプションを付けて configure を実行すると大丈夫なことが多いです。configure --host=mips-nec-sysv4.2
EWS4800 は、C コンパイラを二つ持っています。 /usr/abiccs/bin/cc (ANSI C コンパイラ)と、 /usr/necccs/bin/cc (K&R C コンパイラ)です。 基本的に、/usr/necccs/bin/cc では、 ほとんどのソフトはコンパイル不可能なので /usr/abiccs/bin/cc を使う様にします。 どちらかが、/usr/bin/cc にリンクされているのですが、 /usr/necccs/bin/cc の方になっている場合(こちらの場合が多い)は、 環境変数 CC を /usr/abiccs/bin/cc にしてから configure スクリプトを実行します。また、Imakefile から xmkmf を用いて Makefile を作成する様になっている場合は、 Imakefile のマクロ定義の最後("setenv CC /usr/abiccs/bin/cc configureall:
" のある行の手前)にを加えておきます。CC = /usr/abiccs/bin/cc
もっとも gcc を使えば、この様なことは必要なくなります。
gcc ではなく /usr/abiccs/bin/cc を使う場合、 コンパイラオプションを、の様に指定します。 これはデフォルトでは最適化のリミットが小さいための処置です。 ただし、これ以上大きくしてもコンパイル時間の増大を招くだけでほとんど無意味の様です。CFLAGS = -O -KOlimit=3000
UX/4800 R11.* 以下の場合、 デフォルトの X のバージョンが X11R5 になっています。 このままでは Shape 等の機能が使えませんので X11R6 を使う様にします。として、ln -s /usr/abiccs/include/X11R6 (適当なディレクトリ)/X11CFLAGS
(等)に "-I(適当なディレクトリ)
" を付け加えます。 ライブラリは、の様に指定します。LDFLAGS = -L/usr/abiccs/lib/X11R6
EWS4800 では、ネットワーク系のライブラリ libsocket.a(so) と libnsl.a(so) が分離されています。 libX11.a(so) はこれらを必要とするので libX11.a(so) をリンクする場合は、とします。 最近のソフトの configure では自動的に対応してくれることが多いです。 Imakefile を使う場合にも自動的に付加してくれます。-lX11 -lsocket -lnsl
気が付いたら追加してゆきます。
top はシステム上のプロセス情報(CPU 使用率やメモリ使用率など)を表示するユーティリティーです。 ps コマンドに似ていますが、情報を定期的に更新させることができ、また対話的機能もあるので非常に便利です。
ところが、EWS4800 版は古い機種(CISC?)用には移植されていますが、 最近の機種では使用できません。 News Group などでも時々話題になっているようですが、誰か移植してくれないかなぁ。 システム依存の部分が多いので難しいのですが。
(実は私が一番最初に EWS4800 でコンパイルしようとしたのが、この top です。 こんな難しいものを最初にやろうとするなんて…。 でもそれぐらい必要性は高いのですが。)その後、EWS-UX R9.* 用は、ほぼ完全に動作させることは出来ました。 ただ、UX/4800 R10.*以上では難しくて(カーネルが情報持ってないみたい;_;) 中途半端なままにしていたところ、 w3m の開発者 ML で知り合った下津さんから UX/4800 R10.*〜R12.*(32bit)用の top をいただきました(ありがとうございました)。 ただ、まだちょっと不完全のようですね+_+。 ソース(patch)があれば、もうちょっと直せそうではあるのですが。 でも、カーネルのソースがないと完璧には無理だろうなぁ。 しかも、最大メモリの情報のところでカーネルにバグがありそうだし…。
(2000/05/03) 追記
top-3.5beta11 に svr42MP 用のコードが入り、これを使うことで、 UX/4800 R10.* 以上なら動作します。また、R9.* でも svr42 を使って動作します。
以下にコンパイル環境と patch を挙げておきます。・R10000(64bit), UNIX_SV 4.2MP, R13.* 以上 [patch] top-3.5beta11_R10000-UNIX_SV-4.2MP.patch [machine] svr42MP [CC] /usr/ccs64/bin/cc [owner] root:sys [mode] 2711 ・R4000(R4400), UNIX_SV 4.2MP, R10.* 以上 [patch] top-3.5beta11_R4000-UNIX_SV-4.2MP.patch [machine] svr42MP [CC] /usr/abiccs/bin/cc [owner] root:sys [mode] 2711 ・R4000, UNIX System_V 4.2, R9.* [patch] top-3.5beta11_R4000-UNIX_System_V-4.2.patch [machine] svr42 [CC] /usr/abiccs/bin/cc [owner] root:sys [mode] 4711