OpenWrt之自定义Firmware Version
OpenWrt之自定义Firmware Version
首先,找到显示Firmware Version的代码,在/usr/lib/lua/luci/version.lua
中:
root@OpenWrt:/usr/lib/lua/luci# cat version.lua
local pcall, dofile, _G = pcall, dofile, _G
module "luci.version"
if pcall(dofile, "/etc/openwrt_release") and _G.DISTRIB_DESCRIPTION then
distname = ""
distversion = _G.DISTRIB_DESCRIPTION
if _G.DISTRIB_REVISION then
distrevision = _G.DISTRIB_REVISION
if not distversion:find(distrevision,1,true) then
distversion = distversion .. " " .. distrevision
end
end
else
distname = "OpenWrt"
distversion = "Development Snapshot"
end
luciname = "LuCI Master"
luciversion = "git-23.279.81765-f7ab758"
故需要修改/etc/openwrt_release
文件,查看其原本内容,可以直接在package/base-files
这个package中修改此文件。
但是这样就是每次都需要重新编译base-files
这个package。
最好应该是在打包文件系统时修改,这样每次打包rootfs
都会重新编译。
根据打包的日志,找到执行打包的地方,在include/image.mk
中,做如下修改:
diff --git a/include/image.mk b/include/image.mk
index 096ccb5..83b6ce6 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -237,6 +237,7 @@ $(eval $(foreach S,$(JFFS2_BLOCKSIZE),$(call Image/mkfs/jffs2/template,$(S))))
$(eval $(foreach S,$(NAND_BLOCKSIZE),$(call Image/mkfs/jffs2-nand/template,$(S))))
define Image/mkfs/squashfs-common
+ $(STAGING_DIR_HOST)/bin/version_maker.sh $(call mkfs_target_dir,$(1))
$(STAGING_DIR_HOST)/bin/mksquashfs4 $(call mkfs_target_dir,$(1)) $@ \
-nopad -noappend -root-owned \
-comp $(SQUASHFSCOMP) $(SQUASHFSOPT)
同时,在staging/host/bin
目录下,新增脚本version_maker.sh
,具体如下:
#!/bin/sh
main() {
local file=`find $1 -name openwrt_release`
# echo "file:$file"
[ ! -f $file ] && return
local D=$(TZ=UTC-8 date +%Y%m%d)
local T=$(TZ=UTC-8 date +%H%M%S)
sed -i "s/^DISTRIB_RELEASE=.*/DISTRIB_RELEASE='Adam Build $D Rel\. $T'/g" $file
sed -i "s/^DISTRIB_DESCRIPTION=.*/DISTRIB_DESCRIPTION=\'Adam Build $D Rel\. $T\'/g" $file
}
main $1
注意给文件添加可执行权限:
chmod +x version_maker.sh
然后替换对应的行即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix