苹果“1970事件”是什么在搞鬼

2016年02月23日 08:44 中关村在线 微博
微博 微信 空间 分享 添加喜爱

  近日,苹果“1970 事件”闹得沸沸扬扬,有许多使用iOS设备的好奇人士“好奇害死猫”,抱着好奇的态度,结果自己的爱机真的变砖了。据了解,运行iOS 8以上系统的64位处理器的设备几乎无一幸免,把iPhone、iPad或iPod touch的时间设定为1970年1月1日,然后关机再开机,手机就变成一块“砖头”。下面让我们看看“1970”到底是什么“鬼”。

  在了解“1970年事件”时,我们需要了解一个知识就是Unix时间戳。iOS系统时间使用Unix时间戳(Unix epoch)表示(time_t数据类型)。在系统中,使用系统位数个二进制位储存时间。Unix时间戳规定,UTC时区的1970年1月1日0点0时0秒的值为0,以秒为单位,即每过一秒,二进制数字加1。

  有了这个知识储备,我们现在了解一下搭载64位处理器的iOS设备的时间bug。我们说到了以UTC时区的1970年1月1日0点0时0秒为界限,数值为0,时间正常流逝为正数,反之为负数。不过各位需要留意的是,时间受到时区的影响。

  假设一种情况,我原来是北京时区,假设将时间设置到了1970年1月1日0点0时0秒,那么我将这个时间转换为UTC时间,公式:北京时间=GMT+8=UTC+8,那么UTC时间则为1969年12月31日16时0分0秒。这样就会出现时间负值,即时间回归bug触发,系统启动卡在Kernel阶段,时间错误,无法继续进行启动。

  那么既然事件不能往前调,好奇的朋友可能会往后调,当我们往后调的时候会发现iOS系统可以设置的最大时间是2038年1月1日,并不能再往后设置了。为什么时间只能调到这里?

手机时间计算原理手机时间计算原理

  我们了解一下在32位系统中,time_t是长度为32位的,有符号整数(signed int)类型。首个二进制位是符号位,用来储存正负。正数则为1970/1/1以后的时间,负数反之;其余的31位用来记数。当时间到达2038年1月19日3时14分08秒时,数值位全部向前进1,导致符号位被置1,其余31位为0。介时,将出现“时间回归”的情况,系统时间变为1901年12月13日20时45分52秒,系统将会出现错误。

  为什么深藏这么多年的Bug到现在才被发现

  一个名为vista980622的网友在国外网站Reddit的论坛上发表了一篇“把iPhone时间改成1970年1月1日,手机即可永远变砖”的帖子。

网友@vista980622的帖子(图片引自Reddit)网友@vista980622的帖子(图片引自Reddit)

  其实关注科技的同学想必都知道Reddit的影响力,在该帖子发布不久,很多人都不相信,抱着试试看的态度将手机的时间设置成1970年1月1日,结果手机关机后重新开机真的变砖了。

  1970年1月1日就像病毒一样在世界蔓延开来了,不仅很多国外网友中招,在国内也有很多iPhone用户又都尝试了。笔者刚刚看到关于1970年变砖的视频后,内心是不相信的,觉得这个视频后半段开机画面是被剪掉了,然后笔者就手贱的进行了尝试,把时间设置成1970年1月1日,手机关机重启真的停留在白苹果了,变“砖头”了,真是应了这句话“不作就不会死”。

  然后小编只能用仅有的一点手机维修的功底,把手机拆开,断开电池与主板的连接,为了保险起见等待了十分钟,重新连接电池,然后开机就正常了,这只是解决“苹果1970年事件”其中一种方法。

  遇到这个“鬼”我们怎么去降服

  解决的方法不仅小编尝试的这一种,下面我们看看针对所有64位处理器的iOS设备解决方案有哪些?

  1。在保修范围之内的设备变砖你可以拿着变砖的iPhone去找苹果售后。

  根据iOS用户反馈,他们在苹果技术支持那里获得的处理方式并不一样:有的用户称,苹果会直接更换了他们的设备,还有的用户则被“拒绝”了(整机更换)。

  有趣的是,因为不少人很好奇这个Bug,但舍不得拿自己的iPhone做试验,就跑到苹果店里把人家的展示用iPhone、iPad给玩死了……

  2。电量充足的情况下,等待数小时,当Unix时间戳的数值大于等于0,系统时间生效,可正常开机。

  3。让电池“死亡”,手机没电了自动关机,设备会保留有3%的电量来维持设备内部时钟的运转,只有3%的电量都消耗殆尽,设备的内部时钟在你重新充电开机后会被重置,只要1970年1月1日这个日期被重置,设备就能恢复了(不过也有人试过此法无效)。

  4。拆机并拆出电池,放置10分钟后重新安装。但拆机有风险,没有拆机经验的同学不建议这么做。另一方面在保修之内的手机,私自拆机将失去苹果的官方保修。

  5。等待苹果推出新系统来修复这个Bug。(这种方法适合以上都不敢尝试设备又不在保修期的用户)

  对于1970事件,苹果是如何回应的?

  日前,苹果已经发出声明,承认了将时间设置为1970年1月1日会导致设备罢工的问题,并承诺很快推出iOS更新来修复该问题。但是至于已经变砖的设备该怎么办,苹果没有给出统一的答复,只说了让受影响的用户自己联系苹果售后。

苹果官方对“1970年事件”作出回应(图片引自苹果官网)苹果官方对“1970年事件”作出回应(图片引自苹果官网)

  令人我们不敢相信的是,竟然有用户因为这个问题成功换了新机。据悉,有用户因这个问题去了苹果零售店,在跟苹果售后工作人员说明情况后,成功换了新机,用港版的iPhone 6换了一台全新国行iPhone 6。但是这台设备还在保修期,已经过保修期的设备只能自己解决了。但有网友也遇到不给用户换新机的问题,所以用户最好不要钻空子,故意让手机变砖,那样有可能自酿恶果。

  哪些设备具有“变砖”的“能力”

  据了解,所有系统版本为iOS 8.0至iOS 9.3 beta3,并且搭载64位处理器(即处理器为A7-A9X的设备)的苹果设备都会触发这个Bug。

  搭载64位处理器的设备包括设备:

  A7:iPhone 5s、iPad mini 2、iPad mini 3;

  A7 variant:iPad Air;

  A8:Apple TV 4G、iPad mini 4、iPhone 6、iPhone 6 Plus、iPod Touch 6G;

  A8X:iPad Air 2;

  A9(三星/台积电):iPhone 6s、iPhone 6s Plus;

  A9X:iPad Pro;

搭载64位处理器的设备(图片引自新浪微博)搭载64位处理器的设备(图片引自新浪微博)

  想必谈了这么多,大家也对“苹果1970这个鬼”有所了解了,虽然这个事件根本原因是iOS设备本身存在Bug,但是该事件缘起iOS设备用户所谓的“好奇心”。显然,这是故意为之。手动设置一个日期需要分几个步骤,更别提还要滚动日期到46年前,这就是典型的“好奇害死猫”。关于苹果“1970年事件”今天就先聊到这里吧。

推荐阅读
聚焦
关闭评论
文章推荐
热门新机
热门文章
高清美图
策划