forum.gl-inet.cn

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
    查看: 221|回复: 1

    [经验分享] MT6000 OpenWRT 24.10编译教程

    [复制链接]

    3

    主题

    4

    帖子

    30

    积分

    新手上路

    Rank: 1

    积分
    30
     楼主| 发表于 前天 11:19 | 显示全部楼层 |阅读模式
    本帖最后由 wi11iamZ 于 2025-10-20 12:15 编辑

    前言
    GLiNet MT-6000是非常适合“折腾”的家用路由器,配备了8GB NAND FLASH以及1GB RAM,并且自带uboot。
    相比之下相近价位的家用无线路由器大多只有128或256MB FLASH和512MB RAM略显局促,且需要通过较复杂的方式才能刷入uboot。
    本文介绍本地自行编译OpenWRT 24.10的流程。


    环境
    硬件:AMD Ryzen9 7950X+32GB内存+980PRO SSD
    系统:Windows 11 25H2


    准备工作
    如果你不打算单独安装一个Linux发行版系统的话,首先需要启用WSL2
    再Windows 10或11上启用WSL2的方法请参考微软的官方网站:
    https://learn.microsoft.com/zh-cn/windows/wsl/install
    要为WSL添加额外的发行版,可以通过Windows Store,这里实际使用的是debian12。
    另外由于编译过程需要从外网下载源代码和库,建议采取一些加速访问外网的措施或者避免晚高峰时段。


    编译过程
    安装依赖项
    首先打开Powershell,然后执行:
    1. debian
    复制代码
    进入WSL的debian系统开始安装编译所需的库和工具,执行:
    1. sudo bash -c 'bash <(curl -s https://build-scripts.immortalwrt.org/init_build_environment.sh)'
    复制代码


    获取源码
    编译OpenWRT首先需要获取其源码,这里选择的是分支版本ImmortalWRT,其在原版OpenWRT的基础上增加了一些国内环境使用需要的package(用户也可以在原版的基础上自行添加),并且和原版基本保持同步跟新。
    目前OpenWRT最新的稳定版分支是24.10,选择最新稳定分支的原因是其组件版本较新,而不使用主线分支则是因为其迭代、变动较快,稳定性未经过足够的验证。
    首先从github上clone源码:
    1. git clone -b openwrt-24.10 --single-branch --filter=blob:none https://github.com/immortalwrt/immortalwrt
    复制代码
    如果你希望编译原版:
    1. git clone -b openwrt-24.10 --single-branch --filter=blob:none https://github.com/openwrt/openwrt/
    复制代码
    另一个选择是:https://github.com/padavanonly/immortalwrt-mt798x-6.6
    这个版本引入了mtk-openwrt-feeds(https://git01.mediatek.com/plugi ... /mtk-openwrt-feeds/)提供的闭源驱动,支持所有硬件加速特性,但是代码不完全同步存在滞后。当然如果你有能力和精力也可以尝试自己将mtk-openwrt-feeds引入immortalwrt。
    目前暂时不清楚OpenWRT的开源驱动和MTK的闭源驱动之间的性能差异。
    完成后切换目录:
    1. cd immortalwrt
    复制代码
    列出当前tag:
    1. git tag
    复制代码
    结果为:
    1. v24.10.0
    2. ……
    3. v24.10.2
    4. v24.10.3
    复制代码

    然后切换到最新的tag:
    1. git checkout v24.10.3
    复制代码

    当然你也可以不指定tag,而是每次编译时使用当前分支的最新代码,但是一些未经足够验证的上游变动可能会引起问题。

    调整package(可选)
    接下来对package进行一些调整,首先修改feeds.conf.default,增加一行:
    1. src-git helloworld https://github.com/f***6/hello*****.git^546829994219840e4e1eebd94696c7e1101d8a9f
    复制代码
    (指定具体版本是因为当前最新的版本和fw4存在冲突)
    当然如果你选择用其它方案,可以忽略。
    如果你不喜欢用Linux的vi/vim编辑文件,在WSL中可以执行explorer.exe .直接在Windows的文件管理器中打开WSL系统的目录然后修改。
    然后下载feed中的package:
    1. ./scripts/feeds update -a -f
    2. ./scripts/feeds install -a -f
    复制代码

    个人比较喜欢用mosdns,支持通过加密的DoT和DoH请求上游DNS(在国内很有用)、DNS分流以及在出现故障时回落,手动添加一下:
    1. git clone https://github.com/sbwml/luci-app-mosdns -b v5 package/mosdns
    复制代码

    由于24.10的部分package比较旧,个人的方案是clone一份主线分支的package,然后复制过去:
    1. cd ..
    2. git clone https://github.com/immortalwrt/packages
    复制代码

    另外feeds/packages/devel/gn/的当前版本([color=rgb(89, 99, 110) !important]Git HEAD (2025-09-18))有问题无法编译通过,需要手动修改makefile文件回退到上一个版本。

    设置编译菜单
    调整完毕后编译菜单:
    1. make menuconfig
    复制代码
    执行完成后会显示openwrt的编译菜单。
    首先需要选择一下目标系统和设备,光变选中Target System然后按回车,向上找到MediaTek ARM然后按回车选中。
    之后在Subtarget里选中Filogic 8x0 (MT798x),按回车选中
    然后在Target Profile中向下找到GL.iNet GL-MT6000按回车选中。
    最后到LUCI->Applications中选择需要的app。
    完成设置后,选择SAVE,将编译配置保存为.config
    如果需要重新配置,可以删除已有配置并重新编译菜单:
    1. rm -rf .config
    2. make menuconfig
    复制代码
    也可以将.config文件改名,然后在执行上述命令后在菜单中load旧配置并调整。
    未来编译时如果不需要调整配置则可以直接执行:
    1. make defconfig
    复制代码


    开始编译
    首先下载所需的lib:
    1. make download -j8
    复制代码
    这个过程如果没有加速网络可能会比较慢。
    然后开始编译,第一次先使用多线程:
    1. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make V=s -j$(nproc)
    复制代码
    如果没有使用WSL而是直接在Linux系统中运行不需要加上前面的PATH=……
    通常第一次编译时直接使用多线程一定会失败(暂时不知道为什么,似乎所有大型项目都这样……),而且多线程编译时往往无法输出有效的错误信息,等到报错后再切换成单线程编译:
    1. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make V=s -j1
    复制代码
    不在一开始使用单线程编译的原因是全程使用单线程速度会非常慢。
    如果不出意外的话这一次编译会直接通过,打开\immortalwrt_mt\bin\targets\mediatek\filogic可以看到编译出来的文件。

    安装系统
    虽然GLiNet MT-6000自带的系统也基于OpenWRT,理论上可以直接在系统中升级,但是为了避免跨版本升级出现问题,建议还是使用uboot刷入。
    GLiNet MT-6000自带uboot,不需要像其它厂商的路由器那样费劲地用TFTP甚至拆机后使用调试器/编程器“硬”刷入。
    首先在自带的系统中备份当前配置,并且在https://dl.gl-inet.com/router/mt6000/下载一份当前版本的固件备用。
    之后进入uboot,关闭路由器的电源,然后按住路由器的rest键的同时接通电源,观察路由器正面的LED灯光,等到其变成白色且不再闪烁时说明已经成功启动到了uboot,松开rest键。
    由于uboot没有dhcp,此时需要将任意lan口通过网线连接到pc,并将pc的网络地址设置为静态,手动分配为192.168.1.2,网关192.168.1.1,默认DNS为192.168.1.1。
    然后在浏览器中打开192.168.1.1即可进入uboot,选择编译出的镜像上传并刷入。
    建议选择sysupgrade.bin而不是factory.bin,后者会覆盖掉uboot,未来一旦刷机失败只能拆开路由器使用调试器或编程器“救砖”,而前者不会影响uboot。
    只要uboot仍然存在,即使出现问题也可以通过uboot重新刷入。
    刷写完毕后重启路由器,并且将pc的网络接口恢复为使用dhcp获取ip。
    由于编译时选择了正确的设备型号,系统启动后会正确配置默认网卡,打开默认的路由器地址192.168.1.1即可访问luci网页版后台(可能提示证书错误,忽略即可),
    默认的用户名是root,密码为空。

    回复

    使用道具 举报

    50

    主题

    335

    帖子

    5717

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    5717
    发表于 前天 11:31 | 显示全部楼层
    好一篇帖子!

    很多东西可以学习。(慢慢看,然后想想怎样实现)
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-10-22 13:33 , Processed in 0.022198 second(s), 23 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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