Macintoshは装着されているデバイスを認識するためにデバイスドライバを使用します。
このドライバは「Apple社製ハードディスク用ドライバ」などと呼ばれ、ディスクをフォーマットする時に自動的に書き込まれるほか、機能拡張によってシステム起動後に認識されるものもあります。
起動可能なディスクにはHFSのパーティションを読み込む前にロードされるデバイスドライバが必要になりますが、BasiliskIIで作られるHFVファイルにはHFSパーティションの生データしか書かれておらず、フォーマットを試みてもドライバが格納される「ドライバパーティション」は作られません。
(BasiliskIIはHFVファイルをフロッピーのように認識しているようです)
そのためHFVファイルの拡張子をISOに変えてCD-Rに焼いても、実機ではHFSボリュームとして認識するのに起動はしてくれません。
CD-ROMは「Apple CD機能拡張」が必要なように専用のドライバが要求される特殊なデバイスです。
ToastやMacCDRというソフトを使えば起動可能CDが作れるといった記事もありますが、CD-Rを焼けるMacがそもそも無いとかいろいろワケありだと思いますので、この記事では既存の起動可能なCD-ROMからドライバパーティションをぶっこ抜いて、BasiliskIIのHFVファイルを起動するためのドライバを用意しようというのが今回の趣旨です。
実機のテストはLC575のロジックボードを入れたMacintosh Color Classic IIで行い、漢字Talk7、漢字Talk7.5.5、Mac OS 8.1の3つのシステムが起動することを確認しました。
ドライバパーティションのイメージファイル (84kB)
このドライバファイルは
iMac DV(Mac OS 9.0)のリストアCDの先頭部分を切り取り、HFSパーティション以降にデータが無いものとして変更を加えたものです。
入手可能なこれ以降のバージョンのCDでは、PowerPCのコードしか含まれていないので68k Macの起動はできませんでした。
漢字Talk7.5などの古いCDを使うとATAPIのドライバが存在しない事もあるので、このバージョンを使うのが得策のようです。
この中に書かれているパーティションマップの内容は下の表のとおりで、1セクタのサイズは基本的に512バイトです。
ただしドライバを読み込むまではCD-ROMの物理セクタが2048バイトなので、2048バイト区切りのパーティションマップも同じ場所に書かれています。
パーティション | 開始セクタ | サイズ | タイプ |
ER | $0000 | $0001 | Driver Descripter Map |
PM-PM | $0001 | $003F | Apple Partition Map |
PM-DR | $0040 | $0038 | Apple SCSI Patch driver |
PM-DR | $0078 | $004C | Apple SCSI HDD driver |
PM-DR | $00C4 | $0078 | Apple SCSI CD-ROM driver |
PM-DR | $013C | $0038 | Apple ATA Patch driver |
PM-DR | $0174 | $0078 | Apple ATAPI CD-ROM driver |
PM-PA | $01EC | $0200 | MESH Chip Patch |
PM-HF | $03EC | HFVサイズ | Apple HFS |
最終のApple HFSの所にBasiliskIIのHFVファイルを連結します。
HFSパーティションの開始セクタの場所は変わらないので何も編集しなくても実機で起動できるようになりますが、
このドライバファイルにはディスク全体やパーティションのサイズが書かれているので、
気になる人は連結するHFVファイルの大きさに合わせてバイナリエディタで以下の部分を編集してください。
ダウンロードした時点では702MBのHFSパーティションとしてサイズを入力してあります。
ビッグエンディアンなので注意してください。
アドレス | サイズ | 変更内容 |
$0004 (sbBlkCount) | 4 | HFVファイルサイズ / 2048 + $FBを入れる。 |
$0E0C (pmPartBlkCnt) $0E54 (pmDataCnt) | 4 | HFVファイルサイズ / 512 を入れる。 |
$400C (pmPartBlkCnt) $4054 (pmDataCnt) | 4 | HFVファイルサイズ / 2048 を入れる。 |
たとえばCD-RいっぱいのHFVデータを作りたければ、BasiliskIIで702MBのイメージを作ってください。
702MB(=736,100,352)を512で割ってブロックサイズ(1,437,696)を求め、16進数に変換した00 15 F0 00を$0E0Cと$0E54に書きます。
702MB(=736,100,352)を2,048で割ってブロックサイズ(359,424)を求め、16進数に変換した00 05 7C 00を$400Cと$4054に書きます。
次に2,048のブロックサイズに$FBを足した00 05 7C FBを$0004に書いてこのファイルを保存してください。
最後に実際のHFVファイルとマージしてISOファイルを生成します。以下はWindowsのコマンドプロンプトを使った場合の書き方です。
copy /b CDBootDriver.img + BasiliskII.hfv bootable.iso
出来上がったbootable.isoはディスクアットワンス、モード1/2048バイト/セクタでCD-Rに書き込めば実機で起動できるCDの完成です。[C]キーかマウスの押しっぱなしで起動してみてください。
参考に、主要なディスクサイズで計算した時の値は以下の通りです。
HFVサイズ | $0004 | $0E0C, $0E54 | $400C, $4054 |
702MB | 00 05 7C FB | 00 15 F0 00 | 00 05 7C 00 |
512MB | 00 04 00 FB | 00 10 00 00 | 00 04 00 00 |
100MB | 00 00 C8 FB | 00 03 20 00 | 00 00 C8 00 |
10MB | 00 00 14 FB | 00 00 50 00 | 00 00 14 00 |