VirtualBox上でNEXTSTEP 3.3Jを味わい直す

このページでは、30年以上も前にリリースされたNEXTSTEPを、懐かしみつつ賞味する予定。

骨董品のパソコンたち

定年退職が間近になり、時間を見つけてはオフィスの片付けに勤しんでいる。 書棚の隙間に詰め込んであった本や書類は、捨てても捨てても一向に片付いた気がしない。 加えて、部屋の中の「見える化」の進行と共に、とうに忘れていた想い出の品々に気づいて、作業の進行を更に遅らせることになる。

渡米した際に、向こうの大学で買ったMacintosh SE/30は、長らく動態保存しておいたつもりであったものの、久しぶりに電源を入れてみると起動しない。 そうすると、益々ハードディスクの内容が気になるもので、ネットの情報を参考に、マザーボードの電解コンデンサーを換装してみた。 そのひどい仕上がりに、却ってダメージを与えたようにも思えたが、ジャーンという起動音と共に、元気に復活した。 ただ、基板上のパターンがひどく腐食していて、シリアルポートは死にかけの状態。 また、外見はとてもきれいなまま保管してあったPowerBook 145Bも、バッテリーが動作しなくなっていただけでなく、 膨張して本体から抜けなくなっており、取り出すのに苦労したし、液晶画面も全く映らなくなっており、こちらも電解コンデンサーを換装することになった。

これらのマックと同じくらいの時期に、貯金をはたいて購入したのがNeXT Stationだ。 安い車が1台買えるくらいの値段がした。 結婚したての頃だったので、こうした無駄遣いに文句を言わなかった妻のことを、職場の上司(その後、帝京大学教授になられた武井先生)は「早川さんの奥さんはまるで山内一豊の妻ですね」とおっしゃった。 そのNeXT Stationは、アクセラレーター(Pyro)を搭載したりOSをバージョンアップしながら、だましだまし使っていたが、 流石に古くなってきたので、プリンターサーバーくらいにしか使わない状態が続き、 結局、現在の勤務先に異動する際に処分した(今となっては、本体だけでも保管しておけばよかったと後悔しています)。

若かりし日の筆者

その後、NeXTはハードウェア事業から撤退したしたものの、 OSのほうはi386のPCをはじめ、SUNのSparcやHPのPA-RISCのワークステーション用に移植され、 研究室でもHP9000 712にNEXTSTEPをインストールして使っていた。 「最新の」ハードウェア上で動作するNEXTSTEPはとても快適な環境だった。

個人的にもNEXTSTEPを購入して、適合するパーツを集めてPCを組み立てて、普段使いのパソコンにしていた時期もあった。 が、じきに、使えるアプリケーションや開発環境が充実しているMac OS XやWindows XPばかり触るようになっていった。

VirtualBoxでNEXTSTEP3.3J

部屋の片付けがきっかけとなり、 その昔、専用ソフトで作った図面やグラフを開いたり、自作のソフトウェアをコンパイルして動かしてみようかと思い立ち、 オフィスの棚の隅に押し込んであった、NEXTSTEP 3.0J, NEXTSTEP 3.2J, そしてNEXTSTEP 3.3Jのボックスを引っ張り出してみた。

NEXTSTEPのパッケージ

最近のVMWareはPIIXチップセットの頃の古いアーキテクチャのエミュレーションには対応しなくなったようなので、 現状でIntel版のNEXTSTEPを動かすにはQEMUかVirtualBoxかの二択と思われる。

すでにそれらが動作するハードウェアは廃棄してしまったので、VirtualBoxの仮想環境にインストールしてみることにした。

準備

まず、NEXTSTEPのインストールフロッピーのディスクイメージ、NEXTSTEPのインストールCD(とNEXTSTEP Developer CD)のISOイメージ、 そして3.3Jを使う場合は「システム登録用ディスク」のディスクイメージ(とライセンス番号)も用意しておく必要がある。

フロッピーイメージ

インストール用のフロッピーディスクのイメージは、nextcomputers.orgのリポジトリに置かれているので、そちらをダウンロードして用いることができる。 NEXTSTEPのパッケージに含まれているフロッピーディスクに含まれているデバイスドライバーは限られており、バージョンも古いので、 上記のウェブサイトからダウンロードしたイメージを使うほうが良さそうである(これらはもともとNeXTのサイトで公開されていたもののようだ)。

作業の都度、必要なフロッピーを探すのも面倒なので、 VirtualBoxでの動作に必要なデバイスドライバーをまとめたフロッピーディスクイメージを作成しておいた(こちら)。 そのため、実際の作業に必要なのは、 ①「3.3JIntelプロセッサインストレーションディスク」(自分で作成するか、3.3_Boot_Disk.floppyimageを流用)、 ② VirtualBox用デバイスドライバーディスク、 そして、③「システム登録ディスク」(各自で作成)の3種類で足りるはずである。

筆者の場合、フロッピーイメージの作成には、修理して動くようになったMacintosh SE/30上で、DiskCopy 4.2を使った。 ただ、自前のOSのパッケージに同梱されていたフロッピーはエラーを起こし、どうしても読み取ることができなかった。 幸い、予備に取ってあったコピー(FUJIFILMブランドの2HD)のほうは、問題無く読み取ることができた。さすがJapan Quality?!

次いで、データをVirtualBoxを動かす予定のパソコンに転送した。 ただ、DiskCopy4.2が生成するデータには、先頭部分に余計なヘッダー(84バイト)が含まれているので

dd if=orig.img of=out.img bs=1 skip=84

等として、ヘッダーを削除しておく必要がある。なお、この84バイトはDiskCopy 4.2に限った値なので、DiskCopyの他のバージョンを使う場合は、別途調べる必要がある。

ハードオフのジャンクコーナーを物色していたら、USBフロッピードライブが500円(税込み)で売られていたので、 購入してみたところ、きちんと動作した。

古いパソコンが無い場合は、中古のUSBフロッピードライブを入手して、Linuxのddコマンド等を使えば、イメージ作成ができるはずである。

CDROMイメージ

インストールCDについては、光学ドライブの付いたパソコンで、しかるべきツールを使えば、ISOイメージに落とすことができるはずである。 筆者は、Windows上で動作するImgBurnというツールを用いてISOファイル化した。 Macを使う場合は

$ diskutil list
...
/dev/disk4 (external, physical):
 #:                       TYPE NAME                    SIZE       IDENTIFIER
 0:        CD_partition_scheme                        *506.3 MB   disk4
 1:              CD_ROM_Mode_1                         440.9 MB   disk4s0

$ sudo dd if=/dev/disk4s0 of=NS33J.iso bs=2048

のように、CDROMドライブを探して(上記の場合はdisk4)、そのスライス0から読み出せばよい。 なお、ISOファイルのサイズはきっちり2048の倍数でないとVirtualBoxがエラーを出すので注意。

仮想計算機の作成と設定

準備が整ったら、(もしまだなら)VirtualBoxの最新版をインストールする。 ホストOS毎のVirtualBoxのインストール方法自体はネット上にたくさんの情報があるので、それらを参考にされると良い。 そして、以下を参考に、NEXTSTEPをゲストOSとした仮想計算機を設定する。

VirtualBox(Version 7.x以上を想定)の仮想計算機の主な設定

仮想計算機を作成したら、あとは(その昔)実機にNEXTSTEPをインストールしたときと同様のステップで、OSをインストールする。 インストーラーが想定しているとおりSCSIディスクを使うため、IDE(ATAPI)ドライブを使う場合のような、トリッキーな手順を踏む必要は無い。

  1. あらかじめCDROMのISOファイルと起動用フロッピーディスクのイメージを選択(接続?)しておく
  2. 仮想計算機を起動し、インストーラーの指示に沿って進む
  3. ドライバーディスク(こちらのイメージ)を選択肢、SCSIハードディスクとCDROM用に、いずれも"BusLogic PCI SCSI Adapter"を選択する

仮想ハードディスクへのNEXTSTEPのインストールが終わると、再起動が促されるので、フロッピーをイジェクトしてから、再起動する。 起動後、足りないデバイスドライバーのフロッピーを挿入するように促されるかもしれないので、そのときは指示に従う。

懐かしい画面が無事起動したら、以下をヒントにOSの設定を進める。 下記のマウスドライバーのインストールが完了するまでは、マウスポインターをゲストOSの枠から外に出したいときは、 その都度、ホットキー(どのキーが相当するか、ゲストOSのウィンドウの右下に表示されている)を押す必要がある。 ホットキーはVirtualBoxの設定("Expert"側の、「入力」の「仮想マシン」のタブ)で変更可能。

ゲストOS(NEXTSTEP 3.3J)の主な設定項目

ネットワークアダプターが動作しない状況で、ネットワーク関係の設定を行うと、再起動の際に途中で先に進まなくなってしまうので要注意。 そんな場合は、シングルユーザーモードで立ち上げ(-s オプション付きで起動)、/etc/hostconfigの内容を初期値に戻してから、やり直す。

上記の設定からも分かるとおり、VirtualBoxではゲストOSのネットワークアダプターを"NAT"に接続すると、 10.0.2.0/24の、ルーター10.0.2.2, ネームサーバー10.0.2.3のサブネットに接続され、DHCPで10.0.2.15から順にアドレスが割当られるようである。 この場合は、ゲストOSはひとつだけなので、固定アドレス10.0.2.15を設定すればよい。 2台目以降を同時に動かす場合は、10.0.2.16, 10.0.2.17,...と順に割り振れば良い。

また、今回の例では、10.0.2.15の23番ポート(telnet) にポートフォワードするようにしているので、外部のマシンからtelnetでNEXTSTEPに接続できるようになる。

インストールが済んだら、「システム登録用ディスク」のフロッピーイメージをマウントして、シリアル番号を登録すれば、初期設定は完了である。 あとは、DEVELOPERS CD等から必要なパッケージをインストールすればよい。

外部とのデータのやりとり

基本的な設定が終われば、必要なソフトやデータをダウンロードしてインストールすれば良さそうなものであるが、これが意外と厄介である。 というのは、NEXTSTEPにはhttpsに対応したブラウザーは(私の知る限り)存在しないし、sshもsftpも使えない。 ではftpはと言うと、NATの内側からのアクセスのため、パッシブモードでないと外部とやりとりできないのだが、NEXTSTEPのftpはそれに対応していない。

そのようなわけで、筆者は、プライベートネット内のLinux上ftpサーバー(vsftpd)を立ち上げ、一方、NEXTSTEPにはncftpの古いバージョンをインストールして使っている。

初期に最低限のファイルをダウンロードするための手段として、ncftp v3.04をNEXTSTEP上でコンパイルしたバイナリー(ncftpコマンドのみ)を ドライバーファイルのフロッピーイメージに入れて おいた(まずset passive onしてから、open -u username 192.168.xx.xxxのようにして接続できます。 コンパイルが通るよう、かなりいい加減に手当てしてあるので、不具合があるかもしれません。自己責任でお使いください)。

21世紀に使うために

パッチを当てないと、西暦2000年以降の日付に設定することもできません・・・

もともとNEXTSTEP 3.3はY2K非対応だったので、1999年に対応パッチが出された。 残念なことに、パッチを公開していたウェブサイトはすでに閉鎖されており、公式に入手する手段を見つけることはできなかった。 英語版のパッチはウェブ上に掲載されているが、日本語版は3.3Jとの互換性は無いので、英語版Y2Kパッチを日本語版に無理に適用すると不具合が生じる

幸い、NEXTSTEP 3.3JをVMWareにインストールした事例を紹介したページの最後のあたりに、日本語版用のパッチのISOファイルが掲載されているので、これをダウンロードしてCDROMとしてマウントすればパッチのパッケージを開くことができる。

とは言っても、NEXTSTEPは32ビットのOSなので、2038年問題は避けようが無い。 試しに、Preferenceで未来の日付を設定してみたところ、2037年12月大晦日までは大丈夫だったが、2038年元旦にはエラーが出て設定できなかった。 個人的には、その頃までこのOSを触っていることは無いだろうから、大丈夫といえば大丈夫である。

(書きかけ)

お役立ち情報