请选择 进入手机版 | 继续访问电脑版

forum.gl-inet.cn

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
    查看: 17880|回复: 26

    [经验分享] 【教程】编译固件如何加入自定义配置

      [复制链接]

    17

    主题

    374

    帖子

    2362

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    2362
    发表于 2022-4-10 10:39:43 | 显示全部楼层 |阅读模式
    本帖最后由 不望月的狼人 于 2022-4-10 10:47 编辑

    前几天在论坛看到有人问编译固件如何加入自己的自定义的配置,今日闲暇有空就分享一下自己的做法,仅供参考。

    第一步:新建一个文件夹: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仓库的内容

    回复

    使用道具 举报

    0

    主题

    4

    帖子

    112

    积分

    注册会员

    Rank: 2

    积分
    112
    发表于 2022-4-10 10:50:13 | 显示全部楼层
    这个教程可太行了!
    回复

    使用道具 举报

    17

    主题

    374

    帖子

    2362

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    2362
     楼主| 发表于 2022-4-10 10:59:15 | 显示全部楼层
    smith97 发表于 2022-4-10 10:50
    这个教程可太行了!

    感谢支持!
    回复

    使用道具 举报

    6

    主题

    72

    帖子

    662

    积分

    高级会员

    Rank: 4

    积分
    662
    发表于 2022-4-10 13:49:19 | 显示全部楼层
    这个很实用,感谢分享!
    回复

    使用道具 举报

    76

    主题

    2144

    帖子

    9869

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    9869

    官方人员

    发表于 2022-4-10 20:57:47 | 显示全部楼层
    支持一下
    回复

    使用道具 举报

    2

    主题

    17

    帖子

    76

    积分

    注册会员

    Rank: 2

    积分
    76
    发表于 2022-7-18 13:05:27 | 显示全部楼层
    你知道如何加入自定义的VID PID吗?谢谢
    回复

    使用道具 举报

    17

    主题

    374

    帖子

    2362

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    2362
     楼主| 发表于 2022-7-18 13:37:01 | 显示全部楼层
    jzz15 发表于 2022-7-18 13:05
    你知道如何加入自定义的VID PID吗?谢谢

    这个自定义 VID PID是写的哪个文件呢?
    回复

    使用道具 举报

    2

    主题

    17

    帖子

    76

    积分

    注册会员

    Rank: 2

    积分
    76
    发表于 2022-7-18 13:59:11 | 显示全部楼层
    不望月的狼人 发表于 2022-7-18 13:37
    这个自定义 VID PID是写的哪个文件呢?

    就是option.c,加入更多的模组VID和PID,但是我看官方都是用过patch文件加的,我不清楚我自己要加怎么加
    回复

    使用道具 举报

    17

    主题

    374

    帖子

    2362

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    2362
     楼主| 发表于 2022-7-18 15:50:04 | 显示全部楼层
    jzz15 发表于 2022-7-18 13:59
    就是option.c,加入更多的模组VID和PID,但是我看官方都是用过patch文件加的,我不清楚我自己要加怎么加 ...

    这个帖子只是教大家如何自定义的openwrt配置的,感觉你说的需要给源码打patch,不一样的!
    回复

    使用道具 举报

    2

    主题

    17

    帖子

    76

    积分

    注册会员

    Rank: 2

    积分
    76
    发表于 2022-7-18 16:19:52 | 显示全部楼层
    不望月的狼人 发表于 2022-7-18 15:50
    这个帖子只是教大家如何自定义的openwrt配置的,感觉你说的需要给源码打patch,不一样的!
    ...

    是的,就是要改源码,哎
    回复

    使用道具 举报

    17

    主题

    374

    帖子

    2362

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    2362
     楼主| 发表于 2022-7-18 16:24:21 | 显示全部楼层
    jzz15 发表于 2022-7-18 16:19
    是的,就是要改源码,哎

    下载源码自己修改生成patch不就好了么
    回复

    使用道具 举报

    2

    主题

    17

    帖子

    76

    积分

    注册会员

    Rank: 2

    积分
    76
    发表于 2022-7-18 16:26:45 | 显示全部楼层
    不望月的狼人 发表于 2022-7-18 16:24
    下载源码自己修改生成patch不就好了么

    我在WSL里编译固件总是EXIT 1,也没错误提示
    回复

    使用道具 举报

    17

    主题

    374

    帖子

    2362

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    2362
     楼主| 发表于 2022-7-18 16:57:50 | 显示全部楼层
    jzz15 发表于 2022-7-18 16:26
    我在WSL里编译固件总是EXIT 1,也没错误提示

    提供截图呢,让 @萝卜大侠 帮你看看!
    回复

    使用道具 举报

    0

    主题

    19

    帖子

    80

    积分

    注册会员

    Rank: 2

    积分
    80
    发表于 2022-10-20 18:12:41 | 显示全部楼层
    感谢分享。
    回复

    使用道具 举报

    5

    主题

    48

    帖子

    162

    积分

    注册会员

    Rank: 2

    积分
    162
    发表于 2022-11-12 15:22:34 来自手机 | 显示全部楼层
    可不可以先设置好,然后把设置导出来,编译时加进去?
    回复

    使用道具 举报

    17

    主题

    374

    帖子

    2362

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    2362
     楼主| 发表于 2022-11-12 19:15:09 | 显示全部楼层
    WittyHare 发表于 2022-11-12 15:22
    可不可以先设置好,然后把设置导出来,编译时加进去?

    当然可以
    回复

    使用道具 举报

    5

    主题

    48

    帖子

    162

    积分

    注册会员

    Rank: 2

    积分
    162
    发表于 2022-11-12 21:18:32 | 显示全部楼层

    谢谢,慢慢折腾。一时半会还搞不会。
    回复

    使用道具 举报

    0

    主题

    8

    帖子

    38

    积分

    新手上路

    Rank: 1

    积分
    38
    发表于 2022-11-14 20:50:32 | 显示全部楼层
    谢谢分享!
    回复

    使用道具 举报

    0

    主题

    834

    帖子

    1684

    积分

    禁止发言

    积分
    1684
    发表于 2023-1-14 01:29:46 | 显示全部楼层
    好好好好好好好好好好好好好好好好好顶
    回复

    使用道具 举报

    4

    主题

    17

    帖子

    118

    积分

    注册会员

    Rank: 2

    积分
    118
    发表于 2023-2-24 10:13:53 | 显示全部楼层
    这个方法可行,补充一下,这个实现的本质是root下面etc/uci-defaults文件夹下的文件会在初次启动时被识别为sh脚本,并按照文件名排序进行依次执行,执行后删除。
    因此,99开头的文件名很重要,而99-后面的default-settings不重要。实际上,可以在这个文件夹里添加多个脚本按顺序执行都可以。
    源码中,文件放置在openwrt/package/base-files/files/etc/uci-defaults文件夹下即可,makefile的部分和menuconfig的部分可以省略。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|gl-inet.cn ( 粤ICP备18130956号 )

    GMT+8, 2024-12-3 19:33 , Processed in 0.027478 second(s), 24 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表