OS X 10.10 Yosemite 原生还是不支持 Trim , 所以需要手动开启。 对于10.9 系统可以使用TRIM Enabler 3.2.2软件直接开启第三方SSD 的 Trim 的支持。 但是 10.10 如果使用前者工具发帖之日会造成无法启动。
如下时开启的方法。 但是依然还是会有问题。
简而言之,SSD 的性能是会随着已使用容量的变化而改变的,Trim 功能可以让操作系统软件和 SSD 硬件通力合作,尽可能保持新盘的读写效率。
然后,众所周知,Apple 的生态圈是出了名的封闭。比如 Trim 这个 SSD 必备的 feature,OS X 只会在 Apple 御用的 SSD 上打开,而自己买的第三方则不行。
那么,我们需要给 OS X 的硬盘驱动(一个.kext文件)打个包,让其误认为现在这块 SSD 是御用的。这个方法在 10.9 以前都没有什么问题。但从 10.10 DP5 开始,OS X 只加载带有信任的签名的驱动。也就是说,10.10 要打开第三方的 trim,不仅要给 kext 打 patch,还要关闭签名验证。
症状
今天上午手贱用了一下 Trim Enabler,重启时杯具了:开机进度条到三分之一左右,苹果 LOGO 变成了一个灰色的禁止图标。
原因
根据判断,大概是没有正确关闭签名验证。
解决方案
关机。按住⌘R的同时开机,进入安全模式。
打开终端,键入以下命令(YourDisk 用你的系统分区名代替):
nvram boot-args=kext-dev-mode=1 cd /Volumes/YourDisk touch System/Library/Extensions kextcache -prelinked-kernel System/Library/Caches/com.apple.kext.caches/Startup/kernelcache -K System/Library/Kernels/kernel System/Library/Extensions
重启。有一部分人应该能解决问题了。如果没解决,继续往下走。
依然进入安全模式,再打一遍上述命令(第一行nvram什么的就不需要了),重启。
如果还不行,在执行kextcache一行时,观察有哪些行有invalid signature信息。记下有这些信息对应的 kext 名。
进入/Volumes/YourDisk/System/Library/Extensions,删除第一个签名有问题的 kext (使用rm -rf)。重启。
我到这儿就解决问题了。如果你还是不行,继续往下删除第二个、第三个带invalid signature的 kext。但注意不要删除诸如IOAHCIBlockstorage.kext等系统核心驱动。看名字,你会知道哪些能删哪些不能删的。
后记
目前,在 OS X 上使用第三方 SSD,Trim Enabler 依然是不二选择。据作者说,3.2.5 版已经可以在 10.10 DP5 上正常使用。
关于 kext 的签名机制,我翻译一段 Trim Enabler 开发者的话:
显然 Apple 想要屏蔽那些会对 OS X 体验有影响的应用。虽然禁用 kext 签名审查还能让 Trim Enabler 正常工作,我还是希望启用 Trim 的过程能更顺畅些。我第一个想到的是自己写一个内核扩展(kext)来达到目的。但这段详细资料说:
kext 签名意味着一个合法、被签名的内核扩展只能在给苹果交每年99刀保护费、拿到证书后才能创建。另外,开发者必须填一个表格来解释为什么他们需要这个证书。kext 证书只会在申请批准后发出。
Apple 现在用这种方式有效地控制着什么 kext 能在 OS X 上用,由此来控制开发者(比如我)写的什么新功能可以在 OS X 上实现。既然 Apple 已经花了这么大力气阻止第三方 SSD 拿到 Trim 的功能,我猜如果有个什么人写了这样一个(打开 Trim 功能的) kext 的话,申请证书环节也一定会被 Apple 拒。所以就目前而言,使用 Trim Enabler 3.2.5 或以上版本是在 OS X 上开启 Trim 的最好办法。
我相信 Apple 对 OS X 的这个新导向是不合适(unfortunate)的,其最终会以讨好初级用户为由大幅限制高级用户的手脚。我认为,「越狱」 Mac 的日子也不远了。
OS X10.10 dp开 SSD Trim 的方法
如果出现不能启动的话开机按住 Command-R 进入终端修复
rm -rf "/Volumes/你的硬盘/System/Library/Extensions/IOAHCIFamily.kext"
cp -r "/System/Library/Extensions/IOAHCIFamily.kext" "/Volumes/你的硬盘/System/Library/Extensions/IOAHCIFamily.kext"
touch "/Volumes/你的硬盘/System/Library/Extensions"
kextcache -u "/Volumes/YourDisk
然后再重启就可以进入系统了。
首先,将之前的 Trim 激活文件删除,如果你之前使用过 TRIM Enabler 3.2.2 软件开启Trim的话。文件在
/Library/PrivilegedHelperTools 叫做 org.Cindori.AuthHelper
然后打开终端输入 sudo nvram boot-args="kext-dev-mode=1" 增加一个启动的参数。重启电脑。
然后再运行 Trim Enabler 等待一分钟左右。
并且重建内核文件
sudo kextcache -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /System/Library/Extensions
稍后再重启电脑就可以激活第三方 Trim了。