Apple今日凌晨发布了macOS Sierra 10.12.2更新,根据日志可知修复了众多问题、提升了系统稳定性,但是在升级过程中遇到了各种各样的问题:

  1. 更新过程中黑屏。
  2. 更新过程中花屏。
  3. 更新后Safari无法正常退出,必须强制退出。

黑屏/花屏的原因

导致前两个问题出现的可能原因是Apple在本次更新中修正了System Integrity Protection问题。缩写为SIP,又称为Rootless技术,从Mac OS X El Capitan系统开始使用。

该技术可以保护系统即使以root用户登录时,仍然不可改写部分关键的系统文件内容或权限。目的在于避免用户错误操作关键系统文件导致系统崩溃,避免系统底层被恶意注入或篡改。

安全起见,Apple不允许用户在系统分区内关闭SIP,只能在系统分区外对其进行操作,例如计算机进入恢复分区、从U盘引导启动等情况。因为严格限制了系统关键文件的权限,每次在进行系统更新时,会自动修复、维护被保护区域的文件及其权限,所以从Mac OS X El Capitan系统开始,磁盘工具中不再有『修复权限』这个功能。

SIP有关参数被添加进入了NVRAM,当你每次重置NVRAM时,SIP会被默认重置为开启状态。前一阵子,Apple发现部分Macbook Pro默认禁用这个功能,所以在这次更新中修复这个问题。

更多关于SIP技术不再赘述,预想了解更多,可以看有关文档:

也正是对NVRAM更新时,可能由于某些原因写入失败,导致了黑屏、花屏等现象。

解决方案

此问题影响不大,如果反复出现黑屏、花屏导致更新失败,可强制关闭系统,然后重置NVRAM后,再重新安装更新即可。

Safari工作异常

这个问题就显得非常烦人。问题现象为Safari在退出的瞬间:

  • CPU占用率极高,打开网页不流畅,甚至死机
  • 机器发热机器严重,风扇高速转动
  • 无法正常退出Safari,只能『强制退出』
  • 历史记录丢失

导致此问题的原因不是很明确,但是经过排查,与Safari扩展、Coockies、缓存内容均无关。很可能是在系统增量更新过程中导致Safari应用程序更新不完整,或配置文件不兼容导致的。系统日志中也没有很明确地体现问题所在,所以只能猜测原因。

导致此问题的原因现在已经明确:Safari存储历史记录时,会将数据不断写入`~/Library/Safari/History.db`写入文件。这个过程一旦被意外终止或执行异常,SQLite数据库会立刻被锁死,同时在同级目录下产生 .lck 文件。Safari无法向该文件正常读取/写入数据,导致Safari停止响应。

解决方案

找到问题根本原因后,解决方法变得非常简单。

  1. 运行终端,执行命令`cd ~/Library/Safari`,以进入历史记录数据库所在文件夹
  2. 执行命令 `rm -f History*`删除历史记录数据库相关的所有文件

只需2条命令即可解决Safari问题。


如果你的Safari中有重要的历史记录需要导出或保存,您可以使用其他工具导出`~/Library/Safari/History.db`的数据,可使用macOS系统自带的`sqlite3`命令。当然更推荐使用可视化工具对数据库进行读取。

sqlite3 ~/Library/Safari/History.db

#查询history_items表
select * from history_items


注意:以下为原方案,用于以上方法失效时,重置整个Safari的方法,请谨慎使用。

对于本次问题的解决方案,操作成本最低的就是重置Safari。具体彻底重置Safari的方法如下,不过请注意以下操作会导致:

  • Safari书签、配置、Cookies等全部丢失,请先备份书签至iCloud或导出成html书签
  • 所有Safari插件需要重新安装,例如Adobe Flash Player迅雷下载等等。
  • 所有Safari扩展需要重新安装,配置信息全部丢失,注意备份Safari扩展的配置数据,一些复杂配置的扩展支持导出数据。

直接进入目录的操作方式为,点击Finder,然后按住键盘的Shift + Command + G键,在弹出的对话框中输入路径即可。

  1. 移除Safari配置文件夹:~/Library/Safari
  2. 移除Safari应用程序保存状态文件夹:~/Library/Saved Application State/com.apple.Safari.savedState
  3. 移除Safari缓存文件文件夹:进入~/Library/Caches文件夹,删除所有以com.apple.Safari开头的文件夹
  4. 删除Safari的Cookies配置文件:进入~/Library/Cookies文件夹,删除所有以com.apple.Safari开头的文件
  5. 删除Safari设置文件:进入~/Library/Preferences文件夹,删除所有以com.apple.Safari开头的文件
  6. 删除用户安装的Safari插件:进入~/Library/Internet Plug-Ins文件夹,清空该文件夹下所有内容。
  7. 删除其他非系统插件:进入/Library/Internet Plug-Ins文件夹,删除除了Quartz Composer.webplugin文件、Disabled Plug-Ins文件夹外的所有文件。

至此Safari完成重置工作,再次启动Safari即可测试是否可以正常退出。然后进行书签导入、插件安装、配置信息恢复等工作即可。

欢迎各位对文章批评指正,欢迎各位交流讨论,如果有任何疑惑或问题,请评论或联系我。

新浪微博:Hackl0us
Twitter: Hackl0us
E-mail:talk@hackl0us.com

1
3