コンテンツにスキップ

ファームウェアのアップグレード: 設定を維持し、パッケージを再構築し、DNS/管理アクセスを確認する

アップグレードは「ファームウェアファイルを入れ替えるだけ」ではない

Section titled “アップグレードは「ファームウェアファイルを入れ替えるだけ」ではない”

次の4つを分けて考えます。

  1. ファームウェアが書き込まれ、起動したか
  2. 設定が維持/復元されたか
  3. パッケージ/プラグインが残っているか、再インストールが必要か
  4. 管理アクセス/DNS/WANが復旧したか

設定を維持してもパッケージは維持されません。アプリの設定を維持しても、そのバイナリは維持されません。

ルーターのシェルリリース、ターゲット、パッケージ一覧を記録してバックアップする
ターミナルウィンドウ
cat /etc/openwrt_release
cat /etc/apk/arch 2>/dev/null
apk list --installed > /tmp/packages-$(date +%F).txt
wc -l /tmp/packages-$(date +%F).txt
sysupgrade -b /tmp/pre-upgrade-$(date +%F).tar.gz
sha256sum /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.gz
ls -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、管理ポートを記録する
  • アップグレード中に電源を切ったり、ディスクを取り外したりしない

期待される結果アップグレードの中断や失敗から復旧できます。

デフォルト(設定を維持):

ターミナルウィンドウ
sysupgrade -v /tmp/openwrt.img

オプション:

  • -n: 設定を維持しない(クリーンインストール)
  • -f <backup.tar.gz>: アップグレード中に設定を復元する
  • -c/-o: 変更されたファイルをより多く保持する。境界が複雑になる
  • 内容を十分に理解している場合を除き、互換性チェックを無視する -F は使わない

アップグレードによりSSH/Webセッションは切断されます。接続が切れたからといって電源を切らず、再起動を待ってください。

パソコン管理アクセス
ターミナルウィンドウ
ping -c 2 192.168.1.2
curl -sSI --max-time 5 http://192.168.1.2/ | head -3
ssh [email protected] 'cat /etc/openwrt_release'

このテストではLAN 192.168.1.2/24 が維持され、HTTP 200とSSHが動作しました。

期待される結果LAN IP、HTTP、SSHを少なくとも一度ずつ確認します。

ルーターのシェル設定とDNS/WAN
ターミナルウィンドウ
uci show network.lan.ipaddr
uci show dhcp.lan
ip route
nslookup openwrt.org 127.0.0.1
logread | grep -Ei 'dnsmasq|netifd|dhcp' | tail -30

このテスト環境: アップグレード後もDNSとHTTPが動作し、WAN設定は維持されました。ただし、ルーター自身だけでなく、クライアントのDHCPリースと実際のインターネット接続も再確認してください。

期待される結果設定が維持され、DNS/WANが実際に動作しています。

ルーターのシェルパッケージとプラグイン
ターミナルウィンドウ
apk list --installed | wc -l
for 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 update
apk add sqm-scripts luci-app-sqm
# 次のパッケージに進む前に、メニュー/サービスを確認する

すべてのプラグインを一度に復元しないでください。まず管理アクセス、DNS、基本的なネットワークを復旧させます。

期待される結果何が失われたかが分かり、一覧から再インストールできます。

  1. 基本ネットワーク: network/dhcp/firewall
  2. DNS: dnsmasq、必要ならその後にAGH
  3. 管理: luci/uhttpd
  4. プロキシ/シェーピング: OpenClash、SQM
  5. 最後に: ルール/サブスクリプション/性能チューニング

各パッケージで確認すること:

  • インストールされているか
  • LuCIのメニュー/コントローラーがあるか
  • サービスが起動するか
  • DNS/デフォルトルートが変更されていないか
  • 無効化すると基本ネットワークが復旧するか
  • 物理デバイス: 旧ファームウェア/リカバリーモードを保管しておく
  • PVE: アップグレード前のスナップショット/vzdump を使い、失敗したらVM全体をロールバックする
  • 設定: アーカイブを sysupgrade -r で復元する
  • 失敗の原因を調べる代わりに「もう一度書き換える」ことはしない

このテストではスナップショット pre-019 を使い、結果を記録した後にアップグレード前の状態へロールバックしました。このページは実際のアップグレード実行を記録したものです。

  • 環境: 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
  • 本ページはE2の一部です。同一バージョンのsysupgradeによる設定の維持、管理アクセス/DNS、パッケージの消失をテストしました。バージョンをまたぐアップグレードとプラグインの再構築は完了していません。
  • 同一バージョンの結果から、リリースをまたぐ場合の動作を推測しないでください。リリースノートを読み、バックアップを取り、VMでテストしてください。
  • 独立したレビュアーはいません。結論はこのVM環境に限られます。

出典

Router.Homes

独立した OpenWrt の実践ノートです。各ページにファームウェア、デバイス、パッケージマネージャー、元に戻す手順を明記しています。

アイコン:Solar by 480 Design, CC BY 4.0