Technote 1116
PowerBook HD Upgrades and SCSI disk mode Compatibility
目次
4GB以上のATAハードディスク
この問題が以前に発生しなかった理由
回避策
ATAハードディスクとI/Oエラーについて
この問題が以前に発生しなかった理由
回避策
|
このテックノートは一部のPowerBookのハードディスクを取り替えることによって、SCSIディスクモードを利用した際に不具合が発生する2つの問題について解説します。これらの問題はATAハードディスクをSCSIディスクモードで利用した場合のみに発生します。
1つ目の問題は内蔵のATAハードディスクを4GB以上のモデルに取り替えて、SCSIディスクモードで利用した場合に起こります。この問題はPowerBook Duo 2300c、PowerBook 190シリーズ、1400シリーズ、2400シリーズ、3400シリーズ、5300シリーズで発生します。2つ目の問題は内蔵のATAハードディスクを特定のサイズのモデルに取り替えた場合に起こります。この問題はPowerBook 3400以前の機種で発生します。
このテックノートはハードディスクの販売に関わっている方々やドライバを開発しているデベロッパが対象です。 |
4GB以上のATAハードディスク
一部のPowerBook機種では、内蔵のATAハードディスクを大容量モデルに取り替えると、SCSIディスクモードが正しく動作しないことがあります。この問題の対象となる機種はPowerBook Duo 2300c、PowerBook 190シリーズ、1400シリーズ、2400シリーズ、3400シリーズ、5300シリーズです。上記のPowerBookはATAハードディスクを搭載しており、問題が発生します。尚、内蔵ハードディスクがSCSIの場合は問題が発生しません。
この問題は以下の条件で発生します。
- PowerBook標準搭載の内蔵ハードディスクを大容量モデルにアップグレードする。
- 新しいハードディスクが4GB以上のモデルである。
- PowerBookをSCSIディスクモードで利用する。
|
SCSIディスクモードのROMにバグがあり、SCSIコマンドが発行された際のオフセット値は最初の32ビットしか認識されません。このため、4GB以上のハードディスクではオフセットがラップして、誤った位置のデータが読み込まれたり、書き込まれたりします。
PowerBook G3シリーズなど、上記以外の機種はROMが直っており、4GB以上のハードディスクでもこのような問題は起きません。
すべてのPowerBookは標準搭載の内蔵ハードディスクでは問題なくSCSIディスクモードが利用できます。この問題は古いPowerBookの内蔵ATAハードディスクを4GB以上のモデルにアップグレードした場合のみ発生します。
また、SCSIハードディスクは影響を受けませんし、ATAハードディスクでもSCSIディスクモードを利用しなければ問題は発生しません。PowerBookの内蔵をハードディスクを4GB以上にアップグレードしても、普段のようにMacintoshコンピュータとして使う分についてはまったく問題ありません。この問題はディスクドライバでは解決できません。サードパーティ製のディスクドライバを利用しても同じ問題が起こります。また、ハードディスクをパーティションしても問題は解決しません。PowerBookがSCSIディスクモードの場合は、SCSIコマンドをATAへ変換するROMのコードしか常駐していません。
残念ながらこの問題は対応方法がありません。バグがROM内にある上、SCSIディスクモードの場合はMac OSがロードされていないので、パッチを当てることは不可能です。
この問題が以前に発生しなかった理由
繰り返しになりますが、PowerBookに標準搭載されているハードディスクではこのような問題は発生しません。対象となるPowerBookはすべて3GB以下のハードディスクがインストールされています。この問題は4GB以上の大容量ハードディスクが一般的に出回り始めたころ(PowerBook G3の開発段階)に発覚しました。
回避策
この問題は完全に解決することはできません。SCSIディスクモードはMacintosh ROMの機能です。SCSIディスクモードの場合、Mac OSは起動されませんので、パッチを当てることは不可能です。この問題を回避策する方法は2つあります。
- PowerBook Duo 2300c、PowerBook 190シリーズ、1400シリーズ、2400シリーズ、3400シリーズ、5300シリーズについては、4GB以上のATAハードディスクにアップグレードしない。
- 4GB以上のATAハードディスクにアップグレードした場合はPowerBookをSCSIディスクモードで使用しない。
|
ATAハードディスクとI/Oエラーについて
この問題はPowerBook 3400(1997年2月発表)以前の機種のATAハードディスクを取り替えた場合に起こります。PowerBook
Duo 2300c、PowerBook 190シリーズ、PowerBook 1400シリーズ、PowerBook 5300シリーズのSCSIディスクモードにバグがあります。内蔵のATAハードディスクの総容量を得る際は、ATAドライバから16ビットの値が2つ返されます(512バイトブロックの総数)。この2つの値を合わせて計算する際に下の位の値は負符号が誤って処理され、ハードディスクの実際の容量より小さい値となってしまいます。ハードディスクの容量を実際より小さく認識してしまうため、ハードディスクの最後のボリュームの大きなオフセットの読み書きがあると、I/Oエラーを返してしまいます。具体的にはハードディスクの最後の16MBが使えなくなります。
この問題は0x8000ブロック以上(総容量16MB以上)のハードディスクで総ブロック数の15ビット目の値が1の場合に発生します。今までPowerBookに使われてきたハードディスクの内、PowerBook 3400に使われた2GBハードディスクが始めてこの条件にあてはまりました。PowerBook 3400以前の機種ではこの問題は発覚されませんでした。
この問題が以前に発生しなかった理由
PowerBook 3400以前の機種に搭載されているハードディスクは上記の条件にあてはまらないため、問題は起きません。PowerBook
2400、PowerBook 3400、PowerBook G3や今後発売されるPowerBookについてはこのバグは直っています。しかし、上記以前の機種はこの問題が発生する可能性があるので、PowerBook Duo 2300c、PowerBook 190シリーズ、PowerBook 1400シリーズ、PowerBook 5300シリーズのハードディスクをアップグレードする際は、ハードディスクが問題の対象とならないよう注意が必要です。
この問題を検出するサンプルコードは今後Developer CDに掲載します。
回避策
この問題を回避するには、ドライブの最後に16MBの使用しないパーティションを作成します。これは問題の対象となる範囲がドライブの最後の16MBであるからです。パーティションを作成するにはドライブ設定を利用します。しかし、ドライブのデフォルトパーティションを壊すことになりますので、あまり現実的な回避策ではないかもしれません。
この問題も完全に解決することはできません。SCSIディスクモードはMacintosh ROMの機能です。SCSIディスクモードの場合、Mac OSは起動されませんので、パッチを当てることは不可能です。
参考文献
更新日: 1997 年 7 月 23 日
|