路由器更新 OpenWrt 固件一般步骤

没想到 OpenWrt 小版本的升级也差不多相当于重新刷固件了。可能是我还有什么每搞清楚的地方。已经勾选了保存现有配置,升级后无线配置至少是还在。可是网页管理界面能打开,但是无法登录进去。然后固件之外自定义安装的软件还会在升级过程中消失。其实升级过程仅仅是比安装过程少了一些配置方面的工作。

踩了一些坑之后就整理了一下一般的升级流程,免得一次又一次踩坑。

参考流程

  1. 下载保存配置文件
  2. 停用 Scheduled Tasks,等完成全部升级内容之后再恢复。这个主要是防止自己配置的一些自动化脚本会在升级过程中重启路由器之类的。
  3. 通过网页界面或者 SSH 到路由器的命令行界面(sysupgrade)执行固件升级升级时勾选保留当前配置
    线上传下载好的固件,

    $ scp openwrt-19.07.3-bcm53xx-netgear-r8000-squashfs.chk root@192.168.1.1:/tmp

    在路由器中通过命令行升级,例如,

    # sysupgrade -v /tmp/openwrt-19.07.3-bcm53xx-netgear-r8000-squashfs.chk
  4. 路由器升级之后会自动重启,如果没有,可以手动重启一下。重启之后应该可以自动连接上无线热点或者有线连接。不出意外的话应该已经可以上网了。PPPoE 自动拨号什么的不会受影响。如果遇到网页管理界面可以访问但是不能登录进去,可以清空一下浏览器缓存,或者换用浏览器的隐身模式。这个网络管理界面 LuCI 无法登入可能是浏览器缓存的问题,使用浏览器的隐身模式很容易检查。实在不行还可以 SSH 登录命令行界面。
  5. 禁用自定义的 dnsmasq 的配置文件,恢复普通的网络访问能力,
    # mv /etc/dnsmasq.d /etc/dnsmasq.d.bak
    # /etc/init.d/dnsmasq retart
  6. 重新安装自己后来增加的各种应用,例如下面这样。
    下面一次性安装所有需要的软件包。将有冲突的配置文件先记录下来。遇到安装失败的可以多试几次。

    # opkg update && opkg install vim-full diffutils block-mount e2fsprogs kmod-fs-ext4 kmod-usb-storage kmod-usb2 kmod-usb3
    
    # opkg update && opkg install libustream-mbedtls ca-bundle ca-certificates etherwake openvpn-openssl shadowsocks-libev-config shadowsocks-libev-ss-local shadowsocks-libev-ss-redir shadowsocks-libev-ss-rules shadowsocks-libev-ss-tunnel ipset libpthread haveged curl bind-dig
    
    # opkg update && opkg install dnsmasq-full && opkg remove dnsmasq

    安装并配置使用 vim 的代码高亮和文档比较编辑功能。详情参照这篇文章

    # sed -i 's/"\?set number/set number/' /usr/share/vim/vimrc
    # sed -i 's/"\?set rnu/set rnu/' /usr/share/vim/vimrc

    升级所有现有软件包,

    # opkg update && opkg upgrade $(opkg list-upgradable | awk '{print $1}')

    看提示有几个配置文件跟原来的不一样,需要先记下来,等下一个个再整。例如,

    Collected errors:
    * resolve_conffiles: Existing conffile /etc/config/luci is different from the conffile in the new package. The new conffile will be placed at /etc/config/luci-opkg.
    * resolve_conffiles: Existing conffile /etc/config/ucitrack is different from the conffile in the new package. The new conffile will be placed at /etc/config/ucitrack-opkg.
    * resolve_conffiles: Existing conffile /etc/config/uhttpd is different from the conffile in the new package. The new conffile will be placed at /etc/config/uhttpd-opkg.

    使用刚刚配置好的 vimdiff 来比较和编辑上面列出的冲突的配置文件。例如,

    # vimdiff /etc/config/luci /etc/config/luci-opkg

    根据经验修改吧。保存之后如果觉得新的配置文件没用了可以直接删除,

    # rm /etc/config/luci-opkg
  7. 如果 U 盘没有自动挂载,最后再恢复 USB 盘的访问
    # ls -al /dev/sd*
    # block detect | uci import fstab
    # uci set fstab.@mount[0].enabled='1' && uci set fstab.@global[0].check_fs='1' && # uci commit
    # /sbin/block mount && service fstab enable
    # mount /dev/sda1 /home

    恢复 /etc/dnsmasq.d

    # mv /etc/dnsmasq.d.bak /etc/dnsmasq.d
  8. 恢复 Scheduled Tasks 并重启路由器</>

跟之前的 OpenWrt 安装相比,上面重新安装 OpenWrt 19.07.3 中的软件的时候增加了 libipset13,这是因为新版本中该库文件从 ipset 软件包中分离出来了,需要主动安装它,否则部署 SS 的时候就无法使用 ipset 来配置自动分类代理功能了。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/general-steps-to-upgrade-openwrt-in-home-router/>。转载请保留此信息及相应链接。

1 条关于 “路由器更新 OpenWrt 固件一般步骤” 的评论

  1. 引用通告: 升级路由器固件 OpenWRT 18.06.5 到 19.07.0(更新 19.07.3) | 水景一页

雁过留声,人过留名

电子邮件地址不会被公开。 必填项已用*标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据