Big Drive (Extended LBA / LBA48) にちゃんと対応する以前の Mac に 137GB 以上のドライブを接続するとどうなるか、 よくわからなかったので、試してみました。 (以下、GB は10の9乗バイト)
iMac 350 (Indigo/BootROM は 4.x にアップデートしてあります) に Maxtor の 160GB ドライブを接続してみたところ、 Mac OS X 10.3 のインストール CD の Disk Utility は 137GB ドライブとしてしか認識してくれませんでした (ので、そこで実験を打ち切りました。 137GB ドライブとしてちゃんと機能するかどうかも確認していません)。
事前に私が予想したのは、OpenFirmware は先頭 137 GB 未満 (あるいは、機種によっては 8GB) しか認識できないので、 起動パーティションはその領域に収まっていなければならないが、 Mac OS X が立ち上がってしまえば、全領域認識できる、 というものでした。この結果は意外でした。
ソースを見てみたところ、Keylargo (ATA その他のI/Oのコントローラチップ) のデバイスの属性に lba-48 というキーの属性が存在するときのみ Mac OS X のデバイスドライバは 137GB 超のドライブを扱える、 というふうになってました。 この lba-48 属性は OpenFirmware によって設定されるのだと思います。
ATA コントローラが
CPU の介在なしに自らディスクドライブにコマンドを発行するような
インテリジェントな設計になっていないかぎり、
Big Drive への対応は OS のデバイスドライバの変更だけで済むはず、
と思っていたので、これらの結果は意外でした。
もしかすると、
Mac の ATA コントローラは
そういうインテリジェントな設計になっているのかもしれません。
そうではなくて、ハード的には対応可能ではあるが、
OpenFirmware が対応していないのであれば、
OS のデバイスドライバも対応しないと言う方針なのかも知れません。
まだ釈然としないので、今後暇を見つけて調査したいと思っています。
ところで、
Keylargo が LBA48 に対応している (137GB 超に対応している) かどうかは、
開発環境をインストールしてあれば、
/Developer/Applications/Utilities/IORegistryExplorer.app
を使って、知ることができそうです。例えば、
iMac TFT/800 の場合は IODeviceTree plane の
pci@f2000000:mac-io@17:ata-4@1f000
に lba-48 というキーの属性が存在するので、対応していると予想されます
([2005/7/9 追記] 確認しました。250GB に入れ換えて使っています)。
PowerMac G5 の ATA コントローラ (Keylargo ではなくて Kauai ですが)
も lba-48 属性を持つので、
DVD ドライブを外してそこにハードディスクを置く場合にも
Big Drive に対応していると予想されます (確認はしていません)。
iMac 350 と同様、LBA 48 に対応していない PowerMac G4/350 (AGP) の Keylargo に Maxtor 160GB (4R160L0) を接続して実験してみました。 (このマシンの boot drive は ACARD,6860M に接続しています)
というわけで、ハード的には全領域使えるが、 OpenFirmware が LBA48 に対応していないので、 137GB 超のドライブとして使ってしまうと、 ブートできなくなるなどの問題が出てくるので、 Mac OS X ではわざと使えないようにしている、 ということのように見えます。
なお、上記実験で lba-48 属性を追加するには、OpenFirmware で
dev hd
dev ..
" " " lba-48" property
device-end
を実行してから、(reset-all など行なわずに) boot しました。
hd は最初から定義されている devalias です。
(この効果は一時的なものなので、(再)起動の度に実行する必要があります。
私は nvramrc に登録しました。)
なお、上記の操作で、OpenFirmware が実際に LBA48 対応になるわけではないので、
137GB を超える領域を含むパーティションからブートできないことに変わりはないはずです。
実際、この設定のドライブを起動ディスクとして使ってみたところ、
137GB までにあるパーティションからはブートできましたが、
137GB よりも後にあるパーティションからは OpenFirmware でエラーが
発生してブートできませんでした。