本帖最后由 eddiechen 于 2020-3-1 23:55 编辑
极路由3,目前好像就只能使用官方的openwrt的固件,要么就只能自己编译。现在大家都使用lean 的openwrt固件,基本都是x86的。
刚好看到利用github的action功能,就可以编译openwrt的固件,那么就研究一下,看看能不能编译出自己的固件。
参考文章
https://zhuanlan.zhihu.com/p/94527343
https://wp.gxnas.com/5257.html
https://openwrt.org/toh/hiwifi/hiwifi_gee_hc5661
这是我极路由刷机的记录
https://www.right.com.cn/forum/thread-855400-1-1.html
https://www.vediotalk.com/archives/6827
写了一个总结,放在前面。
Welcome to Lean's git source of OpenWrt and packages
这是我fork Lean的lede的源来编译自己的固件。同时也分享我的体会。
https://p3terx.com/archives/buil ... github-actions.html
最新实现使用github的actions的想法是p3terx,他自己的github上提供了一个OpenWRT-Actions的代码。Lean参考,把自己的Lede的代码支持github action。
他们两个的实现方式是有点差异的。
p3terx的github-actions,是用户角度去编译固件,就是编译一个属于自己的固件。最明显看到的一个差异,就是每次都git clone 最新的lede的代码过来编译。
lede上的openwrt-ci.yml,是在开发者角度,开发的新的功能,进行编译。
我是基于lede的openwrt-ci.yml,参考p3terx的github-actions,做了一些调整,这个过程也让我学到了很多东西。
lean
https://github.com/coolsnowwolf/ ... lows/openwrt-ci.yml
p3terx
https://github.com/P3TERX/Action ... s/build-openwrt.yml
我基本算是合二为一。在lean上,实现的p3terx的github-actions上我需要的功能。
https://github.com/shake/lede/blob/master/.github/workflows/openwrt-ci.yml
其实也就是因为有github action的功能,我可以一步一步的测试,非常方便。
一:触发
改成通过star 来触发,这样其实也方便我自己调试。我修改代码,其实也是web,没使用git 工具,有时候需要同时修改几个文件,那么通过star来控制编译,比较可控。
二:环境变量
加入环境变量,让openwrt-ci.yml维护容易。
三:ssh功能
可以ssh到github actions的编译环境,默认是关闭,你可以通过上面的环境变量,实现修改。这样方便很多。
你可以通过ssh功能,查询到自己希望编译固件的cpu的型号写法,放到openwrt-ci.yml
四:修改默认ip地址
Openwrt默认的ip地址:192.168.1.1,你编译代码前,是可以把地址修改了。不过更加优雅的方式是使用脚本,来修改默认的ip 地址。同时这个脚本不仅仅可以修改ip地址。
后续开始编译前的定制化,都是可以通过这个脚本进行。
目前把把需要整合外面的app的下载,是放到这个脚本进行,这样让让openwrt-ci.yml,更加容易维护。
五:cpu和包的定制
lean的代码,默认是编译x86,如果选择x86,就会有大量的包编译进去,如果是非x86,那么就需要你选择。
我在openwrt-ci.yml 加入的极路由的cpu的地址。删除一些我认为没用的app。
六:打包配置文件
编译是使用 .config 文件进行编译,把这个config文件,打包到压缩包里,这样你可以方便查看。
notepad++删除注释行和空白行
https://blog.csdn.net/xiaoxiaojavacsdn/article/details/80190280
1,删除配置文件的注释行,假设以#号开头
正则匹配 ^#.*
2,删除空白行
非常实用的功能。
七:关闭ipv6
我就是通过查看config文件,搞定关闭ipv6的参数。
八:目录
p3terx,他是通过git 代码回来,创建了openwrt目录,而 lean是上传当前代码去编译。是lede目录下,
所以我们进行 make menuconfig
是不需要进入openwrt目录的。这个需要理解他们的差异。
九:file大法
其实这是 p3terx提到,在根目录建立一个file的目录,需要就copy就可以。
lede上的openwrt-ci.yml,默认是没带任何编译的包的。默认就是x86,系统默认。
你可以修改openwrt-ci.yml,或者在根目录放一个.config 文件,例如我有一个极路由的配置文件,一个树莓派的配置文件,只需要copy一下,就可以解决这个问题。
这个其实没验证,已经看到别人这样实践的例子,和我理解完全一样。
理解
对于x86的软路由,那么基本什么都不用做,默认的编译出来就可以直接使用,无非就是增加一个插件,删除一个插件而已。对于非x86的架构,那么下面的方法基本都是通用,你就只需要确认你的cpu,剩下的操作都是一样的。
我的过程很简单,直接fork过来,稍微编辑一下ci的文件,
on:
push:
branches:
- master
其实就是把前面 branch 和master的注释去掉就可以。确保第一次运行,完全没问题。确保格式对齐,完全一样。
运行action,这是没问题的。那个固件也出来,200多m,不过这个固件到底是啥呢?
默认lean的lede的固件,cpu是x86,里面的各种功能,默认是如果是x86平台,就默认就编译进去,如果不是x86平台,你就会发现少很多东西。需要自己手工指定。
对我来说,先指定cpu,就是极路由3的cpu
极路由4(HC5962)、极路由3(HC5861)、极路由2(HC5761)、极路由1s(HC5661/HC5661A)
你还需要知道厂商:MediaTek MT7620A。如何找到自己路由器的cpu写法,进行编译,我后续会补上,例如树莓派是啥情况。
# 编译极路由3固件:
cat >> .config <<EOF
CONFIG_TARGET_ramips=y
CONFIG_TARGET_ramips_mt7620=y
CONFIG_TARGET_ramips_mt7620_DEVICE_hiwifi_hc5861=y
EOF
有这个,就会取代默认的x86编译。
1个多小时,你就可以看到一个极路由3的固件,只有4m。下载,刷入极路由3,配置,一切都比较顺利。
后续其实想做的事情,很多,可以一步一步修改ci脚本,
1: 实现ssh到github action上,运行 manual config,查看cpu的配置情况
2:启用lede代码里的组件,需要enable 进去进行编译。
3:把不在lede代码的第三方插件,放进去,进行编译。
一:fork https://github.com/coolsnowwolf/lede
当然你肯定是需要一个github的账号。
二:修改ci文件
lede/blob/master/.github/workflows/openwrt-ci.yml
其实就是修改这个文件。找到了极路由cpu的编译选型,就基本没啥障碍
我的文件
https://github.com/shake/lede/blob/master/.github/workflows/openwrt-ci.yml
上面就是我代码,理论上你更换这个文件,提交,action就会开始工作,等两个小时就会有固件。我也要明天早上才能拿到固件,刷一下,再给大家汇报。
逐步修改主题,增加trojan的支持。
请不要胡乱输入以及粘贴、复制等方式灌水
请尊重作者、并共同维护网站的正常阅读,否则账户将会被限制发帖、回帖,并且积分可能会被清零,站内短信以及阅读权限等都会受到影响,谢谢。
具体限制方式:https://www.right.com.cn/forum/thread-8307840-1-1.html
|