买的电信定制路由器 JCG Q20 因为疫情原因,在等待了 5 天时候后,终于收到货了,先进入路由器后台看了一下,电信固件做的挺不错的,该有的功能都有,还是刷机折腾一下吧。

分区备份

刷机之前先备份一下分区,通过检测可以看到,路由器的 ssh 默认是开启状态

ssh 连接进入系统

用户名:root

密码:路由器底部印着的登录密码

进入之后先查看一下分区情况

1
cat /proc/mtd

接着使用 dd 命令备份分区

1
2
3
4
5
6
7
8
9
10
dd if=/dev/mtd0 of=/tmp/Bootloader.bin
dd if=/dev/mtd1 of=/tmp/Config.bin
dd if=/dev/mtd2 of=/tmp/Factory.bin
dd if=/dev/mtd3 of=/tmp/firmware.bin
dd if=/dev/mtd4 of=/tmp/kernel.bin
dd if=/dev/mtd5 of=/tmp/rootfs.bin
dd if=/dev/mtd6 of=/tmp/rootfs_data.bin
dd if=/dev/mtd7 of=/tmp/firmware_backup.bin
dd if=/dev/mtd8 of=/tmp/rootfs_data_back.bin
dd if=/dev/mtd9 of=/tmp/nvram_config.bin

备份完成以后,使用 WinSCP 连接系统,文件协议选择 SCP ,账号密码同上面的 ssh 一样

连接后拉取文件回本地,一共 10 个文件,备份结束

刷入固件

过渡固件

首先需要刷入过度固件,目的是刷入 CR660x 的 pb-boot,方便接下来的刷机

ps:为什么不从官方固件直接刷入 pb-boot ? 因为官方新版本的固件有可能刷入直接变砖头

进入管理后台,找到升级固件,接着选择上传固件,过渡固件下载

刷入 pb-boot

输入成功后进入管理后台开启 ssh:192.168.123.1

账号:admin

密码:admin

管理后台和 ssh 的账号密码相同

首先使用 WinSCP 上传 pb-boot 到 /tmp 目录下

接着连接 ssh,刷入 pb-boot

[JCG-Q20 /home/root]# mtd_write write /tmp/pb-boot.img Bootloader
Unlocking ‘Bootloader’ …
Writing from ‘/tmp/pb-boot.img’ to MTD ‘Bootloader’ … [ok]

刷入成功后拔出电源,按住路由器底部的 RESET 键不放,接着连接电源,等待 5s 左右然后放开 RESET

电脑使用网线连接路由器,在发现的网络上查看 ipv4 地址是否为 192.168.1.开头

如果不能自动识别,则需要选择手动配置 ip

接着网页输入 192.168.1.1,即可进入 pb-boot 后台,这样以后就算固件刷错了也不怕变成砖头了

刷入固件

因为刷入的是 CR660x 的 pb-boot ,因此选择刷入的固件必须是支持 CR660x 的 pb-boot 的固件才行,选择文件,恢复固件即可

最后的效果图

总结

遇到的问题

我在最后刷入固件的时候刷入成功了,却是无法正常进入管理后台,尝试了多次后我的解决办法是在路由器正常启动状态下按住 RESET 键 5s,尝试恢复出厂,路由器重启后就可以正常连接了,安装完系统后首先恢复一次出厂再进行设置(系统管理 —> 配置管理 :恢复出厂模式,先重置内部储存,后重置 NVRAM)。

关于 dd 命令

Linux dd 命令用于读取、转换并输出数据

dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出

参数说明:

  • if=文件名:输入文件名,默认为标准输入。即指定源文件。
  • of=文件名:输出文件名,默认为标准输出。即指定目的文件。
  • conv=<关键字>,关键字可以有以下 11 种:
    • conversion:用指定的参数转换文件。
    • ascii:转换 ebcdic 为 ascii
    • ebcdic:转换 ascii 为 ebcdic
    • ibm:转换 ascii 为 alternate ebcdic
    • block:把每一行转换为长度为 cbs,不足部分用空格填充
    • unblock:使每一行的长度都为 cbs,不足部分用空格填充
    • lcase:把大写字符转换为小写字符
    • ucase:把小写字符转换为大写字符
    • swap:交换输入的每对字节
    • noerror:出错时不停止
    • notrunc:不截短输出文件
    • sync:将每个输入块填充到 ibs 个字节,不足部分用空(NUL)字符补齐。

这里再看一下一个简单的使用

file1 文件中的所有英文字母转换为大写,然后转成为 file2 文件,在命令提示符中使用如下命令

1
dd if=file1 of=file2 conv=ucase

参考

JCG Q20/JCG Q10 PRO 免拆机 SSH 备份分区

JCG Q10PRO/Q20 无需救砖,优化版本刷机过程!