forum.gl-inet.cn

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
    查看: 26523|回复: 101

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

      [复制链接]

    76

    主题

    2144

    帖子

    9869

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    9869

    官方人员

    发表于 2023-4-20 14:24:28 | 显示全部楼层 |阅读模式
    项目地址: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. 版本控制不方便,用户很难基于既定的官方固件版本做修改




    安装编译环境
    1. sudo apt update
    2. 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
    复制代码

    克隆项目到本地
    1. git clone https://github.com/gl-inet/glbuilder
    2. cd glbuilder
    复制代码

    编译支持GL UI的固件(基础配置)
    1. 进入menuconfig界面进行配置
    1. make menuconfig
    复制代码
    2. 在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. 以上配置完成后,暂不关注其他的配置选项,保存退出后执行
    1. make
    复制代码
    9. 等待编译完成后,编译好的镜像会在当前目录的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. 保存配置并退出,执行
    1. make
    复制代码
    5. 编译好的镜像位置与基础配置中的镜像位置一样


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


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

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

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

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

    15. make menuconfig #进入配置菜单
    16. make clean #删除构建目录及临时文件
    17. make distclean #删除构建目录及临时文件,删除生成好的镜像文件和所有构建工具
    复制代码

    添加自己的文件:
    在项目根目录建立files目录,放入自己的文件,例如
    1. mkdir -p files/etc/config
    2. echo "test my files" >files/etc/config/test_config
    复制代码
    这样编译出来的固件就可以在文件系统中的/etc/config/目录下看到test_config文件了



    固件效果:



    常见问题解决:1. 文件冲突问题,例如
    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
    2.         But that file is already provided by package  * libnl-tiny2022-05-17
    复制代码
    这种错误表示选择的包或依赖的包有冲突,可以在 Customer build-in packages 选项中使用'-'符号移除冲突包中的一个,上面的例子中,可以-libnl-tiny1或-libnl-tiny2022-05-17


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

    7

    主题

    518

    帖子

    1383

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    1383
    QQ
    发表于 2023-4-20 14:38:58 来自手机 | 显示全部楼层
    顶一个,方便不少
    回复

    使用道具 举报

    1

    主题

    55

    帖子

    447

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    447
    发表于 2023-4-20 14:58:57 | 显示全部楼层
    谢谢大佬,期待更多固件
    回复

    使用道具 举报

    10

    主题

    188

    帖子

    1448

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    1448
    发表于 2023-4-20 15:21:47 来自手机 | 显示全部楼层
    imagebuilder和sdk有什么区别
    回复

    使用道具 举报

    76

    主题

    2144

    帖子

    9869

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    9869

    官方人员

     楼主| 发表于 2023-4-20 16:16:28 | 显示全部楼层
    7918 发表于 2023-4-20 15:21
    imagebuilder和sdk有什么区别

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

    使用道具 举报

    17

    主题

    374

    帖子

    2362

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    2362
    发表于 2023-4-20 16:58:07 | 显示全部楼层
    支持一下!
    回复

    使用道具 举报

    0

    主题

    4

    帖子

    1606

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    1606
    发表于 2023-4-20 21:38:55 | 显示全部楼层
    谢谢萝卜大佬
    回复

    使用道具 举报

    5

    主题

    110

    帖子

    559

    积分

    高级会员

    Rank: 4

    积分
    559
    发表于 2023-4-20 22:39:39 | 显示全部楼层
    这个的确方便了很多
    回复

    使用道具 举报

    6

    主题

    72

    帖子

    662

    积分

    高级会员

    Rank: 4

    积分
    662
    发表于 2023-4-21 10:51:25 | 显示全部楼层
    感觉很牛的样子
    回复

    使用道具 举报

    2

    主题

    171

    帖子

    978

    积分

    高级会员

    Rank: 4

    积分
    978
    发表于 2023-4-21 15:08:42 来自手机 | 显示全部楼层
    这回是真方便了,马上试试
    回复

    使用道具 举报

    6

    主题

    33

    帖子

    420

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    420
    发表于 2023-4-21 18:52:31 | 显示全部楼层
    我看看有没有x86的编译方案
    回复

    使用道具 举报

    76

    主题

    2144

    帖子

    9869

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    9869

    官方人员

     楼主| 发表于 2023-4-21 19:17:20 | 显示全部楼层
    yanling 发表于 2023-4-21 18:52
    我看看有没有x86的编译方案

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

    使用道具 举报

    6

    主题

    69

    帖子

    847

    积分

    高级会员

    Rank: 4

    积分
    847
    发表于 2023-4-21 19:59:37 | 显示全部楼层
    MT1300 机型被抛弃了?
    回复

    使用道具 举报

    76

    主题

    2144

    帖子

    9869

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    9869

    官方人员

     楼主| 发表于 2023-4-21 21:18:30 | 显示全部楼层
    nyin 发表于 2023-4-21 19:59
    MT1300 机型被抛弃了?

    很快会支持
    回复

    使用道具 举报

    6

    主题

    33

    帖子

    420

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    420
    发表于 2023-4-21 21:21:30 | 显示全部楼层
    sft1200用户觉得上当了
    回复

    使用道具 举报

    6

    主题

    33

    帖子

    420

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    420
    发表于 2023-4-21 21:39:13 | 显示全部楼层
    萝卜大侠 发表于 2023-4-21 19:17
    你的啥主机,正好想适配一个

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

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

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

    使用道具 举报

    1

    主题

    8

    帖子

    424

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    424
    发表于 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: *** [Makefile:36: menuconfig] Error 1
    niepl1@ubuntu:~/glbuilder$

    最后一步失败了
    回复

    使用道具 举报

    2

    主题

    171

    帖子

    978

    积分

    高级会员

    Rank: 4

    积分
    978
    发表于 2023-4-21 22:11:36 来自手机 | 显示全部楼层
    萝卜大侠 发表于 2023-4-21 19:17
    你的啥主机,正好想适配一个

    j4125,,,
    回复

    使用道具 举报

    2

    主题

    171

    帖子

    978

    积分

    高级会员

    Rank: 4

    积分
    978
    发表于 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 ...

    把窗口调大
    回复

    使用道具 举报

    76

    主题

    2144

    帖子

    9869

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    9869

    官方人员

     楼主| 发表于 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 ...

    看提示,你的显示窗口太小了
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|gl-inet.cn ( 粤ICP备18130956号 )

    GMT+8, 2024-12-4 01:46 , Processed in 0.027371 second(s), 26 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表