[已解决] openwrt重启会重置/etc/resolve.conf问题

  1. 把原来的移动到自创文件resolv.conf.link
mv /etc/resolv.conf /etc/resolv.conf/link
  1. 新建一个resolv.conf
vim  /etc/resolv.conf
<think> 我们正在处理一个关于Makefile中定义Package/smartdns/conffiles的问题。用户定义了一系列文件,但最终生成的conffiles缺少了第一个文件(/etc/config/smartdns)。我们需要分析可能的原因。 常见原因: 1. 语法错误:在makefile中,define块的使用可能有误,或者变量赋值被覆盖。 2. 路径问题:第一个文件可能不存在于指定的位置,或者在构建过程中被删除。 3. 其他规则覆盖:可能存在其他规则覆盖了conffiles的定义。 4. 变量扩展问题:在定义多行变量时,可能由于空格或制表符导致问题。 具体到用户的情况,用户使用了`define Package/smartdns/conffiles ... endef`来定义。在OpenWrt的构建系统中,这通常用于定义包中的配置文件列表。 我们需要检查: - 是否在定义之后有其他操作修改了该变量? - 文件路径是否有效?特别是第一个文件`/etc/config/smartdns`是否在构建目录中存在? 然而,注意用户提供的信息中,第一个文件是`/etc/config/smartdns`,而其他文件都在`/etc/smartdns/`目录下。可能的原因是这个文件不在预期的位置,或者构建系统在生成包时没有找到它,因此被自动过滤掉了。 在OpenWrt的构建系统中,`conffiles`文件是由`Package/<pkgname>/conffiles`定义的文件列表生成的,这些文件在打包时会被标记为配置文件。构建系统会检查这些文件是否存在于`$(1)/`(即包的临时目录)中,如果不存在,则不会包含它们。因此,最可能的原因是`/etc/config/smartdns`文件没有被正确地安装到包的临时目录中。 建议用户检查: 1. 在`Package/smartdns/install`部分,是否确保安装了`/etc/config/smartdns`文件? 2. 检查构建目录中对应包的临时目录(例如`build_dir/target-.../smartdns-ipk/.../etc/config/smartdns`)是否存在该文件。 如果没有安装,那么即使定义了,也不会出现在conffiles中。 另外,还要注意在Makefile中,`define Package/smartdns/conffiles`的定义是否被正确地包含在`Package/smartdns`的定义块内。 另一种可能是,在定义`conffiles`时,第一个路径前面不小心多了一个空格或其他不可见字符,导致该路径无效?但用户粘贴的内容来看,似乎没有。 因此,我们主要怀疑安装步骤遗漏了第一个文件。 另外,在OpenWrt中,`/etc/config/`目录下的文件通常是UCI配置文件,有时可能会通过其他方式处理(例如使用`uci-defaults`脚本)。但这里只是作为配置文件列表,应该不会影响其被包含。 所以,重点检查安装步骤。 </think> 在你的Makefile中,`define Package/smartdns/conffiles`定义的文件列表缺少了第一个条目`/etc/config/smartdns`,可能由以下原因导致: ### 常见原因分析: 1. **路径安装缺失** 确保在`Package/smartdns/install`部分正确安装了该文件: ```makefile define Package/smartdns/install $(INSTALL_DIR) $(1)/etc/config $(INSTALL_DATA) ./files/smartdns.config $(1)/etc/config/smartdns # 关键安装命令 ...(其他文件安装) endef ``` 如果文件未被实际安装到`$(1)/etc/config/smartdns`,构建系统会自动过滤掉无效路径。 2. **文件路径冲突** `/etc/config/smartdns`通常用于**UCI配置文件**。如果其他包(如`luci-app-smartdns`)声明了同名文件,可能导致覆盖冲突。检查是否有重复定义。 3. **空格/缩进问题** 确保`define`块内每行**无前导空格或制表符**(OpenWrt BuildSystem 对缩进敏感): ```makefile define Package/smartdns/conffiles # 正确:顶格写 /etc/config/smartdns # 正确:无缩进 /etc/smartdns/address.conf ... endef ``` 4. **构建缓存残留** 运行`make clean`后重新编译,避免缓存导致异常: ```bash make package/smartdns/{clean,compile} V=s ``` ### 验证步骤: 1. 检查构建临时目录中文件是否存在: ```bash ls bin/packages/*/base/smartdns/ipkg-*/etc/config/smartdns ``` 2. 检查最终生成的`control`文件: ```bash unzip -p bin/packages/*/smartdns*.ipk control.tar.gz | tar -xzO ./conffiles ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值