しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

MacBook Pro (Early 2011) でも AHCI を有効にしたい

こんばんわ、スピード狂であることに定評のあるしばやんです。

普通の人は SSD 買ったら AHCI を有効にして NCQ や TRIM でホルホルしたいですよね。僕もしたいのですが、Apple の陰謀により Boot Camp 使用時には IDE モード固定だったり、EFI で起動できなかったりと制限が多いです。

しかし、AHCI に関してはひよひよ大先生により日本語の情報が公開されてます。

MBR を改造して Mac Pro でも Windows を AHCI で使おう

さすが、ひよひよ大先生!

そして今日、Twitter で上のように教えてもらったので MBR を書き換えてみました。

結果:IDE から変化がない。

MBR の場所をミスったのか、Apple が EFI 書き換えて塞がれたのか、コンフィギュレーションレジスタの書き換える場所が異なっているのか、さっぱりわかりません。

悔しいのでもうちょっと調べてみたいと思います。

追記

ネットを漂っていると AHCI 時は port 0-5 みたいな記述があったので、AHCI 有効 + AHCI 6 port にする設定にして試しました。

0000016D  B060              mov al,0x60

これを MBR に書き込んで再起動するとブルースクリーン。エラーメッセージには SATA Controller 周りでエラーがあるから新しいデバイスを外せとか書いてありました。

さらに追記

http://forums.macrumors.com/showthread.php?t=1104245

このフォーラムに上がっている画像を見ると AHCI 時のデバイス ID は 1C03 のようです。Windows では 1C01 なので、Intel のドキュメント*1に上がっているデータと付き合わせると、Mac OS X 起動時には AHCI port 0-5 で動いているものと考えられます。

なので先ほどの AHCI + 6 ポートにする方法で AHCI 自体は有効に出来ているんではないかと考えています。何でブルースクリーンになるのかはわからないのですが、他にも弄る部分があるのかもしれないです。

Mac OS X 起動時での PCI コンフィギュレーションレジスタの値を確認出来ればいいのかもしれないですが、最近の OS はいろいろとセキュリティ厳しいので難しい感じがします。

さらにさらに追記

MBR を書き換えて再起動する前に Intel の AHCI ドライバを入れて試したところ、STOP エラーは出るのですがドライバのロードは行われているような感じでした。

青画面 on Twitpic

そこで回復コンソールから CrystalCPUID x64 を使ってシステム情報を出力した結果、SATA Controller のデバイス ID は 1C01 から 1C03 に変わっていることを確認できました。

13   0  31   0 8086h:1C49h.05h 060100h ISA Bridge
14   0  31   2 8086h:1C03h.05h 010601h Serial ATA Controller
15   0  31   3 8086h:1C22h.05h 0C0500h SMBus Contoller

Intel が出している資料によると、1C03 はモバイル向けチップセットの AHCI + 6 port モード時のデバイス ID となっています。

Dev ID B2 Rev ID B3 Rev ID Comments
1C01h 04h 05h Mobile: Non-AHCI and Non-RAID Mode (Ports 0-3)
1C03h 04h 05h Mobile: AHCI (Ports 0-5)
282Ah2 04h 05h Mobile: RAID 0/1/5/10 (Ports 0-5) (AIE bit = 0)
1C05h2 04h 05h Mobile: RAID 0/1/5/10 (Ports 0-5) (AIE bit = 1)

この STOP エラーを何とか出来れば MacBook Pro (Early 2011) でも AHCI 運用が出来そうですが、いつものように原因はさっぱりわからず・・・。

*1:http://www.intel.com/Assets/PDF/specupdate/324646.pdf