SunOS 4.xでMOを使うには

YAMAMORI Takenori ●yamamori


周知の通り,SunOS 4.xは,現在のSolaris 8などのSunOS 5.x(SVR4)に移行する前に 広く使用されていたBSD系のOSであり,Intel版はなく,SPARC版のみが存在します. しかも,Ultra SPARC以降には対応しておらず, SunOS 4.xを使うためにはSPARC station 5,10,20などのsun4mアーキテクチャや, SPARC station 2,1+などのsun4cアーキテクチャ(とさらに古いsun4アーキテクチャ) のマシンが必要です.

しかし,筆者自身は現在SunOS 4.x系の最終版のSunOS 4.1.4(Solaris 1.1.2)を, SPARC station 5上で,NATやルータの役目を含めメインで使用しており, さらに,つい最近までSPARC station 2をメインで使用していたことも含めて, これらが決して古いOSや古いマシンであるとは考えていません.

●SunOS 4.xでMOドライブを使うには

MOドライブには,OSのデバイスドライバからのInquiryに対して デバイスタイプ7番(光メモリデバイス)を返すMOモードと, デバイスタイプ0番(ダイレクトアクセスデバイス)を返すハードディスクモードの 2つのモードがあります.(※注)

※注
ここで言うハードディスクモードやMOモードとは, 本文のとおりSCSIデバイスタイプでのモードのことであり, MOのパーティションにおけるFdisk形式や スーパーフロッピー形式のことではありません.

SunOS 4.xでMOを使う場合,MOドライブはハードディスクモードに 切替える必要があります. (Solaris 8など,SunOS 5.x系のIntel版では, ブートドライブとして使用しない限りMOモードのままでも使えます)

MOドライブのデバイスタイプは,後面または基板上のディップスイッチなどで 切替えが可能なドライブもあります. しかし現状では,切替えスイッチの付いていない,MOモード固定のドライブが多く, このままではSunOS 4.xから認識されず,MOを使用することができません.

単にSCSIデバイスタイプが違うというだけでMOドライブが使えないというのは 非常にもったいない話です.そこで本稿では,SunOS 4.xのカーネルの一部を修正し, MOモードのドライブをハードディスクとして認識させる方法を解説します.


●デバイスタイプをチェックしているのは…

ここで,デバイスタイプをチェックしているのはどこか考えてみます. 手がかりとして,まず/usr/include以下のヘッダファイルを調べてみましょう. すると,/usr/include/scsi/generic/inquiry.h (※注)の中に,

DTYPE_DIRECT   0x00     ← ハードディスク
…省略…
DTYPE_RODIRECT 0x05     ← CD-ROM
…省略…
DTYPE_OPTICAL  0x07     ← MO

というデバイスタイプを定義している部分が見つかります.

※注
このinquiry.hは,/usr/include/scsi/scsi.h をインクルードすることによって,間接的にインクルードされます.

そこで,SunOS 4.xカーネル内で,DTYPE_OPTICALなどの値がセットされる場所を 突き止め,それをDTYPE_DIRECTに書き換えてやればよいことになります. SunOS 4.xではありませんが,公開されているSolaris 8(FCS版相当)の ソースコードもある程度参考になります.

詳しい経緯は省略しますが,DTYPE_OPTICALなどのデバイスタイプは, scsi_slave()という関数を呼び出したあとに所定の構造体にセットされることが わかっています. そこで,このscsi_slave()関数を何らかの方法でラップして, scsi_slave()の呼び出しのあとに構造体上のDTYPE_OPTICALを DTYPE_DIRECTに書き換えてやれば,SunOS 4.xにおいてMOモードのドライブを 認識するようになると考えられます.

なお,できれば関数に細工を施したりせずに, adb(SunOS標準のデバッガ)で,カーネルの/vmunixの命令コードの一部を 書き換えるなどの方法が使えればよいのですが,この場合はそうはいきません.


To『SunOS 4.xでMOを使うには』[index]


このページは、技術評論社 Software Design 2002年5月号、『(まだまだ現役)SunOS 4.xでMOを使おう』の原稿を元に、Web 用に再構成したものです。
To 謎の処理系 SunOS 4.1.4 [Home]
yamamori