戻る
68k Mac小ネタ集

BasiliskIIのHFVを実機で起動可能なISOイメージに変換する

執筆 2018年10月14日
古いMacのコレクター向けの記事です。
BasiliskIIを使って実機のインストーラや復旧CDを作る時に使えます。
バイナリエディタをご用意ください。

Macintoshがディスクを認識するためには…

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$0001Driver Descripter Map
PM-PM$0001$003FApple Partition Map
PM-DR$0040$0038Apple SCSI Patch driver
PM-DR$0078$004CApple SCSI HDD driver
PM-DR$00C4$0078Apple SCSI CD-ROM driver
PM-DR$013C$0038Apple ATA Patch driver
PM-DR$0174$0078Apple ATAPI CD-ROM driver
PM-PA$01EC$0200MESH Chip Patch
PM-HF$03ECHFVサイズApple HFS

最終のApple HFSの所にBasiliskIIのHFVファイルを連結します。 HFSパーティションの開始セクタの場所は変わらないので何も編集しなくても実機で起動できるようになりますが、 このドライバファイルにはディスク全体やパーティションのサイズが書かれているので、 気になる人は連結するHFVファイルの大きさに合わせてバイナリエディタで以下の部分を編集してください。 ダウンロードした時点では702MBのHFSパーティションとしてサイズを入力してあります。 ビッグエンディアンなので注意してください。

アドレスサイズ変更内容
$0004 (sbBlkCount)4HFVファイルサイズ / 2048 + $FBを入れる。
$0E0C (pmPartBlkCnt)
$0E54 (pmDataCnt)
4HFVファイルサイズ / 512 を入れる。
$400C (pmPartBlkCnt)
$4054 (pmDataCnt)
4HFVファイルサイズ / 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
702MB00 05 7C FB00 15 F0 0000 05 7C 00
512MB00 04 00 FB00 10 00 0000 04 00 00
100MB00 00 C8 FB00 03 20 0000 00 C8 00
10MB00 00 14 FB00 00 50 0000 00 14 00

気を付けること

参考文献