ファームウェアのアップグレード: 設定を維持し、パッケージを再構築し、DNS/管理アクセスを確認する
アップグレードは「ファームウェアファイルを入れ替えるだけ」ではない
Section titled “アップグレードは「ファームウェアファイルを入れ替えるだけ」ではない”次の4つを分けて考えます。
- ファームウェアが書き込まれ、起動したか
- 設定が維持/復元されたか
- パッケージ/プラグインが残っているか、再インストールが必要か
- 管理アクセス/DNS/WANが復旧したか
設定を維持してもパッケージは維持されません。アプリの設定を維持しても、そのバイナリは維持されません。
アップグレードの前に
Section titled “アップグレードの前に”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 にだけ置かないでください。
期待される結果ロールバックでき、何が消えたかが分かります。
wget -O /tmp/openwrt.img.gz <official-image-url>sha256sum /tmp/openwrt.img.gz# 公式sha256sumsの該当行と比較するgzip -dkf /tmp/openwrt.img.gzls -lh /tmp/openwrt.imgこのテストでは25.12.6 x86/64のcombined ext4イメージを使いました。.img.gz のSHA-256が一致したことを確認し、展開して sysupgrade に渡しています。
期待される結果イメージがリリース/ターゲット/アーキテクチャと一致し、チェックサムが有効です。
- 物理デバイス: シリアル/HDMI、フェイルセーフ用のキー、旧ファームウェア
- PVE: アップグレード前にスナップショットを取り、
qm rollbackを確認する - LAN IP、DHCP、WAN、DNS、管理ポートを記録する
- アップグレード中に電源を切ったり、ディスクを取り外したりしない
期待される結果アップグレードの中断や失敗から復旧できます。
アップグレードコマンド
Section titled “アップグレードコマンド”デフォルト(設定を維持):
sysupgrade -v /tmp/openwrt.imgオプション:
-n: 設定を維持しない(クリーンインストール)-f <backup.tar.gz>: アップグレード中に設定を復元する-c/-o: 変更されたファイルをより多く保持する。境界が複雑になる- 内容を十分に理解している場合を除き、互換性チェックを無視する
-Fは使わない
アップグレードによりSSH/Webセッションは切断されます。接続が切れたからといって電源を切らず、再起動を待ってください。
アップグレード後の確認
Section titled “アップグレード後の確認”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を少なくとも一度ずつ確認します。
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が実際に動作しています。
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 はすべて消えていました。設定は残っていても、バイナリは再インストールが必要です。
1つずつ再インストールします。
apk updateapk add sqm-scripts luci-app-sqm# 次のパッケージに進む前に、メニュー/サービスを確認するすべてのプラグインを一度に復元しないでください。まず管理アクセス、DNS、基本的なネットワークを復旧させます。
期待される結果何が失われたかが分かり、一覧から再インストールできます。
再構築の順序
Section titled “再構築の順序”- 基本ネットワーク: network/dhcp/firewall
- DNS: dnsmasq、必要ならその後にAGH
- 管理: luci/uhttpd
- プロキシ/シェーピング: OpenClash、SQM
- 最後に: ルール/サブスクリプション/性能チューニング
各パッケージで確認すること:
- インストールされているか
- LuCIのメニュー/コントローラーがあるか
- サービスが起動するか
- DNS/デフォルトルートが変更されていないか
- 無効化すると基本ネットワークが復旧するか
ロールバック
Section titled “ロールバック”- 物理デバイス: 旧ファームウェア/リカバリーモードを保管しておく
- 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はignore sysupgrade -v /tmp/openwrt.imgの後: デバイスが再起動。LAN.2とDHCP ignoreは維持。HTTP 200、SSH、DNSが動作- パッケージ: 239 → 182。SQM/OpenClashは消失。設定は残っていても、バイナリは再インストールが必要
- 未完了: バージョンをまたぐアップグレード、SQM/OpenClashの再インストール確認、実際のWi-Fi/PPPoE、電源断からの復旧
- レシピ:
tests/recipes/firmware-upgrade-25.12.md
出典とレビュー
Section titled “出典とレビュー”- 本ページはE2の一部です。同一バージョンのsysupgradeによる設定の維持、管理アクセス/DNS、パッケージの消失をテストしました。バージョンをまたぐアップグレードとプラグインの再構築は完了していません。
- 同一バージョンの結果から、リリースをまたぐ場合の動作を推測しないでください。リリースノートを読み、バックアップを取り、VMでテストしてください。
- 独立したレビュアーはいません。結論はこのVM環境に限られます。
出典
独立した OpenWrt の実践ノートです。各ページにファームウェア、デバイス、パッケージマネージャー、元に戻す手順を明記しています。
アイコン:Solar by 480 Design, CC BY 4.0