编译固件如何加入自定义配置

编译固件如何加入自定义配置

来源 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;


现在完整的目录结构是这样:

  1. default-settings
  2. |-- Makefile
  3. |-- files
  4. |    |   `-- 99-default-settings

第四步:修改Makefile文件内容为:

  1. include $(TOPDIR)/rules.mk
  2. PKG_NAME:=default-settings              #定义包名
  3. PKG_VERSION:=1
  4. PKG_RELEASE:=1
  5. PKG_LICENSE:=GPLv3
  6. PKG_LICENSE_FILES:=LICENSE
  7. include $(INCLUDE_DIR)/package.mk
  8. define Package/default-settings         #设置包信息和依赖
  9.   SECTION:=luci
  10.   CATEGORY:=LuCI
  11.   TITLE:=LuCI support for Default Settings
  12.   PKGARCH:=all
  13.   DEPENDS:=+luci-base +luci
  14. endef
  15. define Package/default-settings/description
  16.         LuCI support for Default Settings.
  17. endef
  18. define Build/Compile
  19. endef
  20. define Package/default-settings/install     #把文件 99-default-settings 写入 /etc/uci-defaults/ 目录下,如果是其他文件的话也可以用这种方法把特定文件写入固件中,比如证书
  21.         $(INSTALL_DIR) $(1)/etc/uci-defaults
  22.         $(INSTALL_BIN) ./files/99-default-settings $(1)/etc/uci-defaults/99-default-settings
  23. endef
  24. $(eval $(call BuildPackage,default-settings))



第五步:下面就是修改 99-default-settings 了,主要就是自定义的配置,参考内容如下:

  1. #!/bin/sh
  2. #可以直接通过uci的接口修改配置
  3. #比如配置系统时区
  4. uci set system.@system[0].timezone=CST-8
  5. uci set system.@system[0].zonename=Asia/Shanghai
  6. uci commit system
  7. # 比如配置无线相关
  8. uci set wireless.radio0.cell_density='0'
  9. uci set wireless.default_radio0.ssid='ax1800'
  10. uci set wireless.default_radio0.encryption='psk2'
  11. uci set wireless.default_radio0.key='12345678'
  12. uci set wireless.radio1.cell_density='0'
  13. uci set wireless.default_radio1.ssid='ax1800'
  14. uci set wireless.default_radio1.encryption='psk2'
  15. uci set wireless.default_radio1.key='12345678'
  16. uci commit wireless
  17. #比如配置lan口和wan口
  18. uci set network.lan.ipaddr="192.168.0.1"
  19. uci set network.wan.proto="pppoe"
  20. uci set network.wan.username="账号"
  21. uci set network.wan.password="密码"
  22. uci commit network
  23. #比如配置 uhttpd
  24. uci del uhttpd.main.listen_http
  25. uci del uhttpd.main.listen_https
  26. uci add_list uhttpd.main.listen_http=[::]:1089
  27. uci add_list uhttpd.main.listen_http=0.0.0.0:1089
  28. uci add_list uhttpd.main.listen_https=[::]:1443
  29. uci add_list uhttpd.main.listen_https=0.0.0.0:1443
  30. uci set uhttpd.main.rfc1918_filter=0
  31. uci set uhttpd.main.cert=/etc/ssl/certs/certificate.cer
  32. uci set uhttpd.main.key=/etc/ssl/certs/private.key
  33. uci set uhttpd.main.redirect_https=1
  34. uci commit uhttpd
  35. #也可以通过直接修改配置文件的方式来修改配置
  36. #比如修改root默认密码和设置证书登陆的公钥
  37. sed -i '/root/d' /etc/shadow
  38. sed -i '1i\root:$1$G.elgsxV$IBS8iGDyioldPta4rAH0h0:19065:0:99999:7:::' /etc/shadow
  39. echo 'ssh-rsa 共钥' > /etc/dropbear/authorized_keys
  40. ####################
  41. #### 大量其他配置 ####
  42. ####################
  43. #结束一定要返回 0 只有返回0后,该文件在首次执行后才会被删除
  44. #详见: https://openwrt.org/docs/guide-developer/uci-defaults
  45. exit 0

第六步:上述工作全部做完后就可以把 default-settings 文件夹放到openwrt源码目录中的 package 文件夹下,然后 make menuconfig 时选中 default-settings ,这样编译出来的固件就带有自定义的配置了,非常方便,enjoy it;

宁谢:上述Makefile部分内容借鉴了lean仓库的内容

 

=========== End

 

posted @ 2022-12-18 00:41  lsgxeva  阅读(530)  评论(0编辑  收藏  举报