64-bit 的 iOS 裝置被設定為特定日期會無法開機

前幾天 weiphone 有相關討論的時候就有注意到這個問題了,現在在情況稍微明朗的情形下做一些小結論跟建議。

 

總歸而言,只要把 64-bit 的 iOS 裝置設定為 1970 年 1 月 1 日,然後重新開機,就會造成手機硬體性的死機。即使 DFU 重刷也無效,手機會在重刷後第一次啟動的時候死機(白蘋果畫面)。

先不管造成無法開機的真正原因為何(有人說是 Unix 時間被設為 0,但實際上應該不是剛好全 0 才對),除了使用者自己去改時間外,另外有些情況可能會造成時間被設定為 1970 年 1 月 1 日。這些潛在性的威脅才是我們應該要去特別留意的。

 

目前想到兩種情況可能會造成在未經過使用者同意下,手機會被設定為 1970 年:

 

  • 手機極度沒電的情況下

因為沒有辦法實際測試所以無法得知,但是在手機極度沒電的情況下,內部的時鐘應該會被重置到某個原始狀態。因為 Unix 時間的原始狀態就是 1970 年 1 月 1 日,所以有可能會被設定為該時間。另外有可能的原始狀態時間是 2000 年或 2001 年 1 月 1 日 (印象中我有看過裝置被設為這個時間)。一般日常使用的 iPhone 不會極度沒電,但是放很久的 iPhone 有可能會,因此如果有舊手機或平板,請記得定期檢查並充電。

 

  • 錯誤的伺服器時間

以 iPhone 為例,自動設定時間功能是以網路或者電信公司的基地台去校準的,一旦有某個基地台的時間是錯誤的,則當你連上時手機時間也會跟著錯誤。而一旦裝置的時間被調整為 1970 年的話,一個明顯的症狀就是 HTTPS 的證書會失效,以日常使用來說就會是 Facebook、Google 等許多網站同時無法使用。因此對使用者來說,要是突然發現許多網站都無法連上,請在嘗試重新開機之前檢查手機上的時間是否正確,以免遇到手機時間被改為 1970 年的情形。

 

因此,對於一般使用者來說,請留心這兩點,直到 Apple 修正這個問題。然而,由於這個問題可能牽涉到硬體底層,因此不確定狀況一是否有機會真的可以靠 iOS 更新就是了,只能建議大家不要裝置放置太久沒充電,以免發生遺憾。

 

2/14 補充:

根據一些回報指出,拔掉電池反而可以解決這個問題,如果真的是這樣的話,那電池完全沒電反而不會造成無法開機的錯誤。

發佈留言