いしじまだい / ソフトウェア / bsdfilerのページ

UNIX母艦化計画 その1
BSD Filer v0.2 -- BSD UNIX を
HP 100/200LXの Filerサーバに

Copyright (C) 1996 by Dai ISHIJIMA


v0.0のドキュメントへ, v0.1のドキュメントへ, LX Filerの目次へ

The BSD Filer is a program that let you connect your palmtop PC to a BSD box. It emulates the server mode of Filer on the HP 100/200LX palmtop PC. You can manage files on a BSD box from your LX via serial cable, IR connection is also available.

This program currently works on the BSD UN*X (for example, FreeBSD 2.x, SunOS 4.1.x and NEWS-OS 4.x). Other UNIX operating system version is under construction. (You can also compile this program on the Solaris 2.x and the IRIX 5.3 :-).


|はじめに| |このプログラムでできること| |動作環境| |アーカイブに含まれるファイル| |コンパイル方法| |使用方法| |トラブルシューティング| |制限事項| |おことわり| |謝辞| |参考文献| |改編の記録|

☆ はじめに

HP 100/200LX (以下LX) は、優れたPIMを搭載した手のひらサイズのIBM PC/ XT互換機です。単体でも十分に使える素晴らしいパームトップコンピュータで すが、その性能をいかんなく発揮するためにはパートナーとなる計算機が欠か せません。特に、ファイルのバックアップをしたい場合や大量のデータを入力 する時には、その必要性を感じるでしょう。

これまで、LXの母艦となる計算機といえばConnectivity PackやLapLinkなど のリモートリンクソフトが動くパソコンなどに限られていました。このプログ ラムはそれらのパソコンに限らず、優れた開発環境で知られるBSD UNIX (以下 BSD) が動いているパソコンやワークステーションを LXの良きパートナーとす るための最初のステップです。

このプログラムは、LXの内蔵アプリケーションの一つである Filerのサーバ モードをエミュレートし、BSD が動いている計算機にもう一台の LX あるいは Connectivity Packが動いているAT互換機のフリをさせます。Filerからの操作 で、簡単にBSDからファイルをコピーしたり、逆にLXのファイルをBSDにコピー することを可能にします。

また、このプログラムを使って BSDとファイルのやりとりをする場合、LX側 では内蔵アプリケーションであるFilerを使うので、あらたに何かを LXにイン ストールする必要はありません。 つまり、このプログラムは、メモリや2次記 憶装置の容量に制限の多いLXに負担をかけないのです。

☆ このプログラムでできること

LXの Filerにはリモート接続の機能が用意されています。これを使うと、赤 外線ポートやシリアルケーブルを介して、もう一台の LXやConnectivity Pack が動いているAT互換機とのファイルのやりとりが可能になります。

このとき、 接続要求を受け取ったLX (あるいは AT互換機) はサーバになり ます。サーバ側では (サーバモードを終了する以外には) 何もできませんが、 クライアントであるもう一台のLXからは、サーバ側のファイルもまるで手元に あるかのように操作することが可能となります。

このプログラムは、このFilerのサーバモードの真似をして、BSDのファイル をクライアントであるLXから操作することを可能にします。今回のバージョン では、LXから以下の操作ができます。

☆ 動作環境

このプログラムそのものは FreeBSD 2.x や SunOS 4.1.x, NEWS-OS 4.xなど、 BSD上で動きます。LX では動きません。動作テストは以下の機種で行いました。 また、動作確認はしていませんが、以下の環境でコンパイルできることを確 認しています。

☆ アーカイブファイルに含まれるファイル

アーカイブファイル bsdfil02.lzh には、 が含まれています。サフィックス ".lzh" からわかるように、このアーカイブ ファイルは UNIX版 LHa (lha(1)) で作成されています。 アーカイブ内の日本 語コードはシフトJIS、改行コードは CR + LFになっていますので、BSDで解凍 する場合は、't' あるいは 'et' modifierをつけてください。
    操作例
        BSDで利用している日本語コードが SJISの場合
        % lha xt bsdfil02.lzh

        BSDで利用している日本語コードが EUCの場合
        % lha xet bsdfil02.lzh
DOSで解凍する場合は、普通に解凍してください。また、DOSで解凍したファイ ルを BSDに転送する場合は、日本語コードや改行コードに注意してください。

☆ コンパイル方法

まず、適当なディレクトリでアーカイブファイル bsdfil02.lzh を解凍しま す。つぎに、使用環境にあわせて makefileを編集後、make(1)でコンパイルし ます。ここではアーカイブファイルが /tmp にあり、ホームディレクトリの下 の bsdfiler でコンパイルする例を示します。
    操作例
        % mkdir ~/bsdfiler
        % cd ~/bsdfiler
        % lha xet /tmp/bsdfil02.lzh
        % vi makefile
        % make
なお、SunOS 4.1.xでコンパイルする場合は makefileの
        #CC=gcc
        #MACHINEDEPS=-DSUNOS41X -DNEEDVFSH      # for SunOS 4.1.x
の行頭の '#' を、NEWS-OS 4.xでコンパイルする場合は、
        #CC=gcc
        #MACHINEDEPS=-DNEWSOS4X -DNEEDVFSH      # for NEWS-OS 4.x
の行頭の '#' をそれぞれはずしてください。FreeBSDの場合は、makefileを編 集する必要はありません。

☆ 使用方法

まず、空いている (getty(8) などが占有していない) シリアルポートに LX を接続してください。接続できたら、転送したいファイルのあるディレクトリ に移動し、このプログラムを起動します。起動時のオプションとして、LXを接 続したシリアルポートを指定してください。シリアルポートのデバイスファイ ルは、FreeBSD では /dev/ttyd0 (COM1:), /dev/ttyd1 (COM2:)、SunOS 4.1.x では /dev/ttya, /dev/ttyb、 NEWS-OS 4.x では /dev/tty00, /dev/tty01 な どです。
    操作例 (/dev/ttyd0 に LXをつないだ場合)
        % cd test-for-lx
        % ~/bsdfiler/bsdfiler /dev/ttyd0
シリアルの速度をデフォルトの 9600bpsから変更する場合は、
        % ~/bsdfiler/bsdfiler -38400 /dev/ttyd0
のように、速度 (この例では 38400bps) を指定してください。 起動できたら、LX で Filer を動かし、通信条件を設定後に接続します。
    操作例 (9600bps で接続する場合)
        FILER → MENU → Communications → Remote Settings...
           Baud を 9600, Interface を Com1 に設定 → OK {F10}
        Connect {F10} → Remote {F6}
接続できたら、LXどうし、あるいは Connectivity Packにつないでいる時と同 様に操作してください。このバージョンでは、LX から次の操作ができます。 ただし、Delete {DEL}では、ファイルの削除を行わず ".BAK" サフィックスを つけてLXから見えないようにしています。

このプログラムは、クライアント側から接続解除要求を受けると終了します。 つまり、終了するには LX側で Disconn {F10} を押します。

☆ トラブルシューティング

Q: makeすると、次のようなエラーがでてコンパイルできません。

        % make
         main.cDEBUG
        : No such file or directory
        cc: No input files specified
        *** Error code 1

        Stop.

A: 改行コードが CR + LF になっているのが原因だと考えられます。lha(1)
   で解凍するときに 't' modifier をつけてください。
   あるいは、解凍したファイルがあるディレクトリで、

    操作例 (シェルが tcsh の場合)
        % foreach i (*)
        foreach? mv $i $i.bak
        foreach? tr -d '\015' < $i.bak > $i
        foreach? end

   のようにして改行コードを CR + LFから LFに変更後、makeしてください。

Q: bsdfilerを動かそうとすると、can't open /dev/ttyd0 のようなエラーが
   でて動きません。
A: そのシリアルポートに対するアクセス権限がないのが原因だと考えられま
   す。chmod(1)を使って、そのポートに読み書きできるように設定してくだ
   さい。

    操作例
        % ls -l /dev/ttyd0
        crw-------  1 root  wheel   28,   0 May 19 21:17 /dev/ttyd0
        % su
        # chmod 666 /dev/ttyd0
        # exit
        % ls -l /dev/ttyd0
        crw-rw-rw-  1 root  wheel   28,   0 May 19 21:17 /dev/ttyd0

     また、そのポートで getty(8) などが動いているかもしれません。この
   場合は /etc/ttys (ttys(5)) を編集して kill -HUP 1 で gettyを止めて
   ください。

Q: bsdfiler は起動したのに、LXでConnect {F10}を押しても接続されません。
A: まず、シリアルポートの速度といった通信条件がBSDとLXで一致しているか
   を確認してください。また、BSDでgetty(8)を動かし、DataCommを使ってLX
   からBSDにログインできることを確認してください。

Q: ttys(5) や getty(8) の設定が面倒です。もっと楽にシリアルポートの接
   続を確認する方法はありませんか。
A: まず、LXでDataCommを動かします。つぎにBSDからecho(1) を使ってシリア
   ルポートに文字列を書き込んでください。書き込んだ文字列が DataCommの
   画面に表示されれば、シリアルポートの接続はまず大丈夫でしょう。

    操作例 (FreeBSDの場合)
        % stty -f /dev/ttyid0 9600 cs8 clocal -crtscts hupcl
        % stty -f /dev/ttyd0 9600 cs8 clocal -crtscts hupcl
        % echo "Can you hear me?" > /dev/ttyd0

Q: 起動時にシリアルポートの指定を忘れたら、ctrl-C や ctrl-Z を押しても
   止まりません。
A: 他の端末から kill(1)を使って殺してください。あるいはキーボードから

        ctrl-V  ctrl-V  ctrl-V  ctrl-P  ctrl-B  ctrl-A  
        A  ctrl-@  ctrl-A  ctrl-B  ctrl-P  ctrl-C  -  DEL

   の14文字を入力してください。

☆ 制限事項

このプログラムには、以下の制限があります。 また、サーバが非力なマシンや重い負荷がかかっているマシンの場合、通信エ ラーがでることがあります。その場合は、シリアルの速度をデフォルトの9600 bpsから 4800bpsや 2400bpsに落してください。

それから、このプログラムにはまだいろいろなバグが残っています。

これ以外にもあるかもしれません (^^;;;)。

なお、リモート接続中に他のアプリケーション (たとえばMemo) を起動し、 それからFilerに戻った場合、Remote Connection Broken というエラーが出て 再接続できないことがありますが、これはLXと Connectivity Packの組合せで も発生します。他のアプリケーションを動かす場合は、いったん Filerを終了 してからにしたほうがいいようです。

☆ おことわり

このプログラムは (狭義の) フリーソフトウェアです。パブリックドメイン ソフトウェア (PDS)、シェアウェアではありません。このプログラムの著作権 は、作者である いしじま☆だい が所有してい ます。

このプログラムの運用によって生じた結果については一切責任を負いかねま すのでご了承ください。使用前には LX、BSDともにディスクのバックアップを とったほうがいいかもしれません。

このプログラムの全部、または一部をそのまま利用して商用目的のプログラ ムを作成することはご遠慮ください。

フリーソフトウェアの作成や個人的な範囲での利用が目的の場合は、このプ ログラムの全部、または一部をそのまま利用してもかまいません。他機種への 移植や他のオペレーティングシステムへの移植およびフリーソフトウェアとし ての公開は大歓迎です。その場合、作者への連絡は不要です。 (でも、報告し てくれたり、ドキュメントに一筆書いてくれたり、さらには、そのソフトのソ ースを公開してもらえると非常にうれしいです。)

このプログラムを再配布する場合は、アーカイブファイル bsdfil02.lzh に 含まれるすべてのファイルを変更せずにそのまま配布してください。再配布す る場合は電子メイルなどでご連絡いただけるとありがたいです。

☆ 謝辞

このプログラムの最初の版である BSD Filer version 0.0 を Windows NTに移植し、 公開してくださった 伊藤 栄一郎 (GHC02331@niftyserve.or.jp) さん、 そして、このプログラムを他 のUNIXに移植した、あるいは移植にトライしている NIFTY-Serve FHPPC のみなさんに感謝します。

Sun SPARCstation, Sony NEWS, SGI Indy 他でのコンパイルに関して、いろ いろとアドバイスしてくれた 京都工芸繊維大学太田勝巳さん、 夏コミ本編集 会議にて「xmkmf -a; make か ./Configure; make 一発で、どの UNIX でも動 くようにしよう」と圧力をかけて^H^H^H^H^H^H提案してくれた "かふぇ・ぱらだいす" & "うちゅーせーはProject" のみなさんに感謝します。

☆ 参考文献

☆ 改編の記録

  96/06/12: BSDFIL00.LZH を NIFTY-Serve FHPPC LIB(8) #550 に登録
  96/07/31: BSDFIL01.LZH を NIFTY-Serve FHPPC LIB(8) #575 に登録
    v0.0 → v0.1 の変更点
      ・カレントディレクトリの変更やファイルの表示など、version 0.0 で
        サポートされていなかった機能を追加
      ・コマンドラインオプションでシリアルの速度を設定可能に
      ・ワイルドカードの扱いを改善
      ・ファイルのタイムスタンプがおかしくなるバグの修正
      ・エミュレータ部の関数の大幅な見直し、ソースファイルの分割
  今回:
    v0.1 → v0.2 の変更点
      ・SunOS 4.1.x, NEWS-OS 4.x のサポート
      ・シリアルポートの初期化で、stty(1) コマンドを使っていたのを
        termios(4) に変更

BSD Filer version 0.2 Copyright (C) 1996 by Dai ISHIJIMA