不望月的狼人 发表于 2022-4-10 10:39:43

【教程】编译固件如何加入自定义配置

本帖最后由 不望月的狼人 于 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:13

这个教程可太行了!

不望月的狼人 发表于 2022-4-10 10:59:15

smith97 发表于 2022-4-10 10:50
这个教程可太行了!

:lol感谢支持!

giano 发表于 2022-4-10 13:49:19

这个很实用,感谢分享!

萝卜大侠 发表于 2022-4-10 20:57:47

支持一下

jzz15 发表于 2022-7-18 13:05:27

你知道如何加入自定义的VID PID吗?谢谢

不望月的狼人 发表于 2022-7-18 13:37:01

jzz15 发表于 2022-7-18 13:05
你知道如何加入自定义的VID PID吗?谢谢

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

jzz15 发表于 2022-7-18 13:59:11

不望月的狼人 发表于 2022-7-18 13:37
这个自定义 VID PID是写的哪个文件呢?

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

不望月的狼人 发表于 2022-7-18 15:50:04

jzz15 发表于 2022-7-18 13:59
就是option.c,加入更多的模组VID和PID,但是我看官方都是用过patch文件加的,我不清楚我自己要加怎么加 ...

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

jzz15 发表于 2022-7-18 16:19:52

不望月的狼人 发表于 2022-7-18 15:50
这个帖子只是教大家如何自定义的openwrt配置的,感觉你说的需要给源码打patch,不一样的!
...

是的,就是要改源码,哎
页: [1] 2 3
查看完整版本: 【教程】编译固件如何加入自定义配置