备忘录:升级 OpenWrt 的步骤

本文最后更新于:2023年1月11日 晚上

本人家中使用的主路由器是新路由 3 (Newifi D2),刷 Breed 后安装了原版的 OpenWrt 系统。每次都跟随版本步伐,升级到最新版本的 OpenWrt。

之前将 OpenWrt 从 19.07.9 升级到 21.02 时,由于 OpenWrt 升级了 Linux 内核,swconfig 被切换成 DSA (Distributed Switch Architecture),交换机端口和 VLAN 的设置发生了巨大的改变,所以不得已在升级的时候没有选择 保持设置并保留当前配置。升级完成了花费了大量的时间重新进行配置。

所以,我决定趁着这次将 OpenWrt 从 21.02.3 升级到 22.03.2 的机会,把升级过程记录下来。

一、下载镜像文件

[OpenWrt Wiki] Table of Hardware 中找到自己的设备。新路由 3 的设备页面为 [OpenWrt Wiki] Techdata: D-Team Newifi D2 (Newifi3)。在 Dataentry 中找到 Firmware OpenWrt Upgrade URL,后面就是升级固件的下载链接。

OpenWrt.org 提供了 Firmware Selector 帮助用户找到设备对应的固件,新路由最新固件的页面

二、升级固件

下载 sysupgrade.bin 升级固件后,打开浏览器访问路由器 OpenWrt 管理页面,点击 “系统 System” - “备份与升级 Backup / Flash Firmware”,点击 “刷写新的固件 Flash new firmware image” 下面的 “刷写固件 Flash image…”

点击 “浏览 Browse…” 选择下载的 sysupgrade.bin 文件,然后 “上传 Upload”。

Openwrt刷写固件
图1 刷写固件

刷写固件之前一定要记得核对上传镜像的 SHA256 是否与 Firmware Selector 页面上显示的 sha256sum 一致,以免路由器变砖。

刷写新固件之前一定要记得在 “系统 System” - “备份与升级 Backup / Flash Firmware” 中将路由器 “备份 Backup” 一遍。

三、修改 OPKG 源

使用 清华大学开源软件镜像站 或者 中国科学技术大学镜像站 可以加速 Openwrt 的软件下载。在 “系统 System” - “软件包 Software” 中“配置 Configure OPKG…)” 将 URL 中的 downloads.openwrt.org 这部分替换为 mirrors.ustc.edu.cn/openwrt 即可。

点击 “更新列表 Update lists…”,更新软件列表。

四、安装软件包

【1】 安装软件的汉化包可以直接安装其对应的软件,搜索 zh-cn 关键词,安装以下汉化包。

  • luci-i18n-base-zh-cn
  • luci-i18n-firewall-zh-cn
  • luci-i18n-mwan3-zh-cn
  • luci-i18n-nlbwmon-zh-cn
  • luci-i18n-opkg-zh-cn
  • luci-i18n-wireguard-zh-cn
  • luci-i18n-wol-zh-cn
1
2
> opkg update #更新软件列表
> opkg install luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn luci-i18n-mwan3-zh-cn luci-i18n-nlbwmon-zh-cn luci-i18n-opkg-zh-cn luci-i18n-wireguard-zh-cn luci-i18n-wol-zh-cn

【2】 为了支持 U 盘扩展,需要安装 kmod-fs-ext4、block-mount、kmod-usb-storage,然后重启路由器(“系统 System” - “重启 Reboot” )。

1
2
> opkg update #更新软件列表
> opkg install kmod-fs-ext4 block-mount kmod-usb-storage

【3】安装 luci-theme-argon 美化 Luci 界面

【4】安装 luci-app-adguardhome 提供屏蔽的家庭 DNS 服务

如果点击 “服务 Service” - “AdGuardHome” 时出现以下错误信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/usr/lib/lua/luci/dispatcher.lua:1379: module 'luci.cbi' not found:
no field package.preload['luci.cbi']
no file './luci/cbi.lua'
no file '/usr/share/lua/luci/cbi.lua'
no file '/usr/share/lua/luci/cbi/init.lua'
no file '/usr/lib/lua/luci/cbi.lua'
no file '/usr/lib/lua/luci/cbi/init.lua'
no file './luci/cbi.so'
no file '/usr/lib/lua/luci/cbi.so'
no file '/usr/lib/lua/loadall.so'
no file './luci.so'
no file '/usr/lib/lua/luci.so'
no file '/usr/lib/lua/loadall.so'
stack traceback:
[C]: in function 'require'
/usr/lib/lua/luci/dispatcher.lua:1379: in function '_cbi'
/usr/lib/lua/luci/dispatcher.lua:1056: in function 'dispatch'
/usr/lib/lua/luci/dispatcher.lua:1032: in function 'dispatch'
/usr/lib/lua/luci/dispatcher.lua:483: in function </usr/lib/lua/luci/dispatcher.lua:482>

需要安装 luci-compat 兼容库

开启 AdGuardHome 的自启动,“系统” - “启动项” 中找到 AdguardHome 将 “已禁用” 切换为 “已启用”。

在 “服务 Service” - “AdGuardHome” 中更新 AdGuardHome 的核心版本:

(1) 在 “升级用的下载链接” 中更改对应核心的版本号,例如 v0.107.21

1
2
3
https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.21/AdGuardHome_linux_mipsle_softfloat.tar.gz
https://static.adguard.com/adguardhome/release/AdGuardHome_linux_mipsle_softfloat.tar.gz
#https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_${Arch}.tar.gz

(2) 在更新核心时出现下面的错误信息:

1
2
3
4
5
6
Local version: v0.107.20, cloud version: v0.107.21.
Updating core...
start download
/usr/share/AdGuardHome/update_core.sh: line 168: wget-ssl: not found
download failed try another download
no download success

需要 SSH 到路由器主机,将 /usr/share/AdGuardHome/update_core.sh 文件中第 168 行 wget-ssl 修改为 wget,之后点击 “更新核心” 就可以正常更新核心版本了。


备忘录:升级 OpenWrt 的步骤
https://vickey.fun/2023/01/05/memorandum-upgrade-openwrt/
作者
饶玮琪
发布于
2023年1月5日
许可协议