-
Notifications
You must be signed in to change notification settings - Fork 11
通过使用本地源的方法为将smartdns集成到openwrt固件内
-
建一个本地源文件夹,比如我的是 localsource
-
在本地源文件夹内建两个子文件夹,分别命名为 smartdns 和 luci-app-smartdns
-
复制 smartdns 项目中 package/openwrt/ 内所有文件和子文件夹到 localsource/smartdns/ 复制 smartdns 项目中的 /src/ 内所有文件和子文件夹到 localsource/smartdns/src/
-
复制 smartdns 项目中 package/luci-compat/files/luci/ 内所有文件和子文件夹到 localsource/luci-app-smartdns/luasrc/
复制 smartdns 项目中 package/luci-compat/files/etc/ 内所有文件和子文件夹到 localsource/luci-app-smartdns/root/etc/
复制 smartdns 项目中 package/luci-compat/control/ 内所有文件和子文件夹到 localsource/luci-app-smartdns/control/
复制 smartdns 项目中 package/luci-compat/files/luci/i18n/smartdns.zh-cn.po 到 localsource/luci-app-smartdns/po/zh-cn/
(此处也可直接引用 luci-app-smartdns 项目 lede 分支文件)
-
复制 luci-app-smartdns 项目 lede 分支中的 Makefile 文件到 localsource/luci-app-smartdns/
此时 localsource 文件夹结构如下(以下只显示第一层子文件夹和文件,其他省略;其中带<>的表示文件夹,其他为文件):
root@localhost:~/localsource# tree -L 2
.
├── <luci-app-smartdns> <-----此文件夹结构与 luci-app-smartdns 项目完全相同
│ ├── <control>
│ ├── <luasrc>
│ ├── Makefile
│ ├── po
│ └── <root>
└── <smartdns>
├── address.conf
├── blacklist-ip.conf
├── <control>
├── custom.conf
├── debian-binary <-----此文件不必要,但由于复制方便所以在此处
├── <files>
├── Makefile
├── make.sh <-----此文件不必要,但由于复制方便所以在此处
└── <src>
-
修改 localsource/smartdns/Makefile 文件和 localsource/luci-app-smartdns/Makefile 文件中的版本号:
修改 PKG_VERSION:= 改为新版本号(比如我当前的自编号为1.2022.v37.2.10
-
到openwrt项目文件夹,修改feeds.conf(如果没有这个文件就复制feeds.conf.default 到 feeds.conf),在最后一行增加
src-link custom /root/localsource
其中 /root/localsource 为本地源文件夹的绝对路径
-
执行
./scripts/feeds update -a && ./scripts/feeds install -a
./scripts/feeds uninstall smartdns luci-app-smartdns
./scripts/feeds install -f -p custom smartdns luci-app-smartdns
执行 make menuconfig 选中 luci-app-smartdns(此时会自动选中smartdns),然后正常编译即可。
为了证实安装后为最新版而不是官方仓库的文件。在自定义设置中增加
domain-set -name test -type list -file
domain-set 是 v37.2.10 新增的配置,由于缺少参数中的文件名,新版本将无法启动并在系统日志中记录配置错误形如 smartdns: process config file 'xxxxxx' failed at line xxxx.
。旧版则可以正常启动运行。