解决iTunes更新iOS时在验证阶段报未知错误6的问题

今天拿到了一台无法启动的iPhone 5s (GSM, A1533),iOS 8.x。机主自述设备内部存储耗尽,然后出现严重卡顿,最后自动关机。再次尝试启动时,白苹果然后屏幕熄灭,没有观测到Springboard开始加载的迹象。由于机内有未备份数据,机主要求不要重置。拿到这台机子以后,鉴于没有什么可以做的,我准备试一试更新到最新版iOS。

进Recovery然后从iTunes更新固件,一切看起来都没问题(早期阶段进度条不动是正常现象,等等就好了),然后iTunes显示正在验证固件,在进度条走完之前弹了这么一个框:

The iPhone "Iphone" cloud not be updated. An unknown error occurred (6).

重试一次,仍然如此。这时候iPhone停留在刷机进度条快结束的地方,强制重启会自动进入Recovery。

看起来似乎没有挽救的希望了?然而并不是。这时候其实iOS已经被正确写入系统分区,只是没有通过iTunes的刷机后完整性验证。而开机时自动进入Recovery并不代表iOS出现问题(如果真的有问题的话,应该死机或者自动关机)。经过对iOS的启动步骤的研究,自动进入Recovery其实是NVRAM中 auto-boot 字段被设为 false 导致的——iTunes在开始刷机之前先将这个字段设为 false 然后刷机(这样如果中途中断,设备重启后就会自动进入Recovery),在刷机步骤完成后,最后一次重启之前再将这一字段设为 true 。

那么既然iOS是完整的,我们怎么启动它呢?这时候就需要iBoot的USB调试功能了。首先在电脑上安装libirecovery:(以下命令适用于OS X 10.11,其余系统未做测试)

然后,把Recovery模式下的设备通过USB连接到电脑。接下来有两种方法:

方法一:如果你想直接解决问题,运行:

方法二:或者如果你想手动完成操作,进入iBoot交互式shell:

如果连接正确,你会看到类似输出:

这时候我们就可以修改NVRAM了:

如果一切顺利的话,设备将会自动重启,然后正常开机。

参考

发表评论