惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
博客园_首页
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
小众软件
小众软件
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell
IT之家
IT之家
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog

树 - 洞

SMTP2GO 拯救你的 25 端口限制 | 树 SMTP2GO 拯救你的 25 端口限制 | 树 Bilibili Linux 客户端 VAAPI 硬解折腾全记录 | 树 Bilibili Linux 客户端 VAAPI 硬解折腾全记录 | 树 震惊!insmtr 的 MySQL 数据库居然被勒索软件攻击了! | 树 震惊!insmtr 的 MySQL 数据库居然被勒索软件攻击了! | 树 再探阿里云 DNS 对 CloudFront 的解析情况 | 树 再探阿里云 DNS 对 CloudFront 的解析情况 | 树 为单板机配置超简单 VNC 环境 改良版 | 树 为单板机配置超简单 VNC 环境 改良版 | 树 Ubuntu 22.04 Rust OpenCV 注意事项 | 树 Redmi AX6000 hanwckf U-Boot 安装 OpenWrt 24 | 树 为单板机配置超简单 VNC 环境 | 树 Ubuntu 22.04 Rust OpenCV 注意事项 | 树 为单板机配置超简单 VNC 环境 | 树 在 WSL 中使用 ISE | 树 在 WSL 中使用 ISE | 树 Jetson AGX Orin CH340 驱动安装 | 树 Jetson AGX Orin CH340 驱动安装 | 树 在 Ubuntu 22.04 上运行 PX4-Autopilot 1.13 | 树 在 Ubuntu 22.04 上运行 PX4-Autopilot 1.13 | 树 在 Thunderbird 里使用沉浸式翻译插件 | 树 在 Thunderbird 里使用沉浸式翻译插件 | 树 搭建自定义域名邮箱 | 树 - 洞 搭建自定义域名邮箱 | 树 - 洞 Android Box for root 透明代理 | 树 再见,曾经热爱的算法竞赛 | 树 - 洞 再见,曾经热爱的算法竞赛 | 树 - 洞
Redmi AX6000 hanwckf U-Boot 安装 OpenWrt 24 | 树
insmtr · 2025-05-13 · via 树 - 洞

OpenWrt 24 版本发布之后,Redmi AX6000 主线版本的 U-Boot 实现已经合并入上游了,因此维护者移除了 hanwckf 版 U-Boot 的 ImmortalWrt 的包的构建。详情可见这条 Commit

从 hanwckf 版 U-Boot 切换到 OpenWrt U-Boot 的大致思路是先把路由器刷回原版布局,然后再按照官网步骤刷入 OpenWrt U-Boot 。这个过程需要使用到 tftpuboot 的命令行操作,比较复杂,而且有一定变砖风险。

hanwckf 版 U-Boot 号称「不死 U-Boot」,采用网页上传固件烧录的方式,烧录前还会有兼容性检测,极易上手,而且不容易变砖,相当用户友好。

然而维护者也仅仅只是移除了 Redmi AX6000 的配置文件,项目本身没有太大变更,所以我们可以手动编译一个可在 hanwckf 版 U-Boot 中引导的 OpenWrt 24 。

准备编译环境

OpenWrt 官方维护了一套编译环境,并打成了 Docker 镜像,我们直接使用即可:

docker run -id --name immortalwrt \
    -e BUILDWORKER_NAME=immortalwrt \
    -e BUILDWORKER_PASSWORD=123456 \
    -v ./immortalwrt:/immortalwrt \
    ghcr.io/openwrt/buildbot/buildworker-v3.8.0:v9

这里我们使用 -v 参数将宿主机的 ./immortalwrt 目录挂载到容器的 /immortalwrt 目录下,方便我们在宿主机上查看编译产物。

进入容器:

docker exec -it immortalwrt bash

安装基本依赖:

# 在新版 buildbot 中,需要手动添加 backports 源,不然直接运行脚本会报错。
# 如果你没有开科学上网的话就不用加了,脚本内部检测到中国大陆地区会自动换源,换源的时候会加上。
echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list
bash <(curl -s https://build-scripts.immortalwrt.org/init_build_environment.sh)

该镜像中内置了一个叫 buildbot 的非特权用户。如果你的宿主机本身就是 root 用户,那就不存在文件夹以及构建产物权限问题,可以跳过这步。如果你宿主机登录的是非特权用户,需要使用此用户来编译。按 Ctrl + D 退出容器,再输入以下命令使用 buildbot 用户登录容器:

docker exec -it --user buildbot immortalwrt bash

后面就是照着 ImmortalWrt 的 Github 上的 README 来编译了。

在主目录中克隆项目:

cd /immortalwrt
git clone https://github.com/immortalwrt/immortalwrt
cd immortalwrt

默认是 master 分支,我们根据需要切换到不同版本的分支或标签。比如我这里需要编译 v24.10.1 版本:

git checkout v24.10.1

恢复被删除的 Redmi AX6000 的配置文件:

git revert 9334bf3ec1e21d0bc1b1f8dc480415aea589ebc7 -n

更新软件包:

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

下载一个现成的构建配置:

wget https://downloads.immortalwrt.org/snapshots/targets/mediatek/filogic/config.buildinfo -O .config

修改构建配置:

make menuconfig

Target Profile 中选择 (Xiaomi Redmi Router AX6000 (custom U-Boot layout)) ,在 Subtarget 中选择 Redmi AX6000

往下可以看到,这个构建配置中基础的包已经被选中。但是无线网卡相关的驱动没有被勾选,我们这里选中 kmod-mt7915e ,或者你页可以选择不编译它们,而是在安装完之后使用 opkg 命令安装,两者是等价的。

Kernel modules  --->
    Wireless Drivers  --->
        {*} kmod-mt7915e

最后一步,编译:

make -j$(nproc)

如果你没有切换到 buildbot 用户,而是使用 root 用户编译,那么上面的命令会编译出错,需要在编译前加上跳过 root 检查:

FORCE_UNSAFE_CONFIGURE=1 make -j$(nproc)

几个小时之后,编译完成。这里我的电脑大约需要一个半小时。构建产物在 bin/targets/mediatek/filogic 目录下,immortalwrt-mediatek-filogic-xiaomi_redmi-router-ax6000-squashfs-sysupgrade.bin 就是固件。

结语

个人感觉,维护者不应该删除 hanwckf 版 U-Boot 的配置文件,毕竟这个 U-Boot 版本的兼容性和稳定性都比 OpenWrt U-Boot 要好很多。虽然我们可以手动编译,但是对于普通用户来说,还是有点复杂的。

特别鸣谢

@alampy 提供的思路。