nMBP 用户升级 10.12.3 指南

很显然最近的 nMBP 用户在 10.12.2 普遍遭遇了 Safari/Chrome 奔溃的困扰, 然而 10.12.3 的累计更新暂未释出, 意味着正式版用户还要忍受相关 bug 一段时间; 而从上一个 10.12.1 的经历也基本证明这几个月 Beta 版本似乎还是相对正式版有稳定性上的优势. 所以这次 Beta 升级还是很有吸引力的.

但是问题在于, 不少 MacBook Pro 用户解锁了自己的 SIP 以实现 TouchID-sudotb3-enabler 等工具. 而更新系统会导致 SIP 重新打开. 所以必须通过进入 recovery (开机按住 ⌘ + R) 的终端命令 csrutil disable 开启.

而又存在的一个问题在于, tb3-enabler 这个项目严格检查 patch 前后的 KEXT 文件 MD5, 这就意味着更新了系统之后这个工具就失效了. 出乎懒惰和由于对 python2 的不信任(外加这个代码最早是给当年的换 SSD 开 trim 用的, 有了点年头, 而且写了一堆异常), 表示还是不希望改了.

在此提供一个相对不是那么安全但是能用的方法开启第三方 Thunderbolt 3 设备支持.

Manually Enable Thunderbolt 3 Devices

  1. 下载 Hex Fiend, brew install Caskroom/cask/hex-fiend.

  2. 打开 Hex Fiend, 选择 File - Open File, 使用组合键 ⌘ + Shift + G, 输入路径 /System/Library/Extensions/IOThunderboltFamily.kext/Contents/MacOS/IOThunderboltFamily/IOThunderboltFamily

  3. 手动备份, 另存为 IOThunderboltFamily.backup 这样的文件放在原来的目录, 并重新打开 IOThunderboltFamily.

  4. 使用组合键 ⌘ + F,将:

    \x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x81\xEC\x38\x01

    替换为:

    \x55\x48\x89\xE5\x31\xC0\x5D\xC3\x41\x55\x41\x54\x53\x48\x81\xEC\x38\x01 通过 ⌘ + S 保存, 系统会弹出权限请求, 输入密码以继续.

  5. 打开终端, 执行:
    sudo kextcache -system-prelinked-kernel

    sudo kextcache -system-caches

    至此重启即可.