/etc/rc.local をよく見るとおかしいところがあります。 中央付近の /usr/etc/gtconfig の実行の部分が、
if [ -f /usr/etc/gtconfig ]; then /usr/etc/gtconfig fi |
と、インデントがおかしくなっています。
2行目は1個の TAB と1個のスペース。
3行目は1個の TAB が行頭に付いています。
これを初めて見た人は、きっと rc.local の修正作業時に、エディターでこれら gtconfig の行を誤って触ってしまったのではと思うでしょう。しかし心配はいりません。 rc.local は最初からこうなっていたのです。おそらく、SunOS4.1.4 がインストールされた世界中のマシンのほとんどが、このように rc.local のインデントがおかしい行があるまま使用していることでしょう。
エディットミスをしたのはあなたではなく、きっと SunOS4.1.4 の (あるいはそれ以前のバージョンの) rc.local を記述した Sun の担当者でしょう。
fuser という SysV 系のコマンドがあります。これは、RFS カテゴリーをインストールすると /usr/etc/fuser として存在するようになります。しかし、NFS が主流の現在では、RFS カテゴリーはインストールしないことが多いでしょう。
ところが、RFS をインストールしなくても fuser はインストールされてしまいます。fuser の実体は /usr/kvm/fuser であり、これは、kvm カテゴリーでインストールされます。さらに、 /etc/fuser -> ../usr/etc/fuser という sym-link もあり、これは root カテゴリーでインストールされます。 そして、/usr/etc/fuser は /usr/kvm/fuser への sym-link であり、RFS カテゴリーでインストールされるのはこの sym-link です。
つまり、必須の root, kvm をインストールした状態で、/etc には『切れた sym-link』が、/usr/kvm には(標準)PATH の通っていない fuser 実体があるという状態になるのです。
これは、fuser コマンドがカーネルアーキテクチャー依存のため /usr/kvm に置く必要があることと、RFS カテゴリー自体は カーネルアーキテクチャー共通でひとつだけにまとめたいということから、 仕方ないところなのでしょう。
関連して、SysV カテゴリー (/usr/5bin 等) については、なるべくシステムを洗練されたものにしたいという趣旨で、 私はインストールしていません。しかし、SysV に含まれる /usr/etc/link, /usr/etc/unlink への /etc からの sym-link が、root カテゴリーでインストールされてしまい、『切れたリンク』となってしまいます。
SunOS では、/bin はディレクトリごと /usr/bin へ、/lib もディレクトリごと /usr/lib への sym-link になっています。また、/etc は /etc 以下の個々のファイルについて、他のホストと共有可能なものは 個別に /usr/etc への sym-link になっています。
これは、NFS 推進のため、各ホスト間で共有できるものはできる限り共有したいという Sun のコンセプトのあらわれだと思います。もともとの *BSD では /bin と /usr/bin とかは別だったと思います。Linux, NetBSD 等では、現在でも /bin と /usr/bin 等は別のようです。
さて、インストールメディアの root カテゴリーのインストール時に、インストールされる sym-link では、
bin -> usr/bin (bin -> /usr/bin ではない) lib -> usr/lib (lib -> /usr/lib ではない)
と、相対 path の sym-link になっています。これは、diskless client の / パーティションをサーバー側から見たような場合にも、sym-link 先が なるべく正しくなるようにするためと思われます。
しかし、不思議なのは /sys です。
sys -> ./usr/kvm/sys (sys -> usr/kvm/sys でも sys -> /usr/kvm/sys でもない)
と、なっています。
/sys の方も、/bin, /lib と同じく 相対 path の sym-link
にはなっていますが、頭の ./
が余分です。もし、readlink
の(わずかな)オーバーヘッドを小さくしたいという意図なら、
頭の ./ を取って sys -> usr/kvm/sys
とするべきでしょう。
Solaris2.x では、逆に bin -> ./usr/bin, lib -> ./usr/lib と ./ が付く方に統一されているようです。Solaris2.x ではカーネルを make しないため /sys はありません。
工事中
工事中
工事中