【教程】编译固件如何加入自定义配置
本帖最后由 不望月的狼人 于 2022-4-10 10:47 编辑前几天在论坛看到有人问编译固件如何加入自己的自定义的配置,今日闲暇有空就分享一下自己的做法,仅供参考。
第一步:新建一个文件夹:default-settings 。你也可以叫其他名称,但是文件夹名称不能有中文。
第二步:在上述文件夹中新建文件 Makefile 和一个文件夹 files
第三步:在 files 文件夹中新建文件 99-default-settings,同时设置该文件的权限为可执行,比如755;
现在完整的目录结构是这样:
default-settings
|-- Makefile
|-- files
| | `-- 99-default-settings第四步:修改Makefile文件内容为:include $(TOPDIR)/rules.mk
PKG_NAME:=default-settings #定义包名
PKG_VERSION:=1
PKG_RELEASE:=1
PKG_LICENSE:=GPLv3
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/default-settings #设置包信息和依赖
SECTION:=luci
CATEGORY:=LuCI
TITLE:=LuCI support for Default Settings
PKGARCH:=all
DEPENDS:=+luci-base +luci
endef
define Package/default-settings/description
LuCI support for Default Settings.
endef
define Build/Compile
endef
define Package/default-settings/install #把文件 99-default-settings 写入 /etc/uci-defaults/ 目录下,如果是其他文件的话也可以用这种方法把特定文件写入固件中,比如证书
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/99-default-settings $(1)/etc/uci-defaults/99-default-settings
endef
$(eval $(call BuildPackage,default-settings))
第五步:下面就是修改 99-default-settings 了,主要就是自定义的配置,参考内容如下:
#!/bin/sh
#可以直接通过uci的接口修改配置
#比如配置系统时区
uci set system.@system.timezone=CST-8
uci set system.@system.zonename=Asia/Shanghai
uci commit system
# 比如配置无线相关
uci set wireless.radio0.cell_density='0'
uci set wireless.default_radio0.ssid='ax1800'
uci set wireless.default_radio0.encryption='psk2'
uci set wireless.default_radio0.key='12345678'
uci set wireless.radio1.cell_density='0'
uci set wireless.default_radio1.ssid='ax1800'
uci set wireless.default_radio1.encryption='psk2'
uci set wireless.default_radio1.key='12345678'
uci commit wireless
#比如配置lan口和wan口
uci set network.lan.ipaddr="192.168.0.1"
uci set network.wan.proto="pppoe"
uci set network.wan.username="账号"
uci set network.wan.password="密码"
uci commit network
#比如配置 uhttpd
uci del uhttpd.main.listen_http
uci del uhttpd.main.listen_https
uci add_list uhttpd.main.listen_http=[::]:1089
uci add_list uhttpd.main.listen_http=0.0.0.0:1089
uci add_list uhttpd.main.listen_https=[::]:1443
uci add_list uhttpd.main.listen_https=0.0.0.0:1443
uci set uhttpd.main.rfc1918_filter=0
uci set uhttpd.main.cert=/etc/ssl/certs/certificate.cer
uci set uhttpd.main.key=/etc/ssl/certs/private.key
uci set uhttpd.main.redirect_https=1
uci commit uhttpd
#也可以通过直接修改配置文件的方式来修改配置
#比如修改root默认密码和设置证书登陆的公钥
sed -i '/root/d' /etc/shadow
sed -i '1i\root:$1$G.elgsxV$IBS8iGDyioldPta4rAH0h0:19065:0:99999:7:::' /etc/shadow
echo 'ssh-rsa 共钥' > /etc/dropbear/authorized_keys
####################
#### 大量其他配置 ####
####################
#结束一定要返回 0 只有返回0后,该文件在首次执行后才会被删除
#详见: https://openwrt.org/docs/guide-developer/uci-defaults
exit 0第六步:上述工作全部做完后就可以把 default-settings 文件夹放到openwrt源码目录中的 package 文件夹下,然后 make menuconfig 时选中 default-settings ,这样编译出来的固件就带有自定义的配置了,非常方便,enjoy it;
宁谢:上述Makefile部分内容借鉴了lean仓库的内容
这个教程可太行了! smith97 发表于 2022-4-10 10:50
这个教程可太行了!
:lol感谢支持! 这个很实用,感谢分享! 支持一下 你知道如何加入自定义的VID PID吗?谢谢 jzz15 发表于 2022-7-18 13:05
你知道如何加入自定义的VID PID吗?谢谢
这个自定义 VID PID是写的哪个文件呢? 不望月的狼人 发表于 2022-7-18 13:37
这个自定义 VID PID是写的哪个文件呢?
就是option.c,加入更多的模组VID和PID,但是我看官方都是用过patch文件加的,我不清楚我自己要加怎么加 jzz15 发表于 2022-7-18 13:59
就是option.c,加入更多的模组VID和PID,但是我看官方都是用过patch文件加的,我不清楚我自己要加怎么加 ...
这个帖子只是教大家如何自定义的openwrt配置的,感觉你说的需要给源码打patch,不一样的!
不望月的狼人 发表于 2022-7-18 15:50
这个帖子只是教大家如何自定义的openwrt配置的,感觉你说的需要给源码打patch,不一样的!
...
是的,就是要改源码,哎