交叉编译OpenWRT系统及MentoHust插件进行锐捷认证

前言:关于OpenWRT编译的主流方法

关于本文

本文主打openwrt的编译过程,难度可能较高,但自定义化程度高,能学习到的东西更多

过两天我会更新一期刷固件的教程,更适合新手

关于编译openwrt

由于OpenWRT是基于linux开发的,所以开发及编译的过程都需要在linux的环境下进行

此外,以下所有方法都要在能够正常访问外网的情况下进行,所以,解决网络问题是一个关键。

  • 本地编译(不推荐)
    • Linux系统:现成的系统环境,只需要解决网络问题即可
    • Windows系统:通过WSL2的Linux子系统来搭建编译环境
    • MacOS系统:由于作者家境贫寒买不起Mac,请读者们自行百度
  • 云编译(推荐,更容易解决网络问题)
    • 海外服务器:在腾讯云或者阿里云租几个小时的按量付费或者竞价实例的香港或者其他的海外主机,物理翻墙,优点:性能更强编译更快,缺点:需要花钱,虽然只是一两块钱就够了
    • GitHubAction编译:通过GitHubAction提供的虚拟机来编译,用的是微软云,也是物理翻墙,优点:完全免费,缺点:CPU核数少性能不那么强,但也说得过去

这里我选择腾讯香港云,国内连接服务器较为稳定,又能够很好的解决网络问题

第一步:租用服务器并配置环境

1.1租用云服务器

这里我们以腾讯云为例,在 云产品 –> 云服务器 中,创建一个香港实例,具体流程可以看图自行意会,本部分过几天将会分离出来单独出一篇文章以保证本文的简洁。

image-20230301182325240

image-20230301182441217

image-20230301182743096

image-20230301182832153

image-20230301182948052

image-20230301183025179

image-20230301183049602

1.2 登录服务器

在服务器页面点击登录,之后就进到腾讯云提供的在线终端

image-20230301183155324

image-20230301183248858

1.3 配置环境

由于版本变化等因素,要用到的环境也有可能变化,如果环境有问题,请参考[OpenWrt Wiki] Build system setup

1
2
3
4
5
sudo apt update
sudo apt install build-essential clang flex bison g++ gawk gcc-multilib gettext \
git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev \
file wget

第二步:拉取代码

2.1 拉取代码

以下仓库各选其一克隆到服务器即可

官方仓库

1
git clone https://git.openwrt.org/openwrt/openwrt.git

github镜像仓库

1
git clone https://github.com/openwrt/openwrt

gitee镜像仓库

1
git clone https://gitee.com/xxez/openwrt.git

成功示例:

image-20230301183428894

2.2 依赖更新

进入到openwrt文件夹中

1
cd openwrt

依次执行以下语句

1
./scripts/feeds update -a
1
./scripts/feeds install -a

如果全部都是ok则代表一切正常

在这里,我遇到了一个问题,缺少了一个依赖,可以用类似下面的方法解决

1
sudo apt-get install libncurses5-dev

image-20230301184100349

2.3 加入一些我们想要用到的插件或者主题

mentohust插件

1
git clone https://github.com/KyleRicardo/MentoHUST-OpenWrt-ipk.git package/mentohust

argon主题

1
git clone https://github.com/jerrykuku/luci-theme-argon.git  

第三步:编译固件

3.1 找到我们路由器对应的cpu架构和具体型号

这是官方提供的参考:[[OpenWrt Wiki] Table of Hardware: Firmware downloads](https://openwrt.org/toh/views/toh_fwdownload?dataflt[0]=supported current rel_%3D22.03.2)

可以在里面搜索相应的路由器,这里我以AX6s为例

image-20230301185758285

3.2 配置

然后在openwrt文件夹中执行以下命令进入编译菜单

1
make menuconfig

ESC按两次可以返回上一级,回车可以选中当前行

3.3 在配置菜单中选择我们的目标平台

image-20230301185941446

image-20230301185953066

image-20230301190005152

image-20230301190657893

选好之后效果如图所示

image-20230301185930116

然后勾选SDK选项,因为我们这里是交叉编译

image-20230301190124274

3.4 配置插件和主题

3.4.1 libcap环境,是mentohust依赖

image-20230301190156886

image-20230301190312326

image-20230301190842632

3.4.2 argon主题

image-20230301190342700

image-20230301190928651

image-20230301190941994

3.4.3 Luci 即openwrt的ui界面

image-20230301191340229

image-20230301191401032

3.4.4 语言:中文

image-20230301191414947

image-20230301191436436

image-20230301191459273

3.4.5 MentoHust插件

image-20230301210514621

image-20230301210535341

image-20230301210547457

3.5 保存配置文件

一直按ESC退到最后,然后选择Yes按下回车键即可保存配置

image-20230301191810381

image-20230301211657609

3.6 开始编译

执行

1
make -j数字 -V=s

开始编译

其中-j后面的参数表示的是线程数,可以设成CPU核心数量或者内存的一般,一般是没问题的

如果出了问题,将数字改小,实在不放心,就用1个线程,如果还不行,请检查环境或者网络

这个过程可能要一两个小时或更久,以后每次编译的时间会缩短

编译成功后,如下图所示

image-20230301204740839

我们可以看到编译后的bin文件

image-20230301204817581

第四步:下载编译好的固件并刷入路由器

4.1 下载固件

在本机用scp命令将服务器上的固件下载下来,这里我直接下载整个targets文件夹

image-20230301205131413

4.2 刷入测试版固件

image-20230301214500068

image-20230301214545833

4.3 获取root密码

在这个网站中,输入sn码即可算出root密码:Xiaomi Router Developer Guide & Tools (miwifi.dev)

将root密码保存下来备用

4.4 Telnet开启ssh

image-20230301214758889

image-20230301214902418

成功连入后,执行下列命令打开ssh

1
2
3
4
5
nvram set ssh_en=1& nvram set uart_en=1 & nvram set boot_wait=on & nvram setbootdelay=3 & nvram set flag_try_sys1_failed=0 & nvram setflag_try_sys2_failed=1

nvram setflag_boot_rootfs=0 & nvram set "boot_fw1=run boot_rd_img;bootm"

nvram setflag_boot_success=1 & nvram commit & /etc/init.d/dropbear enable &/etc/init.d/dropbear start

4.5 上传固件并刷入openwrt临时固件

image-20230301215018490

image-20230301215057645

连接成功后如上图所示

将factory.bin文件拖入左侧的tmp文件夹中即可自动上传

image-20230301215208874

执行以下命令刷入临时固件factory.bin

1
mtd -r write /tmp/factory.bin firmware

蓝灯常量后,刷入成功

刷入成功后,ip地址会变为10.0.0.1

4.5 上传正式版固件

image-20230301205506571

image-20230301205539109

刷入成功后,ip地址会变为192.168.1.1

4.6 修改管理员密码

image-20230301205937869

第五步:锐捷认证并测试

4.1 帮助文档

mentohust -h命令查看帮助文档

image-20230301211537590

4.2 尝试认证

执行

1
mentohust -u账号 -p密码 -n网卡 -b0

在显示日志的情况下查看是否能够正常发送心跳包

如果正常,ctrl + c先结束进程

4.3 后台运行

然后再执行

1
mentohust -u账号 -p密码 -n网卡 -b3

注意最后是3不再是0,此时,mentohus将会在后台运行

4.4 测试能否上网

然后我们再尝试ping百度

1
ping baidu.com

测试是否正常

其他配置

此外,我们还可以配置开机自启mentohust、安装其他有用的插件来充分利用路由器,感兴趣的同学还可以试着多拨,如果想学的人多可以考虑更新一期多拨教程


交叉编译OpenWRT系统及MentoHust插件进行锐捷认证
https://www.lry666.cn/posts/faa8/
作者
LRY666
发布于
2023年2月28日
许可协议