安裝與遷移 · Clash 技術部落格

OpenClash 核心下載失敗怎麼修?

OpenClash 核心檢查、下載、驗證或移動失敗時,按首條錯誤核對 CPU 架構、空間、時間和 CA 憑證。使用官方重試、GitHub 位址代理或手動上傳恢復,並保留舊核心與設定副本。

  • OpenClash
  • 核心下載
  • CPU 架構
  • TLS
  • 手動上傳
本文目錄

核心更新失敗時,路由器可能仍在用舊檔案轉送流量。刪除核心目錄會失去這個復原選項。確認失敗是在取得檔案之前、檔案自我檢查時,還是寫入目錄時,才能保留可用服務,再決定重試下載,或檢查架構、空間和系統時間。

核心更新失敗:版本檢查、下載、驗證還是寫入出錯?

不要只看最後的提示就重新安裝 OpenClash,先從「核心不存在」或「核心更新失敗」往前找第一條錯誤。核心是處理連線的程式;官方腳本先讀取遠端版本,依 CPU 架構下載、解壓縮,通過權限與 -v 自我檢查後才替換正式檔案。

第一條錯誤對應的檢查方向

日誌或現象失敗階段優先檢查
Core Version Check Error版本資訊查詢系統時間、CA 憑證、curl 與 GitHub 存取
Core Download Failed壓縮檔下載網路、下載逾時與 GitHub 位址代理設定
Core Verification Failed壓縮檔驗證是否下載成 HTML 錯誤頁面、截斷檔案或錯誤的映像來源
Core Update Failed解壓縮與執行自我檢查CPU 架構、壓縮格式、可執行權限與二進位檔是否完整
Core Move Failed寫入正式路徑可用空間、唯讀檔案系統與目標目錄
No Compiled Version Selected架構未選擇版本更新頁的編譯版本選項
指令碼與版本說明的適用範圍
截至 2026 年 9 月 13 日,OpenClash 最新穩定版仍是 v0.47.156。本文說明目前 master 更新指令碼與這個穩定版可用的安全疑難排解流程,不會把單一 issue 中的路由器環境寫成所有裝置都會遇到的故障。
OpenClash 核心更新的五個檢查點
  1. 讀取遠端版本失敗時記錄 Core Version Check Error
  2. 下載架構套件依照 core_version 請求官方壓縮檔
  3. 驗證並解壓縮gzip、解包、權限與 -v 依序通過
  4. 移至目標路徑只有已驗證的暫存檔才能替換舊核心
  5. 重啟並驗證核對版本、啟動日誌與實際 HTTPS 請求

第一條失敗日誌對應哪一個檢查點,就只修復那一段;不要把下載、架構、空間與設定問題混在一起。

還能聯網的舊核心,是更新失敗時的還原選擇

如果 OpenClash 目前還能啟動並轉送流量,先不要刪除 /etc/openclash/core,也不要連續點擊更新。官方指令碼把新檔案寫入帶 .new 與處理程序編號的暫存路徑,完成 gzip、解壓縮、chmod 4755 與 -v 自我檢查後才覆蓋正式檔案;自動更新失敗時,舊核心通常仍是最可靠的復原點。

先在 OpenClash 狀態頁記錄目前執行中的核心與版本,再依照站內升級指南備份 UCI 設定、設定檔與覆寫。核心檔案只應作為同一裝置、同一架構的短期復原副本,不能取代設定備份,也不要公開上傳含有訂閱或金鑰的整個目錄。

儲存舊核心與可用設定

  1. 停止重複更新

    等待目前工作結束,只保留一次完整日誌,避免多個下載與重啟同時進行。

  2. 記錄目前狀態

    記錄 OpenClash 版本、執行核心、核心版本、已選編譯架構與小快閃記憶體模式狀態。

  3. 備份設定

    匯出目前可用的設定檔與 OpenClash 設定;公開副本必須先移除敏感資訊。

  4. 驗證舊核心

    固定目前節點完成一次實際 HTTPS 請求,確認故障只發生在更新,不是現有轉送已經中斷。

核對 CPU 架構、目標路徑、空間與時間

目前下載指令碼直接讀取 UCI 的 core_version,並把它拼入 clash-${core_version}.tar.gz。這裡需要的是 OpenClash 版本更新頁提供的編譯架構,不是憑路由器商品名猜一個相近值。選錯後即使下載完整,也可能在執行 -v 時失敗。

Issue #4758 的日誌同時出現下載逾時與「只能在支援 v3 微架構的 AMD64 處理器上執行」。它只能證明那台裝置至少存在網路與架構兩條問題,不能證明所有手動上傳失敗都由 amd64-v3 引起。

目前官方編譯流程中的 amd64 與 amd64-v3 都要求 GOAMD64 v3;x86_64 不等於 CPU 支援 v3。遇到 v3 unsupported 時應在更新頁選擇 amd64-compatible 或 amd64-v1,不能把 plain amd64 當相容版。

一般模式的正式目標是 /etc/openclash/core/clash_meta;小快閃記憶體模式的自動更新目標改為 /tmp/etc/openclash/core/clash_meta。不要繞過介面把檔案硬複製到猜測的目錄。先核對設定,再檢查對應掛載點與 /tmp 的可用空間。

透過 SSH 以唯讀方式記錄架構、空間與系統時間
uci -q get openclash.config.core_version
uci -q get openclash.config.small_flash_memory
df -h /etc/openclash /tmp
date

如何判讀檢查結果

結果含義處理
core_version 為空或為 0沒有可下載的編譯版本回到版本更新頁選擇與裝置相符的架構
日誌提示處理器不支援二進位檔架構或微架構不相符恢復舊核心並重新選擇較相容的官方建置
/etc 可用空間不足正式檔案可能無法移動只刪除自己確認無用的套件快取或日誌,不刪除設定與舊核心
小快閃記憶體模式開啟且 /tmp 不足RAM 目標無法容納新核心釋放暫存空間或重啟後再試,不改自動目標路徑
系統日期明顯錯誤TLS 憑證驗證可能失敗先恢復 NTP 或手動校準時間,再重試官方位址

GitHub 版本查詢或 TLS 請求失敗,檢查時間、curl 與 ca-bundle

官方 v0.47.156 安裝說明將 curl 與 ca-bundle 列為相依套件。Issue #5114 的一台裝置在下載 openclash_last_version 與 clash_last_version 時,分別記錄到 curl 35 TLS connect error 與 curl 60 certificate has expired。

該 issue 是沒有維護者根因結論的單機報告,只能說明版本檔案也可能遇到 TLS 類錯誤;它不能證明核心壓縮檔缺失,也不能證明重新安裝 ca-bundle 必然有效。

校準路由器日期、時區和年份,在軟體包頁面確認 curl 與 ca-bundle 已安裝且沒有損壞。不要給 curl 增加 -k、關閉 TLS 驗證或把版本位址改成 HTTP,否則無法可靠核對下載來源。儲存設定後只重試一次,用新日誌查看是否仍停在同一錯誤。

若直連 GitHub 不穩定,可使用 OpenClash「覆寫設定 > 一般設定」中的 GitHub 位址代理選項。目前指令碼會根據該設定構造官方 OpenClash core 分支或受支援 CDN 的位址。只選擇介面提供、自己信任的選項,不貼上論壇中的未知映像站。

日誌出現 Core Update Successful,才表示更新完成

架構、空間、時間與 CA 憑證都正常後,回到 OpenClash 的版本更新頁重新檢查核心。目前指令碼每次工作最多重試三次,並在每次嘗試前清理本次下載檔案與暫存新核心;不要在它仍執行時再開第二個工作。

下載後仍需透過 gzip 驗證、解壓縮、chmod 4755 和 -v 自檢。日誌應出現 Core Update Successful;進度到過 100% 不能證明核心已替換。停在 Verification、Update 或 Move 時,按對應錯誤繼續檢查。

更新成功後指令碼才會安排重啟。重啟前不要改訂閱、DNS 或防火牆,以免同時引入第二個變因。若外掛仍使用舊版本,先完整重新整理狀態頁並核對實際 -v 輸出,不要重複覆蓋。

自動下載仍失敗時,安全地手動上傳

手動上傳只解決路由器無法穩定下載官方檔案,不會修復架構選錯、空間不足或 TLS 來源不可信。先在另一台可信裝置從 vernesong/OpenClash 的 core 分支取得與目前 release branch、Meta 類型與 core_version 完全一致的官方檔案。

檔名應與自動指令碼組合的 clash-${core_version}.tar.gz 相符。上傳控制項明確標示 [Meta] Core File (.tar.gz);不要改名上傳 ZIP、自製多檔案套件,也不要把這一步套用到 Smart、Oix。

進入 OpenClash 的設定管理上傳區,選擇 [Meta] Core File (.tar.gz)。目前 config.lua 會在暫存子目錄解包,把第一個一般檔案移動為 /etc/openclash/core/clash_meta,設定 4755 權限並清理上傳暫存目錄。

手動入口不會執行 -v,也沒有哈希或簽名驗證,並會直接替換舊檔案。上傳前另存可執行的舊核心;File saved 僅表示檔案處理完成。狀態頁能讀取版本後再啟動,讀不到時停下檢查,不改防火牆。

小快閃記憶體模式、自訂韌體或後續版本可能通過連結或執行目錄處理核心,所以最終必須以目前介面的儲存提示、狀態頁與 -v 輸出為準。若上傳後仍顯示核心不存在,不要反覆上傳不同架構;回到前一節重新核對 core_version 與空間。

更新後驗證版本、啟動與實際流量

上傳成功提示只表示檔案處理完成。先在狀態頁確認 Meta 核心檔案存在、執行權限正常且能顯示版本,再啟動 OpenClash。若頁面仍快取舊結果,重新整理後再讀取,不要再次上傳來「碰碰運氣」。

接著檢查啟動日誌中的設定測試、核心啟動,以及 DNS、防火牆步驟。最後固定一個已知可用節點,分別完成一次網域名稱解析與一次實際 HTTPS 請求;如果核心能啟動但實際使用仍失敗,應改查設定、DNS、規則或節點,而不是繼續更換二進位檔。

透過 SSH 以唯讀方式核對一般模式核心版本
/etc/openclash/core/clash_meta -v

新核心啟動或設定載入失敗時,恢復舊核心並保留設定

如果新核心無法執行、啟動後立即退出或使原本可用的設定失敗,先停止 OpenClash,恢復修復前儲存的同一裝置、同架構舊核心,再讓外掛讀取版本並啟動。不要把不相容的新檔案留在正式路徑上反覆重啟,也不要同時降級外掛、核心與設定。

自動更新會在新檔案通過自我檢查前使用獨立暫存路徑,因此下載、驗證或解壓縮失敗時,最安全的做法通常是停止更新並繼續使用舊核心。若舊核心已被手動覆蓋且沒有備份,請從官方 core 分支重新取得已知可用的同一架構版本;不要從群組聊天或網路硬碟尋找同名的 clash_meta。

復原後再次進行版本輸出、啟動日誌、DNS 與 HTTPS 四項驗證。只有舊核心恢復正常且新版問題能穩定重現,才向 OpenClash issue 提交外掛版本、core_version、第一條失敗日誌、剩餘空間與已移除敏感資訊的環境資料。

舊核心恢復後正常

保留舊版本,等待官方修復或重新核對新檔案架構,不再連續更新。

舊核心也無法執行

檢查目標路徑、權限、檔案系統與備份是否來自同一架構。

核心啟動但設定測試失敗

改查 YAML 與核心欄位相容性,不再依照下載故障處理。

服務啟動但裝置無法上網

先恢復啟用代理前的網路狀態,再分別檢查 DNS、防火牆、規則和節點。

參考資料