GL-iNet SF1200 官方SDK编译固件教程

我的编译环境系统版本: Ubuntu 18.04.05 LTS
1.安装必要工具:

sudo apt install binutils bzip2 diffutils flex gawk gcc-6+ grep libc6-dev make perl python3.6+ rsync subversion unzip libncurses5-dev zlib1g-dev gawk gcc-multilib g++-multilib flex git gettext libssl-dev ocaml sharutils re2c -y

需要保证python在3.6版本及以上,Ubuntu 18的python默认就是3.6应该没问题的

2.拉取源码:

git clone https://github.com/gl-inet/gl-infra-builder.git

cd gl-infra-builder

python3 setup.py -c config-siflower-18.x.yml

↑↑↑这个步骤是拉取siflower的源码,但是指定了版本,我看11天前siflower的官方还更新了一些网络驱动方面的内容,所以我选择进到siflower的文件夹再更新一下

cd openwrt-18.06/siflower/

git pull

3.生成编译配置文件

cd openwrt-18.06

./scripts/gen_config.py target_siflower_gl-sf1200

这里可能有些朋友会有点迷惑怎么进入了重复的文件夹名,实际上是这样的

gl-infra-builder下有不同版本openwrt的文件夹,因为不同的产品所用的sdk是不一样的,其中就有openwrt-18.06版本,然后这个版本下只有siflower一家在用,所以里面是一个siflower的源码文件夹,这个文件夹里又有siflower自己的一个openwrt-18.06文件夹,总的结构就是gl-infra-builder/openwrt-18.06/siflower/openwrt-18.06到这里才是实际的sdk文件夹,之后的路径我就默认从这里开始算

4.添加插件

在sdk文件夹(也就是gl-infra-builder/openwrt-18.06/siflower/openwrt-18.06)下的package文件夹里,新建一个文件夹,因为用的都是lean大佬的源码,就起名为lean,然后把要添加的插件文件夹都扔进去,如图

lean.png

基本上就是helloworld里面的所有吧,以及一些我自己用到的内网穿透用的frp和ngrokc

添加好后不要急,还有一些用到的依赖的版本我会更新一下,这一步里有些是必要的,有些是可选的,我个人比较喜欢追新版,所以有些还是会更新到最新

5.更新及修改依赖

先说必要的吧,因为有些插件是用go写的,出来的二进制文件很大,于是最后都是要upx压缩一下的,但是sdk里本身没有upx,所以这个工具的添加就是必要的,不然编译会报错(不报错出来的文件也放不下)

增加tools.png

这一步是在tools文件夹进行的,要把lean源码的tools文件夹里的ucl,upx和ninja文件夹复制过去,然后修改一下Makefile

增加这样几句

tools-y += ucl upx ninja

$(curdir)/upx/compile := $(curdir)/ucl/compile

$(curdir)/cmake/compile += $(curdir)/libressl/compile $(curdir)/ninja/compile

以及

ifneq ($(CONFIG_CCACHE)$(CONFIG_SDK),)

$(foreach tool, $(filter-out xz patch ,$(tools-y)), $(eval $(curdir)/$(tool)/compile += $(curdir)/ccache/compile))

tools-y += ccache

endif

改为

ifneq ($(CONFIG_CCACHE)$(CONFIG_SDK),)

$(foreach tool, $(filter-out xz patch ninja,$(tools-y)), $(eval $(curdir)/$(tool)/compile += $(curdir)/ccache/compile))

tools-y += ccache

endif

这样就会在编译的时候把这些工具也编译出来了

下来还有一处需要自己改一下的,因为添加的插件(如果你添加的跟我一样)和已有的插件会形成一个循环依赖

循环依赖.png

鉴于这种情况,我们直接从lean的feeds/packages/net/sqm-scripts文件夹里把Makefile复制过来覆盖这边的Makefile就行了

实际上到这个时候应该就可以正常编译了,但是我还替换了几个依赖的版本

源码替换.png不替换也行,编译都是可以通过的
6.make menuconfig
这一步是为了选中之前添加的那些插件
make menuconfig.png
这个根据自己的需求来选择,但是有些为了避免冲突需要手动取消,或者有些得手动添加上
base页面里的dnsmasq和dnsmasq-full就可能有config file的冲突,取消选中dnsmasq只选中dnsmasq-full
取消选中dnsmasq.png
然后luci页面里luci是需要手动选中的
选中luci.png
要想固件最后是中文的,要在luci的modules分页里的translations里选中zh-cn
luci本地化.png
下来就是applications分页里选中需要的插件了
最后保存配置,make -j1 V=s,如果网络环境允许顺利下载国外的源码的话,甚至可以make -j4(这个数字看你的cpu有几个核,我的是四个就是-j4)不要输出信息就编译出来结果了
编译出来的固件可以直接在官方固件里升级,升级后有些设置也要讲一下:
1.led需要自己添加
OpenWrt - LED 配置 - LuCI.png
2.防火墙自定义规则(这个是参照lean的固件设置的)
OpenWrt - 自定义规则 - LuCI.png


最后再说一下使用方面的感受,优缺点
先说好的,
1.GL-iNet官方固件是简洁美观的,且同时可以启用luci装插件,虽然留出的空间只有3M左右
2.官方开源SDK,siflower矽昌的文档十分值得一看https://siflower.github.io/categories/
3.不需要破解,直接开ssh,直接升级固件
4.刷砖了官方的u-boot就可以web救砖,长按reset上电,手动设置192.168.1.2访问192.168.1.1
5.性能中规中矩,价格也不算很贵
比如openssl 1.1.1k的aes-256-gcm测速,openssl speed -evp aes-256-gcm
MT7621的成绩是
The 'numbers' are in 1000s of bytes per second processed.
type                   16 bytes         64 bytes         256 bytes         1024 bytes         8192 bytes         16384 bytes
aes-256-gcm       5090.00k        5740.10k        5959.36k          6002.82k           6020.17k            6040.23k

sf16a18的成绩是
The 'numbers' are in 1000s of bytes per second processed.
type                   16 bytes         64 bytes         256 bytes         1024 bytes         8192 bytes         16384 bytes
aes-256-gcm          4452.13k          4980.05k           5136.64k             5163.01k              5197.40k                5183.70k

单核大概有10%的差距,作为国产芯片我觉得挺好的了


下来是问题:
1.第一台买回来的时候系统版本是3.202,安装luci的时候会有某个ipk下载失败造成的安装失败,后来查明是网络原因,现在应该已经修复了
2.在3.202和新的3.203固件都遇到过装了luci但是不知道什么时候突然就打不开luci了,后来查明是rpcd进程没有启动,得手动/etc/init.d/rpcd start,目前原因还不清楚
3.刷了openwrt后,无线不显示连接速率,不显示信号强度
4.sdk里还有些不完善的部分,更新频率也比较低了


总的来说我认为如果按照刚开始有优惠活动的时候99买来的话,是很值得的,虽然论坛里人均十来个路由器一堆矿渣,其中不乏硬件好固件多的产品,但是那些毕竟是特殊的时代产物,不然家用路由器的市场应该也不是这样了。支持一下国产芯片,学习一下固件编译,看看开源的成熟的文档,都是很好的事情,使用起来也还是能满足一般的家用需求,也能自己加入插件实现特殊的功能,当然你要非说比不上谁谁谁不如买谁谁谁那是一定有性价比更高的产品的,这就仁者见仁了


本文章由作者:佐须之男 整理编辑,原文地址: GL-iNet SF1200 官方SDK编译固件教程
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐