起因前段时间购买了一台小米AX3000T基于mt7981,主要是想用OpenWrt,翻了翻发现了H大的mt798x项目,
immortalwrt-mt798x基于immortalwrt项目,特点如下
- 基于immortalwrt 21.02分支,内核版本5.4,目前仅支持mt7981/mt7986
- 使用mtk-openwrt-feeds提供的有线驱动、hnat驱动、内核补丁及配置工具,支持所有硬件加速特性
- mt7981/mt7986均支持两个ppe,每个ppe有32k Entry(当有线驱动使用ADMAv1时,每个PPE最大支持16k Entry)
- 使用mtwifi原厂无线驱动(目前默认使用7.6.6.1版本),默认开启802.11k,支持warp在内的所有加速特性
- 新开发的mtwifi-cfg无线配置工具支持openwrt的原生luci界面以及netifd-wireless标准接口。除此以外,还支持mtk原厂提供的luci-app-mtk和wifi-profile
于是就开始着手编译起来了 顺便写写过程就当记录了。
我使用的是WSL2来做编译,其安装过程就不做过多赘述了,我本次使用的是Ubuntu22.04 非root账户,安装完后启动环境,首先是安装编译所需要的依赖,参考项目的README.md 使用APT或者脚本进行配置依赖
使用apt
1 | sudo apt update -y |
使用脚本
1 | sudo bash -c 'bash <(curl -s https://build-scripts.immortalwrt.eu.org/init_build_environment.sh)' |
注意 因为WSL2的一些特殊性可能需要设置一些环境变量 具体可以参考https://openwrt.org/docs/guide-developer/build-system/wsl
我下面将会直接使用临时方案
全部结束后开始拉取仓库
1 | git clone --depth=1 https://github.com/hanwckf/immortalwrt-mt798x.git |
然后CD切换到目录下
1 | cd immortalwrt-mt798x |
如果你需要一些自定义仓库如 bypass、helloword等相关内容 参考下面部分,
我所使用的个性化仓库是kenzok8大佬的仓库kenzok8/small: ssr passwall bypass依赖 (github.com)
使用一键命令
1 | sed -i '1i src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.default |
因为mt798x项目使用的immortalwrt版本过老,SS的一些依赖发生了变化会导致编译失败 所以需要修改部分内容
需要修改目录下 feeds/small/shadowsocksr-libev/Makefile 中的第29行将里面的+libopenssl-legacy 删除保存
完成后针对MT7981芯片使用
1 | cp -f defconfig/mt7981-ax3000.config .config |
来复制内置预设到目录下
使用
1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make menuconfig |
开始自定义固件,自定义结束后使用开始编译
1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make -j$(nproc) |
编译结束后的固件会出现在bin文件夹下找到正常刷入即可。
如果出现编译错误可以使用单线程
1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make -j1 V=s |
来一点点排错,网上相关的编译教程其实一大把,但是一些固件有一些自定义无法完全满足且有一些问题需要修改(比如mt798x项目用的immortalwrt过老导致ss不需要一些依赖但是makefile有存在这种)故写个东西记录下。