首页 > 其他分享 >编译固件如何加入自定义配置

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

时间:2022-12-18 00:56:40浏览次数:46  
标签:set 自定义 settings default uhttpd 编译 https 固件 uci

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

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

 

标签:set,自定义,settings,default,uhttpd,编译,https,固件,uci
From: https://www.cnblogs.com/lsgxeva/p/16989889.html

相关文章

  • 如何反编译Java文件?
    ​反编译Java文件就是将编译好的.class文件反编译为.java文件,我们可以利用IDEA来轻松实现反编译。一.找到我们的.class文件1.打开项目结构2.在模块下选择想要的输......
  • unbutu系统wireshark源码编译与安装
    官网:https://www.wireshark.org/官方文档:Wireshark·Documentation介绍wireshark[1]是一款抓包工具。wireshark的GUI(用户界面)框架从开发版本1.11.0(2013.11.15)开......
  • 【libsvm】使用与自定义核函数
    一、svmtrain.c部分voidexit_with_help(){mexPrintf("Usage:model=svmtrain(training_label_vector,training_instance_matrix,'libsvm_options');\n"......
  • 自定义注解使用在AOP切面编程里
    自定义注解:@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public@interfaceRedisDistributeLock{Stringkey();intleastLockMs()......
  • springboot配置自定义objectMapper
      packagecom.my.config;importcom.fasterxml.jackson.annotation.JsonInclude;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackso......
  • 【云原生】Prometheus 自定义告警规则
    目录一、概述二、告警实现流程三、告警规则1)告警规则配置1)监控服务器是否在线3)告警数据的状态四、实战操作1)下载node_exporter2)启动node_exporter3)配置Prometheus加载nod......
  • springboot启动读取配置文件过程&自定义配置文件处理器
        最近看到看到spring的配置文件放在了resources/config/application.yal文件内部,第一次见。就想的研究下,springboot启动读取配置文件的过程。1.启动过程org.spring......
  • VC如何创建C编译器能使用的动态库
    方法使用extern"C"修饰设置统一的调用约定举例例1——使用__cdecl,一般C编译器使用此约定,如LabWidnows/CVI。cpp代码extern"C"__declspec(dllexport)uint32_......
  • 预编译#error的使用
    1、引言说到预编译,大家立刻就能想到#define、#if、#ifdef和#ifndef等熟悉的预编译命令。其实#include,我们通常放在源文件用来包含头文件,它也是预编译命令。当然这不是这篇......
  • 08 回文质数 -Linux环境下的编译执行
    打开终端(terminal)输入cdm//打开m文件输入touchmain.cpp//新建main.cpp文件输入vimmain.cpp//使用vim来编写代码编写完毕后输入:wq//保存并退出输入g++main......