本文件列出 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-oom 或fuchsia-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-failure 或fuchsia-reboot-$CULPRIT-terminated |
恢復原廠設定 | FACTORY_DATA_RESET |
FactoryDataReset |
不適用* |
終止根工作 | `ROOT_JOB_TERMINATION | RootJobTermination |
fuchsia-root-job-termination 或fuchsia-reboot-$CULPRIT-terminated |
一般安全 | graceful 欄位設為 true | GenericGraceful |
fuchsia-undetermined-userspace-reboot |
不明 | 未設定 graceful 欄位 | Unknown |
fuchsia-reboot-log-not-parseable |
* 並非當機,\