近日,蘋果「1970 事件」鬧得沸沸揚揚,有許多使用iOS設備的好奇人士「好奇害死貓」,抱著好奇的態度,結果自己的愛機真的變磚了。據了解,運行iOS 8以上系統的64位處理器的設備幾乎無一倖免,把iPhone、iPad或iPod touch的時間設定為1970年1月1日,然後關機再開機,手機就變成一塊「磚頭」。下面讓我們看看「1970」到底是什麼「鬼」。
蘋果"1970 事件" 讓我們看看是什麼"鬼"
知識儲備:Unix時間戳
在了解「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,時間正常流逝為正數,反之為負數。不過各位需要留意的是,時間受到時區的影響。
圖為 iOS手機
假設一種情況,我原來是北京時區,假設將時間設置到了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)
其實關注科技的同學想必都知道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年事件」作出回應(圖片引自蘋果官網)
令人我們不敢相信的是,竟然有用戶因為這個問題成功換了新機。據悉,有用戶因這個問題去了蘋果零售店,在跟蘋果售後工作人員說明情況後,成功換了新機,用港版的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位處理器的設備(圖片引自新浪微博)
想必談了這麼多,大家也對「蘋果1970這個鬼」有所了解了,雖然這個事件根本原因是iOS設備本身存在Bug,但是該事件緣起iOS設備用戶所謂的「好奇心」。顯然,這是故意為之。手動設置一個日期需要分幾個步驟,更別提還要滾動日期到46年前,這就是典型的「好奇害死貓」。關於蘋果「1970年事件」今天就先聊到這裡吧。