贝尔 EA0326GMP 刷官方 ImmortalWrt 教程
贝尔 EA0326GMP 是一款中国移动定制的WiFi 6 路由器,采用喜闻乐见的 MT7981B 方案,具有 128MB NAND 与 256MB DDR,无线规格为 2x2 MIMO AX3000。由于其优良的硬件规格与低廉的价格,该路由器具备了一定的可玩性与折腾价值。
本教程旨在提供一个刷写官方OpenWrt/ImmortalWrt与其ubootmod的方法,为喜欢使用OpenWrt/ImmortalWrt opkg 生态的用户提供参考。
原始教程在:https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=40e7fab9e4a294882f198cb7fb5bc5eecee26ac8,commit message 为具体步骤。
解锁SSH
将电脑网卡 IP 设为192.168.10.100
,子网掩码24
即255.255.255.0
。登录路由器后台192.168.10.1
,导入刚刚下载的配置文件。
导入完成后,你会发现web界面登不上了,密码总是错误,不过这已经不重要了。此时已经可以通过ssh连接到路由器。
备份 SPI NAND
在路由器原厂系统环境(以下简称stock固件)下查看SPI分区表:
1 | cat /proc/mtd |
因为已经把整个 SPI NAND 映射到mtd0
,所以只要备份mtd0
就行了。由于stock固件可用内存过小,强行备份会oom,所以选择使用TCP发送数据,PC端上位机接收来备份。
因为路由器自带的busybox是阉割版,没有netcat,所以我们下一个静态链接的arm64 busybox: https://busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-armv8l ,用scp
传到路由器的/tmp
目录。
1 | cd /tmp |
在pc端下个netcat,具体参考:https://cloud.tencent.com/developer/article/2182697
我使用MSYS2,更加简单方便。
1 | pacman -Syyu |
至此固件备份结束。
刷入 OpenWrt/ImmortalWrt
收集文件
首先前往官方 Firmware Selector (如果你有能力,可以直接前往国内镜像站下载相关文件)
需要获取的文件如下:
文件短名 | 下载链接 | 备注 |
---|---|---|
preloader.bin |
Go | 路由器的第一级Bootloader,由MTK提供的SDK提供。一般的厂商没有对其做出修改的能力,不刷也行。 |
bl31-uboot.fip |
Go | 引导程序映像。 用于启动时加载操作系统的底层软件。 |
initramfs-recovery.itb |
Go | 集成最小文件系统的 Linux 内核。适用于首次安装或故障恢复。 |
squashfs-sysupgrade.itb |
Go | 完整的系统,用于刷写新系统或更新现有系统。 |
此外,我们还需要一个TFTP服务器,建议使用 Tftpd64 : https://bitbucket.org/phjounin/tftpd64/downloads/tftpd64.464.zip
刷写 U-Boot
下载 bl31-uboot.fip,并在stock固件环境执行以下命令刷入FIP分区:
1 | mtd write immortalwrt-23.05.4-mediatek-filogic-nokia_ea0326gmp-bl31-uboot.fip FIP |
进入 Initramfs 恢复环境
将PC的IP设置为 192.168.1.254
,子网掩码255.255.255.0
。
将下载好的initramfs-recovery.itb
文件去除版本前缀,即去掉23.05.4-
,重命名之后的文件名应该像这样:immortalwrt-mediatek-filogic-nokia_ea0326gmp-initramfs-recovery.itb
。把该文件放置在 Tftpd64 的根目录,并启动 Tftpd 服务器。这一步最好关闭防火墙,不然很大可能失败。
拔路由器电源,找个针按住路由器上的 Reset ,插电开机。
过一会儿 tftp 服务器会读条,等待 Initramfs 恢复环境启动。等到路由器上的LAN灯亮起,就成功启动了,此时已经成功一半。
重新分区并刷入系统
SSH 连接192.168.1.1
进入 Initramfs 恢复环境。首先新建目录mkdir -p /tmp/flash
,scp上传4个刷机所需文件。
获取权限
安装kmod-mtd-rw
,去你对应版本的包源里面找,比如 https://mirrors.nju.edu.cn/immortalwrt/releases/23.05.4/targets/mediatek/filogic/packages/ 。
SCP 传到/tmp/flash
,执行
1 | opkg install --nodeps kmod-mtd-rw*.ipk |
安装,再执行
1 | insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1 |
以安装内核模块,获取 mtd 的写权限。
执行以下命令确认分区表:
1 | root@ImmortalWrt:/tmp/flash# cat /proc/mtd |
这里你的输出结果如果跟我的不一样,建议你不要进行下一步操作,以免破坏原厂分区。
建立 U-Boot 环境变量分区
执行以下命令重新建立 UBI 子卷:
1 | ubidetach -p /dev/mtd6 && ubiformat /dev/mtd6 -y && ubiattach -p /dev/mtd6 |
创建片上恢复分区
这一步是可选的。如果您不想使用 ubootmod 提供的 NAND 恢复启动功能,可以跳过此步骤。
但是假如你的路由器出现问题,你就要参照“进入 Initramfs 恢复环境” 一节,使用 tftp 进入 Initramfs 恢复环境。如果你刷了,在启动时按住 Reset 直接就能进入 Initramfs 恢复环境而无需在PC上启动 tftp 服务器。代价是ImmortalWrt系统会损失约10MB的可用空间,这是一个 Trade-off。
执行以下命令以创建片上恢复分区。这里恢复分区的大小要跟initramfs-recovery.itb
的大小对应。即11520KiB
。
1 | ubimkvol /dev/ubi0 -n 2 -N recovery -s 11520KiB |
刷入主分区
保险起见再刷一遍preloader与ubootmod:
1 | mtd write preloader.bin bl2 |
最后使用sysupgrade
命令刷写主分区,该命令执行后会自动重启。
1 | sysupgrade -n squashfs-sysupgrade.itb |
自动重启完成后,访问192.168.1.1
,享受openwrt吧!
最后放一张配置完的图