検索

Google
Web www.icefree.org

RSS of recent changes

 

X68kをLANに繋ぐ

2017-06-20 (火) 23:23:54 (1556d)

 このページは旧サイトからの転載です。オリジナルは1997-98年あたりに書いたものです。


  X68k が最新のパソコン(パーソナルワークステーション?) でなくなってから幾星霜。 CPU を 68060 にしたり、OS を NetBSD にしたりすれば 現役のメインマシンとして使うこともできるでしょうが、 そこまで X68k に投資する人はあまりいません(全体から比べればね・・・)。
 X68k と心中することはできないけれど、 使わないでおくのはもったいないという人には、 Human68k 上で LAN に繋いでみる事をお勧めします。 もちろん、前者(NetBSD)の場合では LAN は必須です。
 LAN に繋げられれば、何か使い道が見つかるでしょう。 少なくとも、ファイル転送が楽になることは保証できます。

ハードウェア

 X68kでの Ethenet ボードは、ShiMAD氏 が設計した Neptune-X が事実上の標準となっています。 しかし、Neptune-X は同人ボードなので、 入手するには量産している人から買うか自分で作るかしないといけません。
 部品を買いに行けるならば、自分で作るのが手っ取り早い方法です。 一番入手が難しいX68k用のユニバーサル基板は、 満開製作所で買うのが一番楽な方法です。
 面倒なハンダ付けは、酒でも飲みながらやっていれば知らないうちに 終っています。あまりお勧めはできませんが…(^^;
 
 作ったボードをスキャナで取り込んでみました。
画像ファイルは、サイズが800*600 あって、サイズもけっこうでかいので注意。
 Neptune#48の画像(65,600bytes)
 
 もう1枚、友人のために作ったボードもあるのですが、 それはもう少し綺麗な配線です(多分・・・)。
 
 また、Neptune-X は機能的には ISA ブリッジに過ぎませんから、 他に ISA の LANカード(NE2000互換)が必要です。 私は、PLANEX COMMUNICATIONS社 のENW-1401P-T を使いました。 このボードは RTL8019AS という石を使っています。
 もう一枚DOSV用のLANボードが必要になったので、 メルコの LGY-ISA-TR というボードを買ってきて付けてみました。 しかも、わざわざ RTL8019 系は避けてみました。 このボードは DM9008 という石を使っています。 しかし、ダイブしすぎたようで一応動きはするのですが、 動作が怪しくなりました。

ソフトウェア

config.sys(PROCESS) の設定

 BGプロセスのための設定は、SYSの中のPROCESS行で行ないます。
 

PROCESS = <プログラム数><レベル><タイムスライス値> 

 
 プログラム数
 
 同時実行可能なプログラム数(2〜32)。
 最低でも3は無いとINETDは使えません。
 景気よく32にしておくのが良いでしょう。
 
 レベル
 
 プログラムの実行間隔(2〜255)。
 何回実行権が廻ってきたら本当に実行するかを決める値で、 値が小さいほど短い間隔で実行されます(速くなる)。
 UNIX における nice値のようなものです。
 
 タイムスライス値
 
 各プログラムの実行時間(1〜100:単位ms)。
 値が大きいほどオーバヘッドが減るので速くなるはずですが、 使うアプリケーショによっては重くなる可能性もあります。
 
 
 PROCESSは、計測技研のマニュアルでは

PROCESS = 3 10 10 

となっていますが、プログラム数は増やしておいた方が良いでしょう。 私の場合は

PROCESS = 32 10 100 

にしてあります。

デバイスドライバ(ehter_ne.sys)

 Ethernetドライバは、Ethernetボードを (キャラクタ)デバイスとして使うために必要なデバイスドライバです。
 これにより、上位層ではPPPなどと同様にEthernetを 扱うことができます。
 
 Neptune−Xのドライバとしては、ether_ne.sys があります。
 ether_ne.sys には、Shimad氏のオリジナル版(現在、v0.03)と、 v0.02を Mitsuky氏が高速化したものがあります。
 特に v0.03 を使う必要が無ければ、高速版を使うのが良いでしょう。
 
 bgdrv を組み込むときは、ehter_ne.sys よりも前に置く必要があります。 bgdrv を後に組み込むとインタフェースにパケットが流れなくなります。

inetd の設定

 X68k の inetd は、UNIX の inetd とは異なり、 Ethernet ドライバとアプリケーションの間に位置し、 アプリケーションに socket を提供するためのソフトです。
 ちなみに、UNIX の inetd は、サービスの要求を待ち、 要求されたサービスプログラムを起動するためのソフトです。
 
 inetdには、計測技研のinetdと、それを高速化した hinetd、xipがあります。xipを使うのがお勧めです。
 
 xip(hinetd)には、高速化係数というオプションがあり これによって高速化が図れます。
 係数は、オプション−n数値によって指定します(2〜32)。 数値が大きいほど高速になります。ただし、速いマシンで大きい数値を指定すると ハングするらしいです。
 
 xipの係数は安定して動作するレベルで最大値をとるのが良いでしょう。 と言いつつ私の設定はデフォルトの2です。

環境変数

・host
 自ホスト名。ドメインを含めた形で記述するのが普通です。
 
・domain
 自ドメイン名

実際の設定例

 この設定はうちの環境です。必要な部分だけ抜粋してあります。
 シェルには fish を使っているので、あまり参考にはならないかも。
 IPアドレスは、X68k が 192.168.1.3、ルータが 192.168.1.1 です。 サブネットマスクは、 255.255.255.0 です。また、LAN 内に DNS サーバがあり、DNSサーバのアドレスは 192.168.1.1 です。
 
・CONFIG.SYS

PROCESS   = 32 10 100
LASTDRIVE = Z:
DEVICE    = \sys\FLOAT2.X
PROGRAM   = \sys\TWENTYONE +TPS -R -CWD
DEVICE    = \sys\execd.sys
SHELL     = \usr\local\bin\fish.x

 
・.fishrc

set host=`cat /etc/myname`
set domain=`cat /etc/defaultdomain`
set temp="d:/tmp"

   /usr/local/bin/lndrv

   cat > ${temp}/driver.def << EOF
\sys\ether_ne.sys
EOF
   adddrv ${temp}/driver.def

   xip
   ifconfig lp0 up
   ifconfig en0 $host netmask 255.255.255.0 up
   inetdconf +domain $domain +router 192.168.1.1 +dns 192.168.1.1

 
 参考までに、うちで使っているままの設定をあげておきます。
  ・/CONFIG.SYS
  ・/home/.fishrc
 
▼注意
 bgdrv を組み込むときは、ehter_ne.sys よりも前に置く必要があります。 bgdrv を後に組み込むとインタフェースにパケットが流れなくなります。