跳到主要内容

CMCC RAX3000M 刷主线 ImmortalWrt 记录

· 阅读需 3 分钟

这是我买的第三台 RAX3000M 了,堪称一代神机。这台卖家没刷 OpenWrt, 所以就有了下面的折腾。

参考教程为:RAX3000M开启ssh以及刷uboot和刷机教程,写得很全面了。但还是遇到两个坑。

获取 SSH

利用原厂系统的备份设置功能,修改备份出来的 conf 文件(实际上是一个加密后的 tar.gz 文件),清除 root 用户密码以及开启 dropbear SSH 服务。

遇到的第一个坑:解密 cfg_export_config_file.conf

我这台生产日期是 20240123,备份出的配置需要解密。

cd ~/Downloads
mkdir rax3000m && cd rax3000m
openssl aes-256-cbc -d -pbkdf2 -k '#RaX30O0M@!$' -in ../cfg_export_config_file.conf -out - | tar -zxvf

修改好 etc/shadow 等文件后,加密回去

tar -zcvf - etc | openssl aes-256-cbc -pbkdf2 -k '#RaX30O0M@!$' -out ../cfg_export_config_file_new.conf

备份

dd if=/dev/mtd0 | gzip >/tmp/mtd0_spi0.0.bin.gz

把这个文件先传出去,然后删除,因为不这样做最后 /tmp 占用太多空间会爆内存。

rm -rf mtd0_spi0.0.bin.gz
dd if=/dev/mtd1 of=/tmp/mtd1_BL2.bin
dd if=/dev/mtd2 of=/tmp/mtd2_u-boot-env.bin
dd if=/dev/mtd3 of=/tmp/mtd3_Factory.bin
dd if=/dev/mtd4 of=/tmp/mtd4_mtd4_FIP.bin
dd if=/dev/mtd5 of=/tmp/mtd5_ubi.bin
dd if=/dev/mtd6 of=/tmp/mtd6_plugins.bin
dd if=/dev/mtd7 of=/tmp/mtd7_fwk.bin
dd if=/dev/mtd8 of=/tmp/mtd8_fwk2.bin

写 uboot

遇到的第二个坑:原厂系统无法刷 BL2 分区,不知道为什么。

root@RAX3000M:/tmp# mtd write immortalwrt-25.12.2-mediatek-filogic-cmcc_rax3000m-nand-preloader.bin BL2
Could not open mtd device: BL2
Can't open device for writing!

而刷 FIP 则可以正常刷入。

由于刷主线 OpenWrt/ImmortalWrt 的 uboot 就必须要刷 BL2 (source)。我最后采取了迂回策略,先刷 hanwckf 的带 NMBM 的 uboot 以及固件,然后在这个固件里刷 BL2FIP。这个固件可以在网上随便找一个,但是必须得带有 kmod-mtd-rw 这个内核模块,用于解锁 BL2FIP 的写保护。

主线 uboot 刷主线 ImmortalWrt

使用 TFTP 刷入

# 安装 tftp 服务器
sudo pacman -S tftp-hpa
# 根据你的配置修改 wired 连接名
sudo nmcli con modify wired ipv4.addresses 192.168.1.254/24 ipv4.method manual

sudo cp ~/Downloads/immortalwrt-25.12.2-mediatek-filogic-cmcc_rax3000m-initramfs-recovery.itb /srv/tftp/immortalwrt-mediatek-filogic-cmcc_rax3000m-initramfs-recovery.itb
sudo systemctl start tftpd.service

# 等到路由器亮红灯开机直到变绿灯,就可以恢复 DHCP 了
sudo nmcli con modify wired ipv4.addresses "" ipv4.method auto

随后按照 OpenWrt 官方 instructions

  1. After OpenWrt has booted, erase UBI volumes:
ubidetach -p /dev/mtd0
ubiformat -y /dev/mtd0
ubiattach -p /dev/mtd0
  1. Create new ubootenv volumes:
ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB
ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB

最后用系统升级刷 sysupgrade 包即可。