# rax3000m 参见:[rax3000m搞机目录][https://blog.codee.top/rax3000m%E6%90%9E%E6%9C%BA%E7%9B%AE%E5%BD%95/] 注意:rax3000m分为nand版本和emmc版本,无论是哪个本部解锁ssh权限都是同样操作,所以下面先进行解锁ssh。 ## 开放ssh权限 1. 登录原版固件的web界面,默认是192.168.10.1 - 账号:user - 密码:查看设备背面,每个可能不一样 2. 进入【主页 -> 更多 -> 管理 -> 配置管理 -> 导出文件】 -> 得到 `cfg_export_config_file.conf` 3. 解压加密文件 - 配置存放路径: `/home/book/works/cfg_export_config_file.conf` - 解压后的输出路径:`/home/book/works/rax3000m` ```bash cd ~/works # 导出来配置就在该目录下 mkdir rax3000m && cd rax3000m #执行解压 openssl aes-256-cbc -d -pbkdf2 -k $CmDc#RaX30O0M@\!$ -in /home/book/works/cfg_export_config_file.conf -out - | tar -zxvf - ``` **注意:**如果没有加密,比如以前的设备,就直接解压 ``` tar -xvzf /home/book/works/cfg_export_config_file.conf -C /home/book/works/rax3000m ``` 4. 取消root密码 修改`/etc/shadow`文件 第一行的 ``` root:$1$qGTu1wd4$yiAfPwmzssbtVqjln/aXw0:19179:0:99999:7::: ``` 修改为 ``` root::19179:0:99999:7::: ``` 修改后的效果 ![](media/image-20240327105548656.png) 5. 开启ssh服务 修改`etc/config/dropbear`文件 ![](media/image-20240327105520091.png) 6. 从新打包配置 ```bash sudo tar -zcvf - etc | openssl aes-256-cbc -pbkdf2 -k $CmDc#RaX30O0M@\!$ -out ../cfg_export_config_file_new.conf ``` 得到新的`cfg_export_config_file_new.conf`配置 **注意:**如果不是加密版本直接压缩即可 ```bash tar -zcvf cfg_export_config_file_new.conf etc ``` 7. 通过web界面上传新的配置 8. 使用ssh登录rax3000m,默认ip 192.168.10.1 9. 这是时候就可以确定是emmc还是nand了 ``` df -h ``` 查看下大小即可, 10. 这个设备支持usb3.0,找个空U盘插到设备上,开启下面的就可以访问这个U盘 ![image-20240327192616526](media/image-20240327192616526.png) 基于samba服务的,所以可以在pc上直接访问 11. 下面就是刷机部分,分为nand和emmc不要搞错。 ## Nand版本 ### 备份原厂固件 首先查看分区信息 ![](media/image-20240327191833426.png) **注意:**该步骤不是必须,由于上面插了个U盘,我们直接备份数据到U盘中 ```bash dd if=/dev/mtd0 of=/mnt/usb/sda1/mtd0_spi0.0.bin.gz dd if=/dev/mtd1 of=/mnt/usb/sda1/mtd1_BL2.bin dd if=/dev/mtd2 of=/mnt/usb/sda1/mtd2_u-boot-env.bin dd if=/dev/mtd3 of=/mnt/usb/sda1/mtd3_Factory.bin dd if=/dev/mtd4 of=/mnt/usb/sda1/mtd4_FIP.bin dd if=/dev/mtd5 of=/mnt/usb/sda1/mtd5_ubi.bin dd if=/dev/mtd6 of=/mnt/usb/sda1/mtd6_plugins.bin dd if=/dev/mtd7 of=/mnt/usb/sda1/mtd7_fwk.bin dd if=/dev/mtd8 of=/mnt/usb/sda1/mtd8_fwk2.bin ``` 备份后数据如下: ![](media/image-20240327192951085.png) ### 刷入uboot ``` mtd write mt7981_cmcc_rax3000m-fip-fixed-parts.bin FIP ``` ### 刷入内核 默认ip192.168.1.1,按下RESET按钮,5s左右,指示灯变绿色,松开按钮,pc登录192.168.1.1,可以进入刚刚刷入的uboot 的web界面, ![image-20240327194246666](media/image-20240327194246666.png) ``` immortalwrt-23.05.0-mediatek-filogic-cmcc_rax3000m-nand-ubootmod-squashfs-sysupgrade.bin ``` 然后选择自己的内核固件上传即可。 ## Emmc版本 ### 刷入uboot 网上关于rax3000m的uboot版本主要有下面的三个版本: 1. OpenWrt官方版本 2. immortalwrt官方版本 3. 大神hanwckf基于immortalwrt的定制版本 下面一个一个介绍 #### OpenWrt版本 该版本的分区信息如下: ![](media/Pasted image 20240228175932.png) - GPT分区:openwrt-mediatek-filogic-cmcc_rax3000m-emmc-gpt.bin - bl2分区:openwrt-mediatek-filogic-cmcc_rax3000m-emmc-preloader.bin - uboot分区:openwrt-mediatek-filogic-cmcc_rax3000m-emmc-bl31-uboot.fip 参见项目[地址][https://github.com/openwrt/openwrt/pull/13513#issue-1909808957] 1. 把openwrt-mediatek-filogic-cmcc_rax3000m-emmc-gpt.bin文件的前17408(512*32)字节写入/dev/mmcblk0 分区,即GPT分区(0~17408) ```bash dd if=openwrt-mediatek-filogic-cmcc_rax3000m-emmc-gpt.bin of=/dev/mmcblk0 bs=512 seek=0 count=34 conv=fsync ``` 2. 告诉系统不要把强制只读模式 ```bash echo 0 > /sys/block/mmcblk0boot0/force_ro ``` 3. 烧写bl2分区 ``` dd if=/dev/zero of=/dev/mmcblk0boot0 bs=512 count=8192 conv=fsync dd if=openwrt-mediatek-filogic-cmcc_rax3000m-emmc-preloader.bin of=/dev/mmcblk0boot0 bs=512 conv=fsync ``` 4. 烧写uboot分区 ``` dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=13312 count=8192 conv=fsync dd if=openwrt-mediatek-filogic-cmcc_rax3000m-emmc-bl31-uboot.fip of=/dev/mmcblk0 bs=512 seek=13312 conv=fsync ``` #### immortalwrt官方 参见[项目地址][https://github.com/AngelaCooljx/Actions-rax3000m-emmc] 该版本和OpenWrt分区信息一样,只是编译出来的固件名字不一样,uboot阶段支持dhcp - GPT分区:mt7981-cmcc_rax3000m-emmc-gpt.bin - bl2分区:mt7981-cmcc_rax3000m-emmc-bl2.bin - uboot分区(fib):mt7981-cmcc_rax3000m-emmc-fip.bin ```bash dd if=mt7981-cmcc_rax3000m-emmc-gpt.bin of=/dev/mmcblk0 bs=512 seek=0 count=34 conv=fsync echo 0 > /sys/block/mmcblk0boot0/force_ro dd if=/dev/zero of=/dev/mmcblk0boot0 bs=512 count=8192 conv=fsync dd if=mt7981-cmcc_rax3000m-emmc-bl2.bin of=/dev/mmcblk0boot0 bs=512 conv=fsync dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=13312 count=8192 conv=fsync dd if=mt7981-cmcc_rax3000m-emmc-fip.bin of=/dev/mmcblk0 bs=512 seek=13312 conv=fsync ``` #### hanwckf基于immortalwrt的定制版 [项目地址][https://github.com/hanwckf/bl-mt798x] ``` dd if=/tmp/mt7981_cmcc_rax3000m-emmc-fip.bin of=/dev/mmcblk0p3 sync ``` 注意hanwckf的uboot 没有更新分区表,仅仅更新了uboot分区。所以无法刷入稍微大一点的内核固件,原因是没有更新分区表,由于没有找到于hanwckf的uboot相关的刷分区表命令,不敢乱刷分区表,而是仅仅更新了uboot。 #### 查看分区情况 ``` parted /dev/mmcblk0 print ``` ### 刷入内核 #### OpenWrt官方 **注意:**官方版本的固件只能由官方的uboot刷入,和第三方固件不兼容 - 参考: itb 格式怎么刷? https://www.right.com.cn/forum/thread-8316238-1-1.html #### lede官方内核 进uboot刷即可,但是hanwckf的uboot无法刷入稍微大一点的固件(70M左右),40兆左右的固件则可以刷入,是因为刷h大的uboot步骤没有更新分区表,导致了分配给刷固件的空间有限。因此建议刷immortal的uboot。 #### immortalwrt - 镜像和刷入教程: [AngelaCooljx/Actions-rax3000m-emmc: Build ImmortalWrt for CMCC RAX3000M eMMC version using GitHub Actions](https://github.com/AngelaCooljx/Actions-rax3000m-emmc) #### 挂载剩余分区 刷好固件后,发现有50多G的空间不见了,这是因为分区表变了,有一部分空闲空间未分配,你可以通过cfdisk命令创建新分区 ##### 创建分区 ``` opkg update opkg install cfdisk cfdisk /dev/mmcblk0 ``` 找到最下面的Fress Space,选择New ![](media/Pasted image 20240302150128.png) 会自动分配最大内存,然后回车 ![](media/Pasted image 20240302150153.png) 则创建了一个56.9G大小的新分区,光标移动到Write ![](media/Pasted image 20240302150316.png) 然后输入yes,回车,然后键盘按下`q`退出 ![](media/Pasted image 20240302150402.png) ##### 格式化 ``` opkg install e2fsprogs mkfs.ext4 /dev/mmcblk0p7 ``` ##### 挂载 去web界面找到挂载点挂载即可