在 Mac OSX 10.10 Yosemite 下打开第三方 SSD 的 TRIM 支持

之前写过在 Mavericks 下自己安装 SSD 组建 Fusion Drive,里面最后一步是打开第三方 SSD 硬盘的 Trim 支持。Yosemite 系统做了一些安全性升级,当时的方法已经不再适用。在 Yosemite 下打开 Trim 需要注意:

Yosemite 多了一个功能叫做 Kext Signing,简单的说就是系统为了安全性考虑不再加载被修改过了的硬件驱动程序,这就使而之前的开启 Trim 方法不能再用。如果系统启动时检测到 Trim 选项被手动开启就不会加载硬盘驱动程序,显示一个灰色的禁止符号卡死,导致系统无法启动。如果你已经遇到了这个问题解决方法见本文最后。

因为这个问题的存在,Yosemite 下想手动打开 Trim 就比原来复杂了许多。对于普通用户,我建议还是下载一个第三方软件,比如 Chmeleon SSD Optimizer,傻瓜化操作,一键打开 Trim 支持,还额外提供其他方便的功能,强烈推荐。

Chameleon SSD

使用时注意要先点击上面的锁头图标解锁。然后点击 Trim 开关,出现对话框提示关闭系统的驱动验证功能,选择是,然后系统会自动重启。重启后再次选择 Trim 开关,系统会在几秒钟之后再次重启,操作完成,可以在“系统报告”里确认。

屏幕快照 2014-10-19 13.14.43

如果你是个喜欢万事 DIY 的高级用户,那么可以选择下面三种方法手动打开 Trim。引用自 Insanelymac,我没测试过,风险自负。

第一种方法:

这里下载一个别人已经修改好的 SSD 驱动 Kext. 拷贝到 /System/Library/Extensions/(备份原文件),之后删除 /System/Library/Caches/com.apple.kext.cache/Startup/ 下的缓存,最后打开终端,运行下面的命令之后重启。

sudo touch /System/Library/Extensions && sudo kextcache -prelinked-kernel /System/Library/Caches/com.apple.kext.cache/Startup/kernelcache -K /System/Library/Kernels/kernel /System/Library/Extensions

第二种方法:

在终端里面运行下面四条命令。
sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.bak

sudo perl -pi -e 's|\x00\x41\x50\x50\x4c\x45\x20\x53\x53\x44\x00|\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

sudo touch /System/Library/Extensions

sudo kextcache -prelinked-kernel /System/Library/Caches/com.apple.kext.cache/Startup/kernelcache -K /System/Library/Kernels/kernel /System/Library/Extensions

第三种方法:

只能在你已经安装过 Clover bootloader 的前提下使用。

在 config.plist 里面添加下面段落然后重启:

<key>KextsToPatch</key>
		<array>
			<dict>
				<key>Name</key>
				<string>IOAHCIBlockStorage</string>
				<key>Find</key>
				<data>
				AEFQUExFIFNTRAA=
				</data>
				<key>Replace</key>
				<data>
				AAAAAAAAAAAAAAA=
				</data>
				<key>Comment</key>
				<string>TRIM Enabler</string>
			</dict>
		</array>

解决因打开 Trim 导致 Yosemite 显示灰色禁止符号无法启动的方法:

  1. 长按电源强行关机。按住 Cmd + R 键重新开机进入恢复模式。
  2. 从菜单里选择终端(Terminal)。
  3. 运行 nvram boot-args。如果屏幕显示 “kext-dev-mode=1″,那么跳到第6步。如果显示 “error getting variable“,继续以下步骤。
  4. 运行 nvram boot-args=kext-dev-mode=1
  5. 再次重启按住 Cmd + R 键进入恢复模式。
  6. 运行下面命令。
    ls /Volumes (记下你的硬盘名字)
    cd "/Volumes/你的硬盘名字"
    touch System/Library/Extensions kextcache -prelinked-kernel System/Library/Caches/com.apple.kext.caches/Startup/kernelcache -K System/Library/Kernels/kernel System/Library/Extensions
  7. 等待命令运行完成,可能需要好几分钟,不要强行退出。最后重启。
  8. 检查系统报告里的 Trim 支持,应该显示“是”。

最后需要注意:

  • 关闭系统验证 Kext 驱动程序的设置是存储在 Mac 的 NVRAM/PRAM 里面的。如果你手动清除了它们 (启动时按住 Cmd+Option+P+R),那么非常可能会导致系统重新验证驱动程序从而无法开机。运行 Apple 的硬件维护程序也可能导致同样的状况。所以进行类似操作前一定要手动关闭 Trim 支持。如果你不幸中招了,覆盖方式重新安装系统是最快的解决办法(不会丢失个人文档)。
  • 关闭验证 Kext 有潜在的安全风险,建议关闭这个功能之后避免下载来历不明的程序。