Fuchsia 裝置重新啟動的原因

本文件列出 Fuchsia 裝置重新啟動的原因。有些是理解的,有些則需要額外的背景資訊。

大綱:

術語

未安全重新啟動

未安全重新啟動是指核心在因應錯誤 (例如核心錯誤),或是由硬體在沒有軟體介入的情況下 (例如硬體監控程式逾時) 啟動的重新啟動。

安全重新啟動

安全重新啟動是指由使用者空間程序啟動的重新啟動。這項程序可能會針對錯誤 (例如裝置溫度過高) 啟動重新啟動程序,但 Fuchsia 有機會可以按照順序關閉。

列出重新啟動原因

核心恐慌

如果核心無法從內部錯誤復原,系統會將該錯誤視為嚴重錯誤,且系統會重新啟動。

系統記憶體不足

如果核心偵測到可用實體記憶體的數量低於門檻,系統會重新啟動。核心不會終止要在重新啟動前嘗試收回記憶體的程序,也就是說,單一程序可能會導致整個系統的記憶體短缺,並強制裝置重新啟動。

冷啟動

如果裝置在關機和重新啟動之間有一定的電量中斷,系統會判定裝置是冷啟動。

棕色

當裝置的電壓低於可接受的閾值時,裝置就會消失。只有在裝置電源供應器或電源相關硬體發生問題時,才會發生這種狀況。

硬體監控計時器逾時

Zircon 會設定硬體監控計時器計時器,如果未於指定時間內重設,裝置就會重新啟動裝置。

軟體監控計時器逾時

如果有人設定軟體監控計時器,軟體監控計時器可能會重新啟動裝置。

短暫失去電力

如果裝置長時間斷電 (例如使用者拔除電源後再重新插上裝置),系統可能無法判斷重新啟動的是冷氣,因此會考慮短暫失去電力而重新啟動。請特別注意,「並非」量化評估機制,這是否適用於短期資料,且會因硬體而異。

使用者要求

必須由使用者或代表使用者的元件 (例如 SL4F 或 RCS) 判斷是否需要重新啟動。

系統更新

負責系統更新的元件必須更新無法暫時更新的套件或多個套件。這些套件基本上就是基本套件。

重新嘗試系統更新

負責系統更新的元件無法套用更新,因此裝置會重新啟動,然後再試一次 (或可能會還原更新)。

ZBI 交換

如果 Zircon 啟動映像檔遭到交換,裝置會重新啟動以套用變更。

高溫

負責電源管理的元件偵測到裝置溫度過高,且系統無法透過調節 CPU 或降低音訊音量來充分降低裝置溫度。

工作階段失敗

如果工作階段管理員無法重新啟動當機的工作階段,或工作階段判定失敗的執行方式無法還原,裝置就會重新啟動。

重大元件故障

如果標示為 "on_terminate": "reboot" 的元件停止運作,裝置會重新啟動。

恢復原廠設定

恢復原廠設定後,裝置會重新啟動。

終止根工作

如果使用者空間根工作終止 (例如因為其中一個重要程序當機),裝置就會重新啟動。

一般安全

平台可以知道重新啟動是否安全,但無法區分軟體更新、使用者要求或某些較高層級的元件,將裝置偵測為過熱。所有平台都知道重新啟動時十分安全

不明

在某些情況下,平台無法判斷確切的重新啟動原因,也無法判斷重新啟動是否安全或不流暢。

哪裡可以找到重新啟動原因

Fuchsia 公開裝置上次透過 FIDL 啟動的原因,並在 Cobalt 和當機伺服器上追蹤裝置的原因。

犯規

因特定元件發生錯誤而重新啟動時,會出現當機簽名,使該元件成為重新啟動的原因。他們遵循的一般模式結合了重新啟動原因,以及系統認定為重新啟動的元件,也就是發生問題的元件。

重新啟動原因 FIDL Cobalt 活動 當機簽名
核心恐慌 KERNEL_PANIC KernelPanic 負責處理當機的函式,就像使用者空間當機報告一樣
系統記憶體不足 SYSTEM_OUT_OF_MEMORY SystemOutOfMemory fuchsia-oomfuchsia-oom-$CULPRIT
冷啟動 COLD Cold 不適用*
棕色 BROWNOUT Brownout fuchsia-brownout
硬體監控計時器逾時 HARDWARE_WATCHDOG_TIMEOUT HardwareWatchdogTimeout fuchsia-hw-watchdog-timeout
軟體監控計時器逾時 SOFTWARE_WATCHDOG_TIMEOUT SoftwareWatchdogTimeout fuchsia-sw-watchdog-timeout
短暫失去電力 BRIEF POWER LOSS BriefPowerLoss fuchsia-brief-power-loss
使用者要求 USER_REQUEST UserRequest 不適用*
系統更新 SYSTEM_UPDATE SystemUpdate 不適用*
重新嘗試系統更新 RETRY_SYSTEM_UPDATE RetrySystemUpdate fuchsia-retry-system-update
ZBI 交換 ZBI_SWAP ZbiSwap 不適用*
高溫 HIGH_TEMPERATURE HighTemperature fuchsia-reboot-high-temperature
工作階段失敗 SESSION_FAILURE SessionFailure fuchsia-session-failure
重大元件故障 CRITICAL_COMPONENT_FAILURE CriticalComponentFailure fuchsia-critical-component-failurefuchsia-reboot-$CULPRIT-terminated
恢復原廠設定 FACTORY_DATA_RESET FactoryDataReset 不適用*
終止根工作 `ROOT_JOB_TERMINATION RootJobTermination fuchsia-root-job-terminationfuchsia-reboot-$CULPRIT-terminated
一般安全 graceful 欄位設為 true GenericGraceful fuchsia-undetermined-userspace-reboot
不明 未設定 graceful 欄位 Unknown fuchsia-reboot-log-not-parseable

* 並非當機,\