韌體升級:保留設定、重建套件、驗證 DNS 與管理功能
升級不只是「換個韌體檔」
Section titled “升級不只是「換個韌體檔」”請分開看四件事:
- 韌體是否刷寫成功並能開機;
- 設定是否保留/還原;
- 套件/外掛是否仍在,或必須重新安裝;
- 管理功能/DNS/WAN 是否恢復。
保留設定不代表保留套件。保留某個應用程式的設定,也不代表保留它的二進位檔。
路由器 Shell記錄 release、target、套件清單並備份
cat /etc/openwrt_releasecat /etc/apk/arch 2>/dev/nullapk list --installed > /tmp/packages-$(date +%F).txtwc -l /tmp/packages-$(date +%F).txtsysupgrade -b /tmp/pre-upgrade-$(date +%F).tar.gzsha256sum /tmp/pre-upgrade-$(date +%F).tar.gz將設定存檔複製到裝置外;若是 VM,也請建立 PVE 快照/備份。不要只留在 /tmp。
預期你可以還原,並且知道哪些東西不見了。
路由器 Shell驗證映像檔與檢查碼
wget -O /tmp/openwrt.img.gz <official-image-url>sha256sum /tmp/openwrt.img.gz# compare with the matching line in official sha256sumsgzip -dkf /tmp/openwrt.img.gzls -lh /tmp/openwrt.img本實驗使用 25.12.6 x86/64 combined ext4 映像檔;.img.gz 的 SHA-256 相符,之後解壓縮再交給 sysupgrade。
預期映像檔符合 release/target/arch,且檢查碼有效。
路由器 Shell保留主控台與還原途徑
- 實體裝置:序列埠/HDMI、failsafe 按鍵、舊版韌體;
- PVE:升級前建立快照,並確認
qm rollback可用; - 記錄 LAN IP、DHCP、WAN、DNS、管理連接埠;
- 升級期間不要斷電或拔除磁碟。
預期升級中斷/失敗時可以復原。
預設(保留設定):
sysupgrade -v /tmp/openwrt.img選項:
-n:不保留設定(全新安裝);-f <backup.tar.gz>:升級時還原設定;-c/-o:保留更多變更過的檔案;邊界較為複雜;- 除非完全了解後果,否則不要用
-F忽略相容性檢查。
升級會關閉 SSH/網頁連線;請等待重新啟動,不要因為連線失敗就切斷電源。
電腦管理入口
ping -c 2 192.168.1.2curl -sSI --max-time 5 http://192.168.1.2/ | head -3本實驗保留了 LAN 192.168.1.2/24;HTTP 200,SSH 正常。
預期至少各檢查一次 LAN IP、HTTP 與 SSH。
路由器 Shell設定與 DNS/WAN
uci show network.lan.ipaddruci show dhcp.lanip routenslookup openwrt.org 127.0.0.1logread | grep -Ei 'dnsmasq|netifd|dhcp' | tail -30本實驗:升級後 DNS 與 HTTP 正常;WAN 設定被保留。仍須重新驗證用戶端的 DHCP 租約與真實的網際網路連線,而不是只看路由器本身。
預期設定被保留,且 DNS/WAN 確實可用。
路由器 Shell套件與外掛
apk list --installed | wc -lfor p in sqm-scripts luci-app-sqm luci-app-openclash; do apk info -e "$p" && echo "$p installed" || echo "$p MISSING"done本實驗:升級前 239 個套件,升級後 182 個;sqm-scripts、luci-app-sqm、luci-app-openclash 全部不見。設定可能還在,但二進位檔必須重新安裝。
逐一重新安裝:
apk updateapk add sqm-scripts luci-app-sqm# verify menu/service before the next package不要一次還原所有外掛;請先恢復管理功能/DNS/基本網路。
預期你知道遺失了什麼,並依清單重新安裝。
- 基本網路:network/dhcp/firewall;
- DNS:dnsmasq,需要時再裝 AGH;
- 管理:luci/uhttpd;
- 代理/流量整形:OpenClash、SQM;
- 最後:規則/訂閱/效能調校。
每安裝一個套件都要檢查:
- 是否已安裝;
- LuCI 選單/控制器是否存在;
- 服務是否啟動;
- DNS/預設路由是否被更動;
- 停用它後是否恢復基本網路。
- 實體裝置:保留舊版韌體/復原模式;
- PVE:升級前建立快照/
vzdump,失敗時還原整台 VM; - 設定:用
sysupgrade -r還原存檔; - 不要用「再刷一次」來取代診斷失敗原因。
本實驗使用快照 pre-019;記錄結果後已還原到升級前的狀態。本頁記錄的是實際的升級執行結果。
E2 實驗記錄(2026-10-20)
Section titled “E2 實驗記錄(2026-10-20)”- 環境:OpenWrt 25.12.6 x86 VM 200;升級前後版本相同(重新刷機,不是跨版本)。
- 升級前:239 個套件;已安裝
sqm-scripts、luci-app-sqm、luci-app-openclash;LAN.2,DHCP 設為忽略。 - 執行
sysupgrade -v /tmp/openwrt.img之後:裝置重新啟動;保留了 LAN.2與 DHCP 忽略設定;HTTP 200、SSH 與 DNS 正常。 - 套件:239 → 182;SQM/OpenClash 遺失;設定可能仍在,但二進位檔必須重新安裝。
- 未完成:跨版本升級、SQM/OpenClash 重新安裝驗證、真實 Wi-Fi/PPPoE、斷電復原。
- 重現配方:
tests/recipes/firmware-upgrade-25.12.md。
- 本頁為 E2 部分驗證:已測試同版本 sysupgrade 的設定保留、管理功能/DNS 與套件遺失;跨版本與外掛重建未完成。
- 不要從同版本的結果推論跨 release 的行為;請閱讀發行說明、先備份並在 VM 中測試。
- 沒有獨立審閱者;結論僅限於此 VM 環境。