RS232C による古いマシンの接続

目的

私のメインの作業環境は, 当然 Linux なんですが, いまだに DOS から離 れられないものがあります. 1 つは, 本業の実験です. 私が使っているマシン は, NEC の 9800 シリーズのパソコン (以下, 98 と略す. 本文書では Windows98 のことは一切述べられていない) で制御されています. 制御データ は, 1.2MB の 5 インチフロッピーに保存されます.

もう 1 つは, グラフを書くときに Ngraph の DOS 版を利用しているというものです. グラフ書きに常用しているのは, 実は gnuplot だったりするんですが, 論文用のグラフは Ngraph を使ってます. ま た Ngraph には Linux 版があることも知っているのですが, 操作がよくわか らない (慣れてないだけですね) ので, DOS 版を使っています.

研究室には, 5 インチ, 3.5 インチの 640kB/1.2MB の FDD を備えた 98 (正確には EPSON の互換機であるが, もちろん互換機と言っても AT 互換機で はない) があります. 実験データやグラフを, 720kB/1.44MB の FDD を備えた Linux Box に持っていく場合, 1.2MB と 720kB or 1.44MB の両方に対応した パソコンを使ってフロッピーで受け渡しをするしか, 方法がありませんでした. これだと 1.2MB を越えるデータのやりとりは面倒ですし, しかも両方に対応 したパソコンが研究室にない (私の家にあります) ので, どちらにしても大変 でした.

そこで何らかの手段で 98 と Linux Box を繋ぎ, お手軽にファイルの転送 をやりたいなぁと, 前から調べていました.

準備するもの

Slackware

別に Slackware じゃなくてもいいと思いますが, 接続したマシン が Slackware ベースな ので, それ以外のディストリビューションの場合, 微妙に設定方法が異なるか もしれません.

マニュアルの類
hterm

DOS から Linux Box (に限らないけど) に通信するために使うソフト. iis.u-tokyo.ac.jp の人が作られたのですね (^^)

Kermit

Linux Box (に限らないけど) 側で, 通信に使うソフト. 本当なら rbsb あたりでもできると思いますが, 失敗 したので Kermit にします. バイナリを見つけたので, そのまま使いました.

RS232C のケーブル

一端が D-sub 25 ピン♂ (98 側), 他端が D-sub 9 ピン♀ (Linux Box 側) で, クロスケーブルを利用します. 今回, ここだけお金がかかりまし た :-p

作業 - その 1

買ってきた RS232C ケーブルで, 98 と Linux Box を繋ぎます.

そして, hterm を 98 にインストールします.

> lha bin2600.lzh
> install.bat a:\util
 (質問に答える)

次に /etc/termcap に, hterm の etc/termcap を追加しま す.

# cd /etc
# cp termcap termcap.old
# vi termcap
 (etc/termcap を付け加える)

/etc/inittab を編集し, シリアルポートを見張るようにし ます. デフォルトの /etc/inittab には, 次のような行がある と思います.

#s1:12345:respawn:/sbin/agetty 19200 ttyS0 vt100
#s2:12345:respawn:/sbin/agetty 19200 ttyS1 vt100

これらのうち, ケーブルを繋いだ方のコメントを外し, 以下のようにしま した.

s1:12345:respawn:/sbin/agetty 38400 ttyS0 hterm

この後, init を再起動します.

# kill -SIGHUP 1

hterm の設定を変更します. hterm はボーレートのデフォルト 9600 なの で, これを 38400 に変更します. 変更したら設定を保存して, hterm を再起 動すると, Linux Box 側のログイン・プロンプトが出てきました. 接続には成 功した模様です (^^)v

作業 - その 2

次に, ファイル転送です. そのためには, まず初めに FTP で入手した kermit を Linux Box にインストールして下さい.

# tar xvf cku192-binary.tar.gz
 (何故か gzip は自動的に (?) 解けていた)
# mv kermit /usr/local/bin/

ファイルの転送には, hterm に付属のスクリプトを使います. etc/ にある hkget.sh, hkput.sh がそれです. これは改行コードが DOS 流なので, UNIX 流に変更してからコマ ンドのパスなどを編集します.

$ cd etc/
$ fromdos < hkget.sh > tmp.sh
$ mv -f tmp.sh hkget.sh
$ fromdos < hkput.sh > tmp.sh
$ mv -f tmp.sh hkput.sh
$ vi hkget.sh
 (echo と kermit のパスを変更)
$ vi hkput.sh
 (echo と kermit のパスを変更)
$ mv hkget.sh hkput.sh ~/bin/
 (弱気に, 自分の bin にコピー)
$ chmod +x ~/bin/hk*.sh

そうしたら, テストをします. 98 で hterm を立ち上げて Linux Box にロ グインしてから, hkget.sh, hkput.sh を引数に ファイル名をつけて起動します. バイナリファイルを扱うときは, -i-b オプションをつけるといいでしょう.

$ hkput.sh *.dat
 (*.dat にマッチするファイルが, 98 へ転送される)
$ hkget.sh *.eps
 (*.eps にマッチするファイルが, 98 から転送される)

苦労話

初めは, XMODEM or YMODEM を使って, rbsb でやろうとしてました. でも, いろいろ試したのですが, 失 敗. で, Kermit にしようと, 近所の FTP サーバからソースをもらってきたの ですが, コンパイルできず (;_;). archie kermit でバイナリ を見つけて kermit を使えるところまではいきましたが, 単体で起動するとう まくいきませんでした. 最終手段ということで, hterm 付属のスクリプトを利 用したところ, あっさりと成功してしまいました.

お願い

ここに記されているものは, たまたまうまくいった事例の 1 つにすぎず, この通りにやれば必ずできるということを保証するものではありません. 御了 承下さい.

感謝

今回利用したソフトウェアの製作者, 管理者, 参考にさせていただいた文 書の執筆者, 管理者の皆様に感謝します. サーチエンジンなどで, Linux, RS232C, Kermit, hterm などのキーワードでいろいろ調べてみたのですが, ま とまった文書は見つかりませんでしたので, このような文書を作成しました. 私はこれを実現するために, 紆余曲折して約 2 時間かかりました. 同じ事を する人が, 2 時間以内で作業が終了すれば幸いです.

野望

98 に, 研究室に転がっているはずの古い NIC に付属のパケット ドライバなどをインストールし, シリアルポートを見るようにする (可能?). Linux Box 側は IP Masquerade にして, シリアルポートで 98 に接続. そう すれば, 98 からダイレクトにインターネットにアクセスですね (^^)



[うさぎ]

m@sa.to