Mac OS X Mountain Lionで、Apple製じゃないSSDのTRIMを有効にしてみた。


よい子のお約束、というか免責のお知らせ。
この記事に書いてあることをうかつに実行すると、あなたのMacが起動しなくなる可能性があります。
転んでも泣かない人だけがマネしてください。なんか文句言われても僕はしりません。

正月はおうちネットワークを快適にしようということで色々といじっているのですが、僕のMac miniに放り込んだIntelの1万円を切る120GBなSSD、330 Series SSDSC2CT120A3K5のTRIMがどうやってもenableにできませんでした。

APPLE Mac mini/ 2.3GH Quad Core i7/4G/1TB/USB3/Thunderbolt MD388J/A

APPLE Mac mini/ 2.3GH Quad Core i7/4G/1TB/USB3/Thunderbolt MD388J/A

定価:¥ 70,766

カテゴリ:Personal Computers

発売日:2012-10-24



Intel SSD 330 Series Maple Crest 120GB MLC 2.5inch 9.5mm Reseller Box SSDSC2CT120A3K5

Intel SSD 330 Series Maple Crest 120GB MLC 2.5inch 9.5mm Reseller Box SSDSC2CT120A3K5

中古価格: ¥ 4,336 より

Amazon価格:¥ 24,799

カテゴリ:Personal Computers

発売日:2012-04-13



シリコンパワー ノートPC用メモリ DDR3 1600 PC3-12800 8GB×2枚 204Pin Mac 対応 永久保証 SP016GBSTU160N22

シリコンパワー ノートPC用メモリ DDR3 1600 PC3-12800 8GB×2枚 204Pin Mac 対応 永久保証 SP016GBSTU160N22

定価:¥ 28,800

Amazon価格:¥ 6,996

カテゴリ:付属品

発売日:2012-09-01



ググるとTrim Enablerなるソフトウェアを使えば一発だという記事を見かけるのですが、僕のMac mini Late 2012とOS X 10.8.2では何度やってもダメでした。

さらに深くググると、How to Enable TRIM Support for All SSDs in OS X Lion or Mountain Lionという記事が見つかったのですが、この方法でもダメなので、記事の内容を基に自分の環境でもイケる方法を探し、結果成功しました。

元記事の方法では、

sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

とあり、
52 6F 74 61 74 69 6F 6E 61 6C 00 41 50 50 4C 45 20 53 53 44 00 51
つまり、RotationalAPPLE SSD Qという文字列を検索して置換しているのですが、僕の手元のIOAHCIBlockStorageを見ると
52 6F 74 61 74 69 6F 6E 61 6C 00 41 50 50 4C 45 20 53 53 44 00 54
つまり、RotationalAPPLE SSD Tと書いてありました。
となれば簡単です。

sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x54)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

を実行すれば良いのです。

ということで、全体の手順は次のとおり。(なんかブラウザでは見づらいのでtext版用意しました。)

sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /IOAHCIBlockStorage.original

として、まずIOAHCIBlockStorageのバックアップを取っておきます。
次に本命のバイナリパッチ。

sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x54)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

あとは、cacheを更新して再起動します。

sudo kextcache -system-prelinked-kernel
sudo kextcache -system-caches
sudo reboot

あとは無事に起き上がってくるのを祈っておいてください。

結果、うまいこといきました。結構嬉しい。
スクリーンショット 2013-01-02 18.41.56

ちなみに、

$ sudo kextcache -system-prelinked-kernel
Kernel file /mach_kernel does not contain requested arch: i386

とか言われましたけど、まぁ問題ないらしいです。

あと、念のために書き換え前後のSHA1 hashを貼っておきます。

SHA1(/IOAHCIBlockStorage.original)= 3e8a10703bc8273f5c5eeec478ea009f5e04ca1c
SHA1(/IOAHCIBlockStorage.custom)= cd4a46a9a6ce3e55639263e3bb98db2dee19ded2

2013/03/03 追記 —
Mac mini Late 2012, OS X 10.8.2にCrucial m4, M4-CT512M4SSD1を組み込んで上記のスクリプトを実行しました。
結果、無事にTRIMを有効にすることができました。

Crucial 2.5インチ 内蔵型 SATA3.0対応 M4 SSDシリーズ 512GB CT512M4SSD2

Crucial 2.5インチ 内蔵型 SATA3.0対応 M4 SSDシリーズ 512GB CT512M4SSD2

中古価格: ¥ 16,800 より

Amazon価格:¥ 41,000

カテゴリ:Personal Computers


2013/09/18 追記 —
上記のMac mini Late 2012にCrucial m4, M4-CT512M4SSD1を組み込んだマシンをOS X 10.8.5にアップデートしたらTRIMが無効になってしまいました。
気付いて、上記のスクリプトを再度実行したところ、無事に再びTRIMを有効にすることができました。

Powered by