-
Notifications
You must be signed in to change notification settings - Fork 12
通过使用本地源的方法为将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/
(此处也可直接引用 luci-app-smartdns 项目 lede 分支文件。如果选用 package/luci 可参考 luci-app-smartdns 项目的 master 分支)
(注意: coolsnowwolf 及其衍生的分支不支持 luci-app-smartdns,必须用 luci-app-smartdns-compat)
-
复制 luci-app-smartdns 项目 lede 分支中的 Makefile 文件到 localsource/luci-app-smartdns/
此时 localsource 文件夹结构如下(以下只显示第一层子文件夹和文件,其他省略;其中带<>的表示文件夹,其他为文件):
root@localhost:~/localsource# tree -L 2
.
├── <luci-app-smartdns>
│ ├── <control>
│ ├── <luasrc>
│ ├── Makefile
│ └── <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
删除以下开头的若干行(或在行首加#注释掉):
PKG_SOURCE_PROTO:=......
PKG_SOURCE_URL:=......
PKG_SOURCE_VERSION:=......
PKG_MIRROR_HASH:=......
-
到 localsource/luci-app-smartdns/luasrc/i18n 文件夹,执行
po2lmo smartdns.zh-cn.po smartdns.zh-cn.lmo
(如果提示没有po2lmo,就先到 openwrt 项目文件夹
make package/feeds/luci/luci-base/compile
)(这个地方折腾了很久,但这个方法不符合规范。如果你有更好的方法请务必告诉我)
-
到 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),然后正常编译即可。
如果需要编译单个包,可执行make package/luci-app-smartdns/compile
(由于依赖关系,编译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.
。旧版则可以正常启动运行。