フリーSolarisでここまでやれる! (注釈集)


  1. Free Solaris 2.6/7 のパッケージの違い

    Free Solaris 7 は、薄い、簡易包装的な紙のフォルダーに、CD-ROM 3枚と DCA のフロッピーディスクがじかに止められているだけです。
    一方、Free Solaris 2.6 の方は、しっかりした紙の化粧箱に、メディアと紙マニュアルが収められています。 CD-ROM は、ビニールカバー付きのフォルダに入っています。

    これは恐らく、Free Solaris 2.6 については製品版の Solaris 2.6 メディアセットをほぼそのまま Free版用に流用したのではないかと思います。 一方、Free Solaris 7 の方は、最初から Free Solaris 用に簡易包装されたのだと思います。

    Free Solaris のメディア代は、当初は SPARC版 Intel版各々 $10 でしたが途中で SPARC版 Intel版セットで $10 に変更されて安くなっています。(日本までの送料も安くなっています) この変更があったのは、Free Solaris 7 が出た 1998年10月27日よりも少し前からでしたが、恐らく、このタイミングで Free Solaris 7 に切り替わったのでしょう。 ということで、10月の上旬あるいは中旬に Free Solaris を申し込んだ人も、手にしたのは Free Solaris 2.6 ではなく Free Solaris 7 だったのではないかと思います。

    さて、もう今は Free Solaris 8が申し込めます。
    Solaris 8 EAの方はすでに届いていますが、こちらはビニールカバーつきの フォルダとなり、再び豪華になりました。


  2. 途中で届いた Free Solaris 7

    『フリー Solaris でここまでやれる!』の原稿は、1998年11月11日から 当初 Free Solaris 2.6 をベースにして書き始めました。ところが間もなく、17日には注文しておいた Free Solaris 7 が届きました。この時、やはり新鮮さが第一と、Free Solaris 7 ベースに乗り換えたのです。

    Solaris 8 EAの方も、原稿を書き終えたとたんに米SunでSolaris 8の 発表があり、滑り込みで文章の一部を修正したりしました。


  3. tip の使い方

    tip を使うには、普通は /etc/remote を設定しますが、環境変数 REMOTE を使うことも出来ます。この場合は /etc/remote の設定は要りません。

    私の場合、

    #!/bin/sh
    REMOTE='ttyb:br#9600:dv=/dev/ttyb:el=\n\r^c^u^d:pa=zero:'
    export REMOTE
    exec tip ttyb
    

    のようなスクリプトを用いています。


  4. Intel版のネットワークブート

    Intel版 Solaris 7 も、ネットワークブートできますが、SPARC版とは違って ok boot net と簡単には行きません。ひとつの方法として、DCA のフロッピーディスクでブートして、そのメディア選択メニューから、 [X] NET を選ぶことによってネットワークブートできます。

    なお、このように DCA からブートする場合は tftp の段階は終了していることになるので、 サーバ側では tftp の設定は要りません。 (RARP/bootparam/NFS の設定は要ります)

    また、Intel版のネットワークブートでは、本来 /usr/sbin/rpld というサーバプロセスが用いられるようで、rpld は Solaris 2.x/7 にしかありませんが、DCA を使ってブートする場合は、rpld は必要無く、このため、Solaris 2.x/7 以外のマシンでもブートサーバになれます。

    ただし、SunOS 4.x などが NFS サーバになる場合、そのデバイスファイルとして、major/minor 番号が1バイト(255まで)しか使えないという問題があります。 SPARC版ではそれでも特に支障はありませんでしたが、Intel版では 255を超える番号が使われることも多く(SCSIデバイスなど)ちょっと問題です。 しかしながら、Intel版のネットワークブート自体は 私のところでも確認出来ています。


  5. 最小限のパッケージのまとめ

    ブートのために最小限必要なパッケージは、

    SUNWcsr     --  ルートの基本パッケージ
    SUNWcar     --  /platform
    SUNWcsd     --  /dev
    SUNWcsu     --  /usr
    SUNWcsl     --  libc.so (Solaris 7 で SUNWcsu から分離)
    SUNWkvm     --  /usr/platform
    SUNWesu     --  awk など
    SUNWlibms   --  libm.so (awk がリンクしている)
    

    です。ここで、SUNWesu が必要なのは、rc スクリプト中で awk が使用されているためです。SUNWesu が無くてもエラーを出しながらも一応立ち上がります。 awklibm.so とリンクしているため、さらに SUNWlibms も最小限ブートに必要となってしまいます。

    (少なくとも、awkSUNWcsu に含めるとかした方が、パッケージとして奇麗だったのではと思います)

    実は、上記のパッケージのみでブートした場合、Key table が無いためデフォルトの英語キーとみなすとの意味の Warning が出ます。これも考慮する場合は、

    SUNWkey    -- /usr/share/lib/keytables
    

    も、最小限パッケージとして必要ということになります。

    Intel版の場合、最小限パッケージとしては上記の他にさらに、

    SUNWos86r
    SUNWos86u
    SUNWpsdcr
    SUNWpsdir
    SUNWpcmci
    

    が必要でした。SUNWpcmci は、たとえ PCMCIA を使っていなくても、このパッケージをインストールしないと 多数のエラーメッセージが出る状態になりました。


  6. FAQ: lndir コマンドが無いのですが・・

    はい。ありません。
    lndir コマンドは、X11 のソースに含まれています。X11 をインストールすると lndir コマンドができます。したがって、全く初めて X11 をインストールする場合には lndir コマンドが使えません。

    私の場合は、X11R6.4 のソースを NFS で、複数の OS で共有していて、NFS サーバの SunOS 4.1.4 上で lndir を実行しました。

    もちろんこれは、ソースを共有する上で、こうした方が便利、 というだけのものなので、これから新規に Solaris 7 上で X11R6.4 を make される方は、lndir を使わずに、ソースのディレクトリもリードオンリーにせずに、普通に make して下さい。


  7. Netscape 4.51 では、Solaris 2.5.1 用で OK

    Netscape 4.5 では、Solaris 2.5.1 用のバイナリがなぜか Xlib を静的リンクしており、今回のように X_LOCALE 付きの X11R6.4 とリンクして日本語対応するためには、Xlib が動的リンクされた Solaris 2.4 用バイナリを使う必要がありました。

    しかし、その後リリースされた Netscape 4.51 では、Solaris 2.5.1 用のバイナリも Xlib は動的リンクされていますので、これを使えます。 今現在、Netscape 4.51 も、X_LOCALEfakelocale.c と リソースを使って日本語対応を確認しています。


■ 好運だった fakelocale.c による日本語化 … そして Free Solaris の今後

Solaris 7 では、MB_CUR_MAX が定数のように見えて、 実は /usr/include/stdlib.h で、

  #define MB_CUR_MAX      __ctype[520]

と、変数になっています。このため、MB_CUR_MAX の値を fakelocale.c で強引に 1 より大きい値にすることにより、Motif からマルチバイト関係の 関数を呼んでもらえるように出来ました。 関数を呼んでもらえたので、fakelocale.cmbtowc() などの関数を wrap して、 適切な処理をしてやることにより、Netscape の TEXTAREA 等がほぼマトモに 表示されるようになったのです。

● Linux の libc5 + X_LOCALE の場合 … (Slackware, plamo など)

Solaris 7 とは違って MB_CUR_MAX が本当に定数で、MB_CUR_MAX=1 となっています。 Motif もこの状態でコンパイルされていると思われるため、 マルチバイト関係は fakelocale.c の方法ではうまく行かないと思われます。

● そして、glibc2 + wcsmbs-locale を使う RedHat 5.2J や Vine 1.1 がブレイクした…

glibc2 のソースでは、

  #define MB_CUR_MAX      (__ctype_get_mb_cur_max ())

と、関数になっています。

Linux(glibc2)では、glibc2 + wcsmbs-locale と、さらに mozillafix によって、 Netscape の日本語テキストの入力問題が、ほぼ完全に解決されました。

なんだかんだ言って、やはり Netscape がちゃんと動かないとユーザーは ついて来ないと思います。 (NEWS-OS 4.x/6.x が廃れてしまったのも、 その理由が大きいように思います) … そして、Netscape がちゃんと使える RedHat 5.2J や Vine 1.1 に、大勢のユーザーがついて来たのです。 (Free Solaris 7 は、自力で日本語対応できるパワーユーザーのみついて来た?)

ただ、RedHat 5.2J や Vine 1.1 では、Netscape 3.x が存在しないのが残念です。 (私は今でも SunOS/Solaris では Netscape 3.04 が一番使いやすい) (今からでも遅くないので、Netscape 3.04 Linux(glibc2)版を出して欲しいな) しかし、その他の点においては、現状、Linux の方がどんどん魅力的になっています。

CD-R も VMware も…

たとえば…

…と、Linux が生活上、不可欠 になってきているのです。

(自分で構築した、Free Solaris 7 の X11R6.4+X_LOCALE 環境も、CD-R に焼いて保存しましたが、それを焼くのに Linux を使いました)

(ところで、Linux kernel 2.0.36 とかだと CD-ROM のタイムゾーンのバグ があるのです。TZ=UTC で mkisofs しましょう)

だだ、Java をやるならやはり Solaris でしょう。でも、Java 自体も…

このように、往年のOSとしての安心感がある SunOS 4.1.4 と、最新のOSとしての魅力のある Linux(glibc2) の両極端に興味の対象が行くと、Solaris 2.x/7 はどっちつかずの感があるのです …

… と思っていたら …

Solaris 8ソースコード公開、 Free Solaris 8(商用・非商用)と、 変化が激しい…

… でも、SunOS 4.1.4 のソースの方も公開して欲しい …


To 『フリー Solaris でここまでやれる!』index


To 謎の処理系 SunOS 4.1.4 Home
yamamori@kt.rim.or.jp