萝卜大侠 发表于 2023-4-20 14:24:28

glbuilder固件构建框架(GL UI, 极速定制,小白友好,开发者适用)

项目地址:https://github.com/gl-inet/glbuilder ,此项目欢迎用户pull请求
以下内容基于Ubuntu 20.4测试编写,遇到任何问题请直接回帖反馈
简介:
之前在这个帖子教大家怎样基于gl-infra-builder编译出带GL-UI界面的固件,由于一些条件限制,很多问题无法解决,因此,我又构建了glbuilder项目来解决以下问题
1. 由于驱动部分使用到很多芯片厂商维护的驱动代码,以ko形式提供给大家的驱动代码极不稳定,甚至造成系统崩溃。
2. 编译速度慢,打包一个固件可能需要几个小时,glbuilder打包固件最快5分钟
3. 无图形配置界面,glbuilder项目添加了menuconfig图形配置界面,还可方便定制各种版本信息
4. 不支持ipk文件直接集成,glbuilder项目同时支持ipk文件和源码文件的混合集成
5. 版本控制不方便,用户很难基于既定的官方固件版本做修改



安装编译环境
sudo apt update
sudo apt install device-tree-compiler g++ ncurses-dev python asciidoc bash bc binutils bzip2 fastjar flex gawk gcc genisoimage gettext git intltool jikespg libgtk2.0-dev libncurses5-dev libssl-dev make mercurial patch perl-modules python2.7-dev rsync ruby sdcc subversion unzip util-linux wget xsltproc zlib1g-dev zlib1g-dev -y

克隆项目到本地git clone https://github.com/gl-inet/glbuilder
cd glbuilder
编译支持GL UI的固件(基础配置)
1. 进入menuconfig界面进行配置
make menuconfig2. 在Select GL.iNet router model选项中选择路由器型号。
3. 在Select version for mt3000选项中选择基于官方固件的版本做后续修改。
4. Select mt3000 version 4.2.2 build-in packages选项中可以选择glinet的内置包,新手建议保持默认,不做修改。
5. Select feeds for SDK of mt3000 4.2.2选项可以使能SDK的feeds,禁用无需使用feeds可以加快源码编译的速度,新手建议保持默认,不做修改。
6. Select the download source location选项可以选择imagebuilder和SDK镜像的下载源,大陆用户强烈建议选择China Aliyun
7. 在Configure customer version information下面可以配置自己的版本号,版本类型,releasenotes等版本相关内容,可以自己根据实际情况修改
8. 以上配置完成后,暂不关注其他的配置选项,保存退出后执行
make9. 等待编译完成后,编译好的镜像会在当前目录的bin/<model>/<version>/target目录下


加入自己的IPK
1. 如果是openwrt通用的ipk,glbuilder将自动从imagebuilder或gl的软件仓库自动查找安装,如果是非常见的ipk请将自己的ipk文件放置在项目根目录的customer/ipk/目录下
2. 根据自己的需求完成基础配置步骤中的内容(不需要执行最后的make)
3. 在Customer build-in packages选项中加入IPK的名字,如luci-app-aria2; 如果要移除某个包可以在前面加上'-'符号,如-dnsmasq代表不需要安装dnsmasq。在项目board/<model>/<version>/version_info.mk中,有通过gl_collision_package预置一些移除的包,原因是这些包与glinet的预置包冲突,如果有必要,可以编辑修改对应的gl_collision_package变量。
4. 保存配置并退出,执行
make5. 编译好的镜像位置与基础配置中的镜像位置一样


加入自己的源码文件
1. 将自己的源码文件克隆到项目根目录的customer/source目录下
2. 根据自己的需求完成[基础配置](#编译支持gl-ui的固件基础配置)(不需要执行最后的make)
3. 在Select customer package目录下选择自己需要编译到固件的包,此目录下的目录展开基于源码中的各个Makefile,与openwrt官方源码的展开方式一致。
4. 保存配置并退出,执行
make5. 编译好的ipk文件在当前目录的bin/<model>/<version>/package目录下
6. 编译好的镜像位置与基础配置中的镜像位置一样


小技巧
1. 源码和IPK形式的编译可以相互组合
2. Customer build-in packages 选项中使用'-'符号移除的包可能被其他依赖重新选择,需要把对应的依赖包同时移除
3. 出现问题时可以分步调试,目前常用的子命令有:

make sdk/download#下载SDK镜像
make sdk/prepare #将SDK镜像解压并配置一些基础文件
make sdk/feeds/update #更新SDK的feeds
make sdk/compile #使用SDK编译源码形式的包
make sdk/install #将编译好的ipk拷贝到bin目录
make sdk/package/index #给编译好的ipk生成索引
make sdk/clean #清除所有SDK相关的编译环境

make customer/source/<path>/compile #编译customer/source/目录下的单个包
make customer/source/<path>/clean #清除customer/source/目录下指定包的编译环境及IPK文件
make customer/ipk/index #为cuntomer/ipk目录下的IPK文件生成索引

make imagebuilder/download #下载imagebuilder镜像
make imagebuilder/prepare #将imagebuilder镜像解压并配置一些基础文件
make imagebuilder/compile #打包固件
make imagebuilder/clean: #清除所有imagebuilder相关的编译环境

make menuconfig #进入配置菜单
make clean #删除构建目录及临时文件
make distclean #删除构建目录及临时文件,删除生成好的镜像文件和所有构建工具
添加自己的文件:
在项目根目录建立files目录,放入自己的文件,例如
mkdir -p files/etc/config
echo "test my files" >files/etc/config/test_config这样编译出来的固件就可以在文件系统中的/etc/config/目录下看到test_config文件了



固件效果:



常见问题解决:1. 文件冲突问题,例如
check_data_file_clashes: Package libnl-tiny1 wants to install file /home/etek/glbuilder/build_dir/imagebuilder-ax1800-4.2.1/build_dir/target-arm_cortex-a7_musl_eabi/root-ipq807x/usr/lib/libnl-tiny.so
      But that file is already provided by package* libnl-tiny2022-05-17这种错误表示选择的包或依赖的包有冲突,可以在 Customer build-in packages 选项中使用'-'符号移除冲突包中的一个,上面的例子中,可以-libnl-tiny1或-libnl-tiny2022-05-17


小赵先生 发表于 2023-4-20 14:38:58

顶一个,方便不少

guo1235567 发表于 2023-4-20 14:58:57

{:6_208:} 谢谢大佬,期待更多固件

7918 发表于 2023-4-20 15:21:47

imagebuilder和sdk有什么区别

萝卜大侠 发表于 2023-4-20 16:16:28

7918 发表于 2023-4-20 15:21
imagebuilder和sdk有什么区别

imagebuilder只有固件打包的功能。
SDK 可以源码编译。
glbuilder项目是俩者的结合

不望月的狼人 发表于 2023-4-20 16:58:07

支持一下!

navcore 发表于 2023-4-20 21:38:55

谢谢萝卜大佬

iBelieve 发表于 2023-4-20 22:39:39

这个的确方便了很多{:6_202:}

giano 发表于 2023-4-21 10:51:25

感觉很牛的样子

tiancaiV 发表于 2023-4-21 15:08:42

这回是真方便了,马上试试

yanling 发表于 2023-4-21 18:52:31

我看看有没有x86的编译方案

萝卜大侠 发表于 2023-4-21 19:17:20

yanling 发表于 2023-4-21 18:52
我看看有没有x86的编译方案

你的啥主机,正好想适配一个

nyin 发表于 2023-4-21 19:59:37

MT1300 机型被抛弃了?

萝卜大侠 发表于 2023-4-21 21:18:30

nyin 发表于 2023-4-21 19:59
MT1300 机型被抛弃了?

很快会支持

yanling 发表于 2023-4-21 21:21:30

sft1200用户觉得上当了
https://pic1.imgdb.cn/item/64428dc30d2dde5777ca937e.jpg

yanling 发表于 2023-4-21 21:39:13

萝卜大侠 发表于 2023-4-21 19:17
你的啥主机,正好想适配一个

我的买的你家路由器是sft1200.

我自己在闲鱼上攒机搞得x86机器是 梅捷N3160 thin。英特尔的CPU 。

主芯片组:Braswell ,CPU类型:N3160 ,4核4线程。

bccubccubccu 发表于 2023-4-21 21:43:40

niepl1@ubuntu:~$ cd glbuilder
niepl1@ubuntu:~/glbuilder$ make menuconfig
mkdir -p /home/niepl1/glbuilder/tmp
/home/niepl1/glbuilder/scripts/scanboarddir.sh /home/niepl1/glbuilder/board
mkdir -p /home/niepl1/glbuilder/tmp/customer.tmp/info
rm -rf /home/niepl1/glbuilder/tmp/customer.tmp/info/.* 2>/dev/null || true
make -s -f /home/niepl1/glbuilder/include/scan.mk IS_TTY=1 SCAN_TARGET="packageinfo" SCAN_DIR=/home/niepl1/glbuilder/customer/source SCAN_NAME="package" \
SCAN_DEPTH=5 SCAN_EXTRA="" TMP_DIR=/home/niepl1/glbuilder/tmp/customer.tmp INCLUDE_DIR=/home/niepl1/glbuilder/include
Collecting package info: done
/home/niepl1/glbuilder/scripts/package-metadata.pl config /home/niepl1/glbuilder/tmp/customer.tmp/.packageinfo > tmp/.customer-package.in
/home/niepl1/glbuilder/scripts/package-metadata.pl mk /home/niepl1/glbuilder/tmp/customer.tmp/.packageinfo 2>/dev/null >> /home/niepl1/glbuilder/tmp/.configdeps
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.
scripts/config/mconf ./Config.in
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.
make: *** Error 1
niepl1@ubuntu:~/glbuilder$

最后一步失败了

tiancaiV 发表于 2023-4-21 22:11:36

萝卜大侠 发表于 2023-4-21 19:17
你的啥主机,正好想适配一个

j4125,,,

tiancaiV 发表于 2023-4-21 23:45:03

bccubccubccu 发表于 2023-4-21 21:43
niepl1@ubuntu:~$ cd glbuilder
niepl1@ubuntu:~/glbuilder$ make menuconfig
mkdir -p /home/niepl1/glbui ...

把窗口调大

萝卜大侠 发表于 2023-4-22 00:03:57

bccubccubccu 发表于 2023-4-21 21:43
niepl1@ubuntu:~$ cd glbuilder
niepl1@ubuntu:~/glbuilder$ make menuconfig
mkdir -p /home/niepl1/glbui ...

看提示,你的显示窗口太小了
页: [1] 2 3 4 5 6
查看完整版本: glbuilder固件构建框架(GL UI, 极速定制,小白友好,开发者适用)