2023-10-16 追記
手順を見直して、新規エントリして書き直した。 openwrtのアップグレード手順(見直しの見直し - それマグで!
以下 以前の記録。
x86_64のアップグレード手順を公式Wikiに従って見直してみた。公式Wikiがロードが早くなって読みやすくなったし、整理されて読みやすくなって便利だ。
19.07.{1,2,3,4,5} を21.xへアップグレードしながらアップグレード手順を見直した。
アップグレード手順
- opkg の一覧の保存
- 保存が必要なファイルを列挙。sysupgrade.conf
- 設定の保存とバックアップ
- WEBか、コマンドからアップグレード
- SSH ログインしてopkgをインストール
手順1
opkg save
手順2
## 保存するファイルの追加 echo path/to/config >> /etc/sysupgrade.conf ## 保存するファイルの確認 sysupgrade -l
手順3
## バックアップ作成 sysupgrade --create-backup $HOSTNAME-$( date -I ).tgz ## バックアップ保存(scpやUSBで) scp $HOSTNAME-$( date -I ).tgz takuya@myserver:~/
または、WEB(luci)の画面から。っていうか、WEB-UIからやるのが楽ちん。
手順4
URL=https://downloads.openwrt.org/releases/21.02.1/targets/x86/64/openwrt-21.02.1-x86-64-generic-ext4-combined.img.gz sysupgrade --test -f $( date -I ).tgz -v $URL sysupgrade -f $( date -I ).tgz -v $URL
コマンドでやるより、WEB画面の方が圧倒的に楽ちん。っていうかコマンドからは地獄。
Raspi4 などUSB-LANなどのドライバが入ってるときは慎重にやること
手順5
ssh wrt-router
### pppoeが起動してないときは # ip route add default via 192.168.111.111 # 別のルータ経由で出る ## opkg構成を復元 opkg restore
ここで、PPPoEにつながってないと詰むので、別のルータを用意してPPPoEさせるほうがいい。
各手順について
各手順ついて、知っておく必要があったこと、実際にアップグレードして起きたトラブルと対応をまとめておく。
opkg でインストールしたものを保存
opkg save opkg restore # 再現インストール
注意点 opkg save コマンドは、19.x 系には存在しないので、スクリプトをとってくる.
saveがない場合
wget -O opkg-extras.sh "https://openwrt.org/_export/code/docs/guide-user/advanced/opkg_extras?codeblock=0" . ./opkg-extras.sh
アップグレード時に維持する設定ファイルを指定sysupgrade.conf
アップグレードでファームを書き換えると設定もファイルも消える。x86/64のEXT4を使っていてるが、容赦なくext4もまっさらになる。
そこで、sysypgrade.confを使って、アップグレード後に保持するファイル指定が必要。
/etc/config
にあるファイルは保持される。/etc/sysupgrade.conf
に書いたファイルは追加で保持される。- 例外的にパッケージが指定したファイルは保持される ( 例
/etc/unbound/unbound_srv.conf
など)
その他: 特定アップグレードの注意点。
- SoftEtherの設定は保持されない
- DDNSスクリプトは19.x と 21.x で違うので設定が保持されない。
/root/.ssh
は破棄されるので、もし使ってる場合は、sysupgrade.conf
に書くことchsh
している場合は、/bin/ash
に戻しておくこと。- luci-proto 関連
- hotplug 関連
- opkgを再インストール時の注意
- ipv6 NGNの注意。
softether の設定は保持されない
そのままでは、/etc/ 中に、softetherの設定は存在しない、パッケージが指定してないので、設定はバックアップされないので注意する。
SoftEtherについては、次の3つの選択肢がある。
- エクスポート・インポート
- 設定ファイルをバックアップ(sysupgrade.conf)に含める
- vpncmd を作っておく。
エクスポートする場合
vpncmd /CLIENT localhost /CMD AccountExport $NAME /SAVEPATH:/etc/config/softether-$name.config
sysupgradeに含めるなら、設定は次の場所にある。
/usr/libexec/softethervpn/vpn_client.config
再設定のvpncmd を作っておく(おすすめ
vpncmd /CLIENT localhost /CMD NicCreate soeth0 vpncmd /CLIENT localhost /CMD AccountCreate ocn /SERVER:vpn.example.com:443 /HUB:Vpn /USERNAME:takuya@myCA /NICNAME:soeth0 vpncmd /CLIENT localhost /CMD AccountPasswordSet ocn /PASSWORD:***** /TYPE:radius vpncmd /CLIENT localhost /CMD AccountConnect ocn udhcpc -i vpn_soeth0 -s /etc/config/custom/softether/dhcp.sh vpncmd /CLIENT localhost /CMD AccountDisconnect ocn
DHCP割当をもらうときは、udhcpcを使って割当をもらう
DDNSの設定
DDNSの設定は、19.07 と 21.0 で構成が違うようです。
21.xへアップグレードしたあと、ddns設定が飛んでしまいました。
19→21のアップグレードは、ddns関連の罠が多いので注意する。
ddnsのスクリプトは、それ自体が一覧としてopkgとは別管理になったみたい。
なので一旦設定を破棄して、インストールし直して、設定し直したたほうが良さそうです。
mv /etc/config/ddns /etc/config/ddns.my.conf service ddns stop opkg reinstall ddns-scripts luci-app-ddns ddns-scripts-cloudflare mv /etc/config/ddns.my.conf /etc/config/ddns vim /etc/config/ddns # または luci から作り直し。
SSH鍵
/root/.ssh
の鍵は sysupgrade.conf
で指定しないと、消えます。
wrt の root でどこか他のサーバにsshしているなら注意。
chshの注意
インストール後、ashで起動します。
chsh
でbash指定したままアップグレードすると、、bashが未インストール状態で起動します。
bashが見つからなくてログイン失敗します。Luci 入れてる場合はWebからインストールが可能なので復旧できる。
Luci 入れてない場合は、完全に詰み。諦めるしかない。シリアルコンソールを使ってブート時に何とかする。潔く諦める。
luci-proto 関連
luci-proto をopkgでインストールしたWRTで、設定を保持ししてアップグレードすると、エラーになる。
初期起動時にluci-protoが見つからなくて、WEBからネットワークの状態が見られない。
wrt自体は起動するので、大至急 opkg restore
で luci-protoを戻すこと。
hotplug 関連
hotplug関連であれこれしてるときは、設定が誤作動の元になるのでいったんhotplugのカスタマイズを無効にする。
無効にしてからアップグレードするほうがトラブルが少なくていい
opkgの再インストールトラブル。
opkg の構成の復元は、saveを使う。
opkg list-installed
でインストール済み一覧を作れるが、これをもとに作業すると、ミスを引き起こすので、opkg save
を使うこと。
適当に opkg list-installed
の結果をcat list | xargs opkg re-install
とかやると opkg がopkg 自体をアンインストして詰むので注意。
opkg で一部のパッケージはrestoreされないので手動でreinstallした。
opkg reinstall ip-full opkg reinstall wget opkg reinstall procps-ng-ps opkg reinstall ddns-scripts luci-app-ddns opkg reinstall less
IPv6 NGNを使ってる場合
19.x から 21.x にアップグレードするとv6の機能が増えているので取り扱いには注意する。
ip -6 route
のデフォルトルートが、構成が代わるので注意する。 busybox の ip
と ip-full の ip
で v6の表示が異なる。
また、DS-liteとか ip4ip6 をしているときは、NTTのGWまでの経路に注意すること。
参考資料
- https://openwrt.org/docs/guide-user/installation/generic.sysupgrade#savingrestoring_user-installed_packages
- https://openwrt.org/docs/guide-user/advanced/opkg_extras
- https://openwrt.org/docs/guide-user/troubleshooting/backup_restore
- https://openwrt.org/docs/guide-quick-start/sysupgrade.luci
- https://openwrt.org/docs/guide-user/installation/sysupgrade.cli
- https://openwrt.org/docs/guide-user/installation/generic.sysupgrade
- https://github.com/el1n/OpenWRT-package-softether/blob/master/softethervpn/Makefile
- https://takuya-1st.hatenablog.jp/entry/2021/02/13/015254