FreeBSD

Last update: 2000/05/03

現在、FreeBSD(98)2.2.8R-Rev01 + PAO-19981225-pc98-19990117 を使用しています。 最初は、FreeBSD のバイブルとでもいうべき『FreeBSD(98) 徹底入門』(翔泳社) に付いていた FreeBSD(98)2.2.1R-RELEASE + PAO-970331-pc98-970721 でしたが、 2.2.2 → 2.2.6 → 2.2.7 とバージョンアップして、 ついに先日、2.2系最終バージョンである 2.2.8 にしました。 (最後だからと思い切ってクリアインストールしました。)
FreeBSD は、軽いしソフト(ports/package)も充実しているしでいいですね。 何といっても『UNIX』だし。

以下は、私の環境での FreeBSD の話題です。


XFree86(XFree98)

以下の件は、XFree86 3.3.5 で修正されました

PC-9821 Ls12 Aile のグラフィックチップは、 Cirrus CLGD7555 です。 このチップ用の X server(XF98_SVGA)は、 XFree86 3.3.2 から暫定サポートされたのですが、 PC-9821 Ls150(TFTモデル) では動作が確認できたのに、 なぜか Ls12(DSTNモデル) では動作しないのです。 デバイスドライバをハックするだけの技量は無いので、半分諦めて ほぼ1年ぐらいの間は、標準の X server(XF98_NEC480) を 8bpp 640x480 で使っていました。

ところが最近、 FreeBSD のメーリングリストを検索 してみると同様の問題を抱えた人がいたので、 便乗してダメ元で開発者の方に連絡をとってみました。 すると、TFTモデルで採取したレジストリ値を初期値として使っているので、 初期化を止めるとうまくいくかも、というアドバイスをいただけました。 そこで、xc/programs/Xserver/hw/xfree98/vga256/drivers/cir_pc98.c の中の init_aile() に2ヶ所ある初期化部分

     for (i=0;i<0x100;i++) {
         outb(vgaIOBase + 4,i);
         outb(vgaIOBase + 5,regs[i]);
     }
をコメントアウトしてコンパイルしました。 そして、おそるおそる xinit …。 すると画面左上に白い長方形が …。
そう動作したのです。 白い長方形は xterm です。 もう、感動してしましました。 早速、開発者の方にメールしたことはいうまでもありません。

ただし、この X server には以下のような問題点もあります。

とはいえ、16bpp 800x600 は魅力的ですので問題点には目をつぶって使っています。

後日、FreeBSD のメーリングリストを見てみると、 どうやら PC-9821 Nr13 でも同様にして動作したようです。 次の XFree86 (3.3.4?)から正式対応してくれると嬉しいですね。

※) XFree86 3.3.4 の時点で修正され、 XFree86 3.3.5 でバイナリ配布されています。 ただし、上記の問題点はそのままです。


Key Board

PC-9821 Ls12 に FreeBSD + XFree86 を導入して困ったことがありました。 X で [Alt] キーが使えないのです。 同じキーに割り当てられている [Grph] キーは使える (例えば、X の強制終了である [ESC+Grph+BS] 等) ので単に [Alt] として認識されていないだけなのですが。 [Alt] キーが使えないと多くのアプリケーションでショートカットが使えなくなって非常に不便なので、 /usr/X11R6/lib/X11/xkb/symbols/nec/jp を書き換えました。 といっても、最後の方(XFree86 3.3.3 では 167 行目)の、
         modifier_map Mod3   { Alt_L };
を、
         modifier_map Mod1   { Alt_L };
                        ↑
とするだけなのですが。

(余談ですが、いわゆる 98 キーボードは、JIS 標準の 106 キーボードと [Ctrl] と [CAPS] が反対です。 [Ctrl] を多用し [CAPS] をほとんど使わない UNIX では 98 キーボードの方が使い易いと思いますけどね。 Emacs 派の人は、[Ctrl+A](行の先頭へ) や [Ctrl+E](行の最後へ) はどうしてるのでしょう。 左手だけではかなり辛いと思うのですが。 最もアルファベットの配列自体も変だとは良く言われますけどね。 最終手段としては好きなようにキー配列を変えてしまえばいいのですが^^;。)


mailx

私は、UNIX系OS 上ではメーラとしてmailxを使用しています (いまどき mailx ? なんですが、 最初に使ったのが mailx なのと軽いのとでずっと使っています)。 mailx は、BSD の mail を SystemV に移植したものなのですが、 FreeBSD の mail は SystemV の mailx より機能が落ちます。

そこで、「誰か mailx を移植してるはず」と 検索 してみるとやはりありました。 小金丸さんという方がシステム付属の mail への patch を作成されていました。 その patch を取ってきてインストールすると、 ヘッダの編集やパイプ等必要な機能がサポートされていてうれしかったのですが、 SystemV にあるチルダエスケープコマンドの一部(~a,~i,~x など)が未サポートでした。

そこで、対応していただけたらとメールしたのですが後で反省しました。 そう、欲しい人・必要な人が作る(=『言いだしっぺの法則』)、 これが原則ですね。 原則に従って、自分で patch を作りました (オリジナルの mail のソースが読みやすかったので楽でした^^)。 その後、小金丸さんに連絡してマージしていただいて、 FreeBSD のメーリングリストと News(fj.os.bsd.freebsd) に流していただきました (感謝)。ports 化もされているようです。

mailx で readline を使う

上記の FreeBSD 用 mailx に、 readline ライブラリを組み込んでみました。
その patch ( mailx-rl.patch )です。
ファイル名の補完とヒストリが使えるので、シェルの様に使えて便利です。 FreeBSD で mail/mailx を使用している方は、ぜひお試しあれ。

tcsh

以下の件は tcsh-6.09.00 で修正されました

私は、シェルとして tcsh(6.08.03) を使っているのですが、NLS 関係で以下のような不具合があります。

  1. NLS カタログの set1(〜set4?) にあるエラーメッセージを最初に使うと、 それ以降、他の set にあるエラーメッセージの NLS が無効になる。
      例)
         % tcsh
         % cd a b
         cd: アーギュメントが多過ぎます.
         % where /
         where: / in command makes no sense
    
  2. set29 の NLS (help 機能関連)が使用できない。
最初のものは OS 依存性があるのですが、 FreeBSD では問題となるので patch を作りました。 ports 用にしてあります。 実は、この patch でも HP-UX などでは直らないのですが、 修正するためには NLS 関連を根本的に直す必要があるので、 それは tcsh の開発者にお願いしたいと思います(報告はしてあります)。
# tcsh よりも catopen(), catgets() の実装に問題があるのかもしれません。
上記の patch については ports の管理者にも報告してありますので、 そのうち対応されると思います。 (ここの patch はそれまでということで。)

※) その後、上記 patch は本家 tcsh に取り込んでいただけました。 (榊原さん感謝します) ただし、HP-UX などでは直っていません。

※) tcsh-6.09.00 で完全に修正されました。


ホームページへ このページのトップへ 新着情報 コンピュータ コラム
ダウンロード 用語集(索引) 用語集 プロフィール リンク 掲示板

このページへのお問い合わせは hsaka@mth.biglobe.ne.jp まで御願いします。