编译固件如何加入自定义配置
编译固件如何加入自定义配置
来源 https://forum.gl-inet.cn/forum.php?mod=viewthread&tid=143
参考 https://github.com/JiaY-shi/build-gl.inet
参考 https://github.com/luochongjun/glinet-firmware-action
参考 https://github.com/draco-china/Draco-OpenWrt-GL-AX1800
参考 https://github.com/coolsnowwolf/lede
参考 https://github.com/x-wrt/build-release
前几天在论坛看到有人问编译固件如何加入自己的自定义的配置,今日闲暇有空就分享一下自己的做法,仅供参考。
第一步:新建一个文件夹: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[0].timezone=CST-8
- uci set system.@system[0].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仓库的内容
=========== End