98note をシリアルコンソールに仕立てる

ウチのサーバマシンにはモニタを継いでないので、ちょっと様子を見たい時にはデスクトップマシンを起動して ssh で入るか、モニタを継ぎ換えるしかなくて結構面倒。ちょうど HDD が壊れて退役した 98note (PC-9821Nd2) が手元にあるのでシリアルコンソールとして復活させてみた。

サーバ側の設定

Debian の /etc/inittab にはデフォルトで ttyS0 のエントリが準備されているようなので、そのコメントを外し

T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100

telinit q してシリアル用の getty を上げる。また、ブート時からシリアル経由で操作できるように /boot/grub/menu.lst に

serial
terminal --timeout=10 serial console

を追加。カーネルパラメータにも console=tty0 console=ttyS0 を加えておく。

ターミナルエミュレータを用意する

MS-DOS があればそれプラス hterm が定番なのかな? 「ディスク一枚作りゃいいだけやん」と安易に考えていたけど、今回ここが一番難儀した。

  • 買い置きしてた FD が古くて結構ダメになってる
  • Windows が入ってる PC98 の FDD が壊れてた
  • バックアップに取ってた MS-DOS のディスクが壊れかけ

とにかく安心してフロッピーディスクを読み書きできる環境を探すのに一苦労。対象が PC98 だってのも拍車を掛けた。どうにかこうにか DOS のシステムディスクを作るとこまでこぎつけたが、hterm のインストーラ (DOS のバッチファイル) を動かす環境がない*1。仕方ないんでバッチファイルが何やってるかを読む。ぐはー、もう全然ワカンネー。結局のところ

  • ヘルプファイル bin/jhterm.db (英語版なら ahterm.db) を hterm.db としてコピー
  • bin/hterm.98 (AT 互換機なら hterm.pc、J3100 なら以下略) を hterm.exe としてコピー
  • PC98 の場合は bin/hkey{,set}.98 を hkey{,set}.exe としてコピー
  • bin/a14k14.hft をコピー

してやればよいようです。AT 互換機なら hemacs という emacs like なエディタもコピーされるみたい。疲れた…。

継ぐ

あとは、両機をクロスケーブルで継いどいて 98note を FD 起動。hterm と叩いて (autoexec.bat を用意しとくのが DOS 流ですね) 無事 login: プロンプトが出てくれば成功。PC98 版の場合 STOP キーで hterm の終了、COPY キー で hterm の設定ができます。とりあえず文字コードだけ EUC に変更してやればあとはデフォルトのまま使えるんではなかろうか。


最終的に試したらボーレートは 19,200 までいけたので

/etc/inittab

T0:23:respawn:/sbin/getty -L ttyS0 19200 vt100

/boot/grub/menu.lst

serial --speed=19200
terminal --timeout=10 serial console

同ファイルのカーネルパラメータ

console=tty0 console=ttyS0,19200n8

に修正。まぁそれでも表示は遅いんだけど、メンテ用途なら充分使える。

*1:今気付いたが Windows マシンで一旦 HDD にインストールして、それを FD に書き込みゃよかったのか… orz