SCSIデバイスエミュレーターRaSCSIの設定方法

最終更新: 2022-08-02 ※RaSCSIの公開が終了しましたので、下記の記事は過去情報となります。下記のWikiを参照し最新情報を参照下さい。本記事は参考までに残しておきますが、最新の状況とズレている可能性があります。
https://github.com/akuker/RASCSI/wiki

先日X68000初代の修理を終えたので、改めてGIMONSさんのRaSCSIの設定をいちからやり直してみた。なお、本設定の元に筆者はX68000XVIで常用している。

ちなみに、RaSCSI(ラスカジー)とは、要するにRaspberry Pi(ラズベリーパイ)をSCSIハードディスクみたいに使えちゃう、という古くて新しいナウなガジェットである。これを導入すると、何とX68000やらFM TOWNSやらPC-9801やらでSCSI起動ドライブをRaspberry Piで代替出来てしまうのである。しかもRaspberry Pi OS経由で動くのでHDDイメージをWi-Fi経由でいじくる事も可能。恐るべきレトロ未来感覚・・・(ごくり)

※SCSI(スカジー)って何ですか? と聞かれたら困るんですが、まあ要はSATAのご先祖様のIDEのもっと昔のご先祖様と考えてもらえれば。機種を超えたドライブ接続の標準規格として1980年後半から90年代前半に大流行しました。接続する各ドライブにはIDを0番から7番まで設定して接続します。7台まで数珠つなぎ(デイジーチェーン)できます。

RaSCSIはLinuxのディストリビューションであるRaspberry Pi OS(ラズベリーパイ・オーエス)の上で動くため、UNIX系の操作がある程度出来る事が前提となる。まあ、ここはしょうがないので諦めて慣れましょう。

念のため本記事の前提となっている我が家の環境も書いておく。

  • Raspberry Pi 3B + 秋月の3.0A microUSB電源
  • RaSCSIレベルコンバーターシールド(公式)
  • 30cmのSCSIケーブル(ハーフピッチD-Sub – フルピッチアンフェノール)
  • X68000XVI / PC-9821Ap / PC-9821Xs

1. Raspberry Pi 3 Model BとACアダプターとMicroSDカードを買ってくる

どこかで適当に。どこでもいいと思うけど、専門店の方がいいんじゃないかなと。近所にお店があればそちらで是非。ちなみに少し高いPi 3 Model B+や最新の4という高速モデルも出たのだが、3B, 3B+, 4どれでもOK。だが、3B+や4は発熱が強いため、安い3 Model Bの在庫があれば、総合的にそれが良いだろう。

合わせて、レベルコンバーターシールドで基板全体が覆われることになるため、放熱を考えて出来ればヒートシンクも付けておこう。

Raspberry Pi 3B/3B+ を使う場合は、3.0A USB出力のACアダプターも一緒に。出力が足りなくてちゃんと動作しないケースが多すぎるんで、最低限3.0Aは必須で是非。

Raspberry Pi 4の場合は、3.8AのUSB-Cモデルを買うこと。上記のmicro USB 3.0Aアダプターからの変換だと出力が出ないように制限されるため、正常に動作しない。必ず専用品を買うこと。これは絶対の約束。

  • http://akizukidenshi.com/catalog/g/gM-14935/

マイクロSDカードは16GB、Class 10辺りを選択すべし。遅くても動くと思うけど、余計な不安要素は最初に潰して置いた方がいいかと。もちろん、大容量のHDDを何台もぶら下げたい場合は、もっと大きいマイクロSDカードを選ぼう。

2. RaSCSIボードを買ってくる

何種類か出ている模様。筆者はは公式のfullspec版を使っているので、以下の説明もfullspec版をベースにしている。該当部分は赤字にしているので適宜読み替えを。

3. Raspberry Pi OSのインストールと設定

Raspberry PiはRaspberry Pi OS等のOSの上で動く。ので、OSを起動しないRaSCSIは動かない。まずOSの設定から。

※つまり、RaSCSIが動作するまでにはOSが起動するまでの10秒くらい待たねばならない、ということ。実際に使う際には先に電源を入れるように。

最初にRaspberry Pi OSイメージのダウンロード。Raspberry Pi OS (32-bit) Liteを選択。Lite版ではないものもあるが、GUI等余計なものが入っているし、RaSCSIの動作にはほぼ役に立たない(むしろ余計なプロセスが増えて良くない)ので、最小構成であるLite版を推奨。

イメージ書き込みはRaspberry Pi公式で推奨のソフトのEtcherをダウンロード。これでSDカードにイメージを書き込む。(もし書き込みで進捗が進まない場合は、一回マシンを再起動して再挑戦。多分それで治るかと)

書き込んだSDカードをRaspberry Piに差して起動。

  • HDMIケーブルでモニターに差す。
  • USBキーボードを差す。
  • マイクロUSB電源を差す。

マイクロUSB電源を差すと勝手に起動する。黒い画面でログオンプロンプトが出てきたら、ID: pi, Password: raspberry でログオン。

以下でWi-fi・タイムゾーン・言語の設定を行う。(“$”はコマンドプロンプトの文字なので、この文字が出ていたらコマンドを叩き、Enterキーを叩いて実行すると読んで欲しい)

$ sudo raspi-config

青い画面のメニューが出てくるので、そこから下記の設定を行う。

  • ホスト名の変更 (わかりやすい名前に変更しておこう)
    • 2 Network Options > N1 Host Name
      • (適当な名前。筆者はrascsixviとした) 
  •  Wi-Fiの設定
    • 2 Network Options > N2 Wi-Fi
      • Select the country: JP
      • SSID: <WIFI_SSID>
      • Password: <WIFI_PASSWORD>
  • 地域・エンコーディング設定
    • 4 Localization Options > I1 Change Locale
      • →ja_JP.UTF-8
      • →Default: C.UTF-8 (ja_JPを標準にするとメッセージが化けるので)
  • タイムゾーン設定
    • 4 Localization Options > I2 Change Timezone
      • →Asia/Tokyo
  • キーボードレイアウト
    • 4 Localization Options > I3 Change Keyboard Layout
      • →使っているもので。USキーボードなら変更不要。
  • 国設定
    • 4 Localization Options > I4 Change Wi-Fi Country
      • →JP
  • SSH有効化
    • 5 Interfacing Options > F2 SSH
      • →Yes
  • 更新
    • 8 Update
      • →Wi-Fi設定が合っていれば勝手にダウンロードを開始するので待つ。もしエラーが出たら上記のWi-Fi設定が間違っているので要再確認

上記が終わればFinishで完了。最後にRaspberry PiのIPアドレスを控えておく。確認する項目は”wlan0″で、IPアドレスは “inet”の項目。後ほどここに接続する。

$ /sbin/ifconfig -a

下記で手動にて再起動。

$ sudo shutdown -r now

実機での作業はここまで。以降はWindows/Mac/Linux機からSSHで接続して作業する。

4. RaSCSIのインストールと設定

Raspberry Pi OSを直接いじくるのはめんどくさいので、これ以降はリモートで作業。ここでRaspberry PiからHDMIケーブルとUSBキーボードは外してOK。電源ON状態でいきなり抜いてもOK。

まずSSHクライアントを入れる (WindowsだとPoderosa辺りで。macOSだと標準で入っているので、Terminalから”ssh -l pi <IP_ADDRESS>”で接続)。

次にSFTPクライアントを入れる (WindowsだとWinSCP辺りで。MacだとFileZillaやCyberduck辺りか)。

SSHで控えておいたIPアドレスに接続する。接続出来たら、まずOSを更新し、一旦最新にしておく。あと、時刻同期のためのNTPクライアントとしてchronyもついでに入れておこう。終わったら恐らくカーネルが最新に置き換わってる可能性大なので、一旦再起動。

$ sudo apt-get update;sudo apt-get -y upgrade
$ sudo apt-get install chrony
$ sudo shutdown -r now

10-20秒程度待って再度SSHよりログオン。

それでは本作業開始。外部マシンでRaSCSIをダウンロード。「RaSCSI version 1.47」を選択する。(バージョン番号は適宜読み替えて)

もしRaspberry Pi OS側で直接ダウンロードしたい場合は、curlというコマンドが使えるので、それで直接ダウンロードのURLを叩いてしまう。ダウンロードしたものはファイルとして保存する必要があるので、”-O”オプションを忘れずに。

$ curl <FILE_URL> -O

もしくは、リモート側でダウンロードして、RaspberryPiにSFTPで転送する。転送後、Raspberry Pi OS側でZIPを伸張する。

$ unzip rascsi147.zip

展開したファイル内の “bin/raspberrypi/rascsi.tar.gz” が本体。これを更に伸張する。

$ cd rascsi147/bin/raspberrypi
$ tar xvzf rascsi.tar.gz

これでRaSCSI側の基本準備は完了。

次に、SCSI HDDイメージを作成する。作成はXM6で。XM6のインストールや操作方法は割愛。XM6を起動させ、メニューの”Tools > Make a new SCSI Fixed Disk”でSCSI HDDイメージを作成する。一旦XM6の最大値である4GB(4096MB)で作成しておいてもOK。

但し、SCSIとして利用する機種・OSによって最大値が決まっているのでそれに従う。例えば、X68000でSCSI利用であればブートパーティションは1GB以内であるべきだし、更にそこにXCをインストールする場合は768MB程度に抑えておかないと途中でエラーで止まる、等々の制約があるのでそれに倣うよう。PC-9801/PC-9821系であれば、544MBの壁等が機種やSCSIボード・OSごとにあるため、あらかじめ調べておこう。

作ったHDSファイル(以下ファイル名を”x68000scsi0.hds“とする。何でもOK)をSFTP等でRaspberry Pi OS側のrascsiディレクトリーへ転送する。転送が終わったら、基板に応じてバイナリーを選択し起動してみる。(ここではfullspec版の例)

$ sudo fullspec/rascsi -ID0 x68000scsi0.hds

正常に起動したら以下のメッセージが出る

SCSI Target Emulator RaSCSI(*^..^*) version 1.47(Apr 11 2020, 23:01:38)
Powered by XM6 TypeG Technology / Copyright (C) 2016-2020 GIMONS
Connect type : FULLSPEC

+----+----+------+-------------------------------------
| ID | UN | TYPE | DEVICE STATUS
+----+----+------+-------------------------------------
| 0 | 0 | SCHD | x68000scsi0.hds
+----+----+------+-------------------------------------

上記がうまく動いたら、起動しっぱなしで停止する。そのままではどうしようもないので、一旦Ctrl+Cで停止させる。

5. RaSCSIの自動起動設定

一旦うまく動いたらしめたもの 。が、このままではRaspberry Piの電源をOFFにしたらプロセスが未起動状態となり、また上記の起動を手動で行わねばならなくなる。自動で全部Ready状態にするために、下記の作業を最後に行う。

まず、HDDイメージファイルであるHDSファイルをOS上適切な位置に配置する。SysV以降の習わしとしては、可変ファイル(variable files)は /var 配下に置くことが決まっているため、RaSCSIもそれに従おう。/var/rascsi ディレクトリーを作成し、そこに移動する。

$ sudo mkdir /var/rascsi
$ sudo mv x68000scsi0.hds /var/rascsi

次に、RaSCSIをRaspberry Pi OS上の適切な場所へ移動する。apt等で管理されない所謂「オプショナルパッケージ (optional packages)」は/optに置くのが同じくSysV以降の習わしなのでまず移動。複数のバージョンを管理したいのと、バージョンアップ時に楽をしたいので、バージョン番号付きのディレクトリーにリネームしながら移動して、シンボリックリンクを張っておく。これで新しいバージョンが出てもシンボリックリンクの作り直しだけでOK。

$ cd rascsi147/bin
$ sudo mv raspberrypi /opt/rascsi-1.47
$ sudo ln -s rascis-1.47 rascsi

※もし、RaSCSIが将来バージョンアップした場合は、シンボリックリンクを張り直してやろう。下記は1.48(執筆時点ではまだ出てない)が出た場合の例。RaSCSIのデーモンを停止し、”rascsi”のシンボリックを最新のディレクトリーに張り替えて、デーモン再開、という処理となる。

$ sudo systemctl stop rascsi
$ sudo mv raspberry /opt/rascsi-1.48
$ cd /opt
$ sudo rm rascsi
$ sudo ln -s rascis-1.48 rascsi
$ sudo systemctl start rascsi

次にRaSCSIの起動スクリプトを作る。

$ cd /etc/systemd/system/
$ sudo nano rascsi.service

テキストエディターnanoで新規作成された「rascsi.service」に対し、下記をコピペする。(もちろんvimが使える方はそちらでも)

[Unit]
Description=RaSCSI
After=syslog.target

[Service]
Type=simple
WorkingDirectory=/opt/rascsi
ExecStart=/usr/bin/sudo fullspec/rascsi -ID0 /var/rascsi/x68000scsi0.hds
TimeoutStopSec=5
StandardOutput=null

[Install]
WantedBy = multi-user.target

上記をCtrl+X → [Enter]で保存する。systemctlに認識されるようになるので、rascsiプロセスを自動起動に設定する。

$ sudo systemctl enable rascsi
Created symlink /etc/systemd/system/multi-user.target.wants/rascsi.service → /etc/systemd/system/rascsi.service.

設定が終わった。自動起動するように変更されているはずなので、念のため再起動してみる。

$ sudo shutdown -r now

再起動後にプロセスが自動起動しているか確認する。SSHで再接続し、下記を叩いて表示が出ることを確認する。出ない場合は正常起動していないので、上記設定を再確認。

$ cd /opt/rascsi
$ fullspec/rasctl -l

+----+----+------+-------------------------------------
| ID | UN | TYPE | DEVICE STATUS
+----+----+------+-------------------------------------
| 0 | 0 | SCHD | /var/rascsi/x68000scsi0.hds
+----+----+------+-------------------------------------

6. X68000等にSCSI接続してみる

ここから先はFM TOWNSだったりPC-9801だったりと各者各様で良いかと思うので具体的には割愛。SCSIコネクターに接続し、先にRaspberry Piの電源を入れて10秒くらい待って、マシンを起動すれば、(ある場合は)RaSCSIボード上のランプが光ってマシン上でDevice ID: 0として認識する。あとはOSのインストール等々、通常のSCSI HDDとして煮るなり焼くなり好きにするが良い。

更に、X68000だけの特別追加機能として、イーサネット機能及びホストファイルシステム(ホスト機でSCSIドライブをネットワークドライブとしてマウントできる機能)等がある。詳しくは付属ドキュメントの”doc/x68k.txt”を参照のこと。多分ここで書くよりそちらを参照した方が良い。というかこの2019年に実機でSCSI使える人ならそんなこと書かなくても分かるでしょ! (が、あとで書くかも)→下に書きました

7. X68000からRaspberryPiのファイルシステムを丸見えにする

結局書いてしまった・・・ということで続き。RaSCSIにはX68000専用に二つの機能が提供されている。ひとつがRaspberryPiのEthernet機能を使わせてもらうネットワークデバイスドライバー”RASETHER.SYS”、もうひとつがRaspberryPiのファイルシステムを直接参照できるファイルシステムドライバー”RASDRV.SYS”。

前者は実際問題としてクライアントソフトとして古くさいtelnetソフトウェア等を使うことになりセキュリティー的に疑問なのでここでは取り扱わず、安全な後者の解説に留める。

この後者”RASDRV.SYS”であるが、下記の設定でX68000からRaspberry Pi OSの中身を参照できる。ので、あとはRaspberry Pi OS側とWindowsやらMacやらとSFTP辺りでファイルをやりとりできれば、何と稼働中のX68000とリアルタイムでファイル連携が出来るのである。何という万能感。X68000とのファイルのやりとりのためにSCSIのMOドライブを繋いでおく時代は遂に終わったのです(いや、とはいえ便利なのでMO環境は残しておいた方がいい気もする・・・)。

まず、RaSCSIの配布パッケージに含まれている “bin/x68k/RASDRIVER.HDS”のHDDイメージにRASDRV.SYSが含まれている。これをRaSCSIにマウントさせるだけでX68000からRASDRV.SYSを操作できるようになる。まずはここからだ。

手順としては下記となる。

  1. RASDRIVER.HDSをコピーする
  2. ブリッジデバイスとRASDRIVER.HDSをマウントさせる記述を追加、RaSCSIデーモンを再起動させRASDRIVER.HDSを認識させる
  3. X68000を再起動してRASDRIVER.HDSのドライブを認識させ、RASDRV.SYSをAドライブにコピーしてCONFIG.SYSを書き換える
  4. あと片づけ

では順番に見ていこう。

7-1. RASDRIVER.HDSをコピーする

RASDRIVER.HDSはRaSCSIの配布イメージの中に含まれている。これを/var/rascsiにコピーしよう。

$ sudo cp bin/x68k/RASDRIVER.HDS /var/rascsi

7-2. ブリッジデバイスとRASDRIVER.HDSをマウントさせる記述を追加する

これは上記で記述したスタートアップ設定ファイルに追記するだけだ。

$ sudo vi /etc/systemd/system/rascsi.service

中身をこのように変更しよう。緑色の箇所が追記したポイントだ。-ID1が仮想ドライブ用のブリッジデバイス名、-ID2がRASDRIVER.HDS用だ。この「ExecStart=」から「.HDS」までは一行で記載しよう。

[Unit]
Description=RaSCSI
After=syslog.target
[Service]
Type=simple
WorkingDirectory=/opt/rascsi
ExecStart=/usr/bin/sudo fullspec/rascsi -ID0 /var/rascsi/x68000scsi0.hds -ID1 BRIDGE -ID2 /var/rascsi/RASDRIVER.HDS
TimeoutStopSec=5
StandardOutput=null
[Install]
WantedBy=multi-user.target

これで再認識&再起動させる。きちんと認識しているかどうかまでrasctlを起動して確認を入れておこう。緑色の行が出ていれば成功。

$ sudo systemctl daemon-reload
$ sudo systemctl restart rascsi
$ /opt/rascsi/fullspec/rasctl -l

+----+----+------+-------------------------------------
| ID | UN | TYPE | DEVICE STATUS
+----+----+------+-------------------------------------
| 0 | 0 | SCHD | /var/rascsi/x68000scsi0.hds
| 1 | 0 | SCBR | HOST BRIDGE
| 2 | 0 | SCHD | /var/rascsi/RASDRIVER.HDS
+----+----+------+-------------------------------------

7-3. X68000を再起動してRASDRIVER.HDSのドライブを認識させ、RASDRV.SYSをAドライブにコピーしてCONFIG.SYSを書き換える

X68000を再起動させる。RASDRIVER.SYSはDドライブに登録されている筈である。中身にあるRASDRV.SYSをAドライブのどこかにコピーする(下記ではA:\SYS。どこでもよい)

>b:
>copy RASDRV.SYS a:\SYS

 “A:\config.sys” を開いて、RASDRVを登録してやる。

A:\> ed config.sys

下記の行を “DEVICE=” の最後の行に追加する。

DEVICE = \SYS\RASDRV.SYS

書き終わったら “ESC → E”で保存。その後にX68000のリセットボタンを押して再起動。起動時のログにD:ドライブが追加された、という下記のようなメッセージが出れば成功。

RaSCSI FileSystem Driver version 1.42
ドライブE:を登録しました

あとは起動完了後にEドライブを覗いてみれば・・・あら不思議、X68000からRaspberryPiの全てが見える!!

あとは、RaspberryPiに向けてSFTPでファイルを “/home/pi” 辺りに転送してやれば、X68000からは “E:\home\pi” で参照出来る訳です。無線でX68000とファイルのやりとりが出来るなんて21世紀は何て素晴らしいんでしょう!!!

ちなみに、Raspberry Pi OSのルートから公開したくない場合は、”config.sys” の設定で下記のように記載すれば “/home/pi” の直下が “E:” ドライブの直下として見えるので、そのようにしても良いだろう。いやむしろそうした方が良いかもしれない。お好み・用途に応じて。

DEVICE  = \SYS\RASDRV.SYS /home/pi

7-4. あと片づけ

このまま使ってもらっても良いのだが、RASDRIVER.HDMのBドライブへの登録が残った状態になっている。最後に外してやろう。Raspberry Pi OS側に戻り、登録を外す。

$ sudo nano /etc/systemd/system/rascsi.service

サービス定義からRASDRIVER.SYSを外す。

[Unit]
Description=RaSCSI
After=syslog.target
[Service]
Type=simple
WorkingDirectory=/opt/rascsi
ExecStart=/usr/bin/sudo fullspec/rascsi -ID0 /var/rascsi/x68000scsi0.hds -ID1 BRIDGE
TimeoutStopSec=5
StandardOutput=null
[Install]
WantedBy=multi-user.target

リロードし、念のためドライブ状況を確認しておこう。RASDRIVERの行が無くなってれば成功。

$ sudo systemctl daemon-reload
$ sudo systemctl restart rascsi
$ /opt/rascsi/fullspec/rasctl -l

+----+----+------+-------------------------------------
| ID | UN | TYPE | DEVICE STATUS
+----+----+------+-------------------------------------
| 0 | 0 | SCHD | /var/rascsi/x68000scsi0.hds
| 1 | 0 | SCBR | HOST BRIDGE
+----+----+------+-------------------------------------

最後にX68000を再起動させる。RASDRVがDドライブに変更されたはずである。前記「E:」で書いた箇所は全てD:に変更されているので読み替えを。もちろん、HDSイメージを何個もマウントするとこのドライブ名が後ろにどんどんズレていくことになるのでご注意を(これは恐らくHuman68Kの仕様)。

RaSCSI FileSystem Driver version 1.42
ドライブD:を登録しました

それではお宅のレトロマシンの幸せなSCSIライフを!!!


投稿日

カテゴリー:

,

投稿者: