JDCloud-AX6000是京东云推出的一款高性能路由器,通常用于家庭和小型企业的网络需求。其型号名称中的“AX6000”表示这款路由器支持Wi-Fi 6(802.11ax)标准,并具备高达6000 Mbps的无线传输速度。该路由器的特点包括:
1. Wi-Fi 6支持:支持Wi-Fi 6技术(也称为802.11ax),提供更高的无线速率、更低的延迟和更高的设备连接稳定性。
2. 强大的硬件配置:通常配备高速处理器(如四核或更高)、大容量内存(如512MB或1GB)以及多个高性能天线,确保设备能在高负载下稳定工作。
3. 6G无线带宽:通过2.4GHz和5GHz两个频段的优化组合,提供6000Mbps的高速无线网络,适合高清视频流、在线游戏及大文件传输等需求。
4. 多设备连接支持:凭借Wi-Fi 6技术,JDCloud-AX6000能够同时支持更多的设备连接,提升了家庭或办公室环境中多设备并发时的网络性能。
5. 安全性:配备了高水平的安全技术,包括先进的加密算法、家长控制、设备隔离等,保障家庭或企业网络的安全性。
6. 智能优化功能:支持自动信道选择、负载均衡等功能,能够智能调整网络设置,以获得最佳的信号和速度。
- 这款路由器是面向需要高速、稳定和大量设备连接的家庭或企业用户,适合用于各种网络应用,尤其是高清视频、AR/VR、智能家居设备和大数据传输等领域。
准备工作
- 最新刷机文件下载
加菲猫大佬的刷机文件:https://github.com/lgs2007m/Actions-OpenWrt/releases/tag/Router-Flashing-Files
我的网盘备份:https://www.kejizero.online/%e5%88%86%e4%ba%ab%e7%ab%99
- SSH刷机工具
Xshell: https://pan.lanzoui.com/b0f19ry9g
putty: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
解锁SSH
京东云AX6000百里没有软破解SSH,通过原厂系统升级官方放出的原生OP可获取SSH权限。
原厂系统中升级官方原生OP:
openwrt-re-cp-03-4.1.0.r4005-1287bf0122329d5c3acbb7198e04b1e4.bin
注意:官方宣传升级原生OP会失去保修,请自行斟酌。
升级系统重启完成后,使用SSH软件登录192.168.68.1,端口22,用户名root,没有密码。
输入命令删除这两个环境变量:
fw_setenv jdc_crc_version && fw_setenv jdc_opp_version
原厂分区信息概述如下:
- 双分区结构:原厂使用了双分区,即两个系统分区:
kernel
、rootfs
和kernel2
、rootfs2
。它们共享一个rootfs_data
分区,大小为 50MB。 - 各分区大小:
kernel
和kernel2
分区都是 16MB。rootfs
和rootfs2
分区都是 50MB。
- 固件限制:
- 由于
kernel
分区的大小为 16MB,而固件中的kernel
通常约占 3MB,因此该分区大小足够容纳固件的内核部分。 - 然而,
rootfs
分区的大小限制了固件的总大小,因此原厂双分区结构下刷固件的大小不能超过kernel + rootfs
的总和,即 53MB。
- 由于
- 分区表格式:
- 原厂使用旧版的
mt7986-emmc.json
来制作 GPT 分区表,因此在blkid
命令的输出中,第一个分区会显示为 PMBR(保护MBR)分区。 - 新版的 GPT 分区表(如在 RAX3000M eMMC、GL-MT6000 中使用)不会显示在
blkid
输出中,且使用新版的 JSON 来生成分区表。
- 原厂使用旧版的
- 设备号变化:
- 分区设备号在不同设备上可能有所不同。例如,在 RAX3000M eMMC 中,FIP 分区的设备号是
mmcblk0p3
,而在百里设备上,FIP 分区的设备号则为mmcblk0p4
。
- 分区设备号在不同设备上可能有所不同。例如,在 RAX3000M eMMC 中,FIP 分区的设备号是
- GPT分区表读取方式:
- 无论是旧版还是新版分区表,系统通过读取
PARTLABEL
来识别和读写分区,而blkid
是否显示 GPT 分区及设备号的变化,不会影响实际使用。
- 无论是旧版还是新版分区表,系统通过读取
备份原厂分区
如果你只关心备份原厂分区而不关心分区的详细信息,可以直接跳到备份原厂分区的部分。
root@OpenWrt:~# blkid
/dev/mmcblk0p1: PTTYPE="PMBR"
/dev/mmcblk0p2: PARTLABEL="u-boot-env" PARTUUID="19a4763a-6b19-4a4b-a0c4-8cc34f4c2ab9"
/dev/mmcblk0p3: PARTLABEL="factory" PARTUUID="8142c1b2-1697-41d9-b1bf-a88d76c7213f"
/dev/mmcblk0p4: PARTLABEL="fip" PARTUUID="18de6587-4f17-4e08-a6c9-d9d3d424f4c5"
/dev/mmcblk0p5: PARTLABEL="kernel" PARTUUID="971f7556-ef1a-44cd-8b28-0cf8100b9c7e"
/dev/mmcblk0p6: TYPE="squashfs" PARTLABEL="rootfs" PARTUUID="309a3e76-270b-41b2-b5d5-ed8154e7542b"
/dev/mmcblk0p7: PARTLABEL="kernel2" PARTUUID="9c8e460f-7160-4c25-a420-e7deeb10d5d3"
/dev/mmcblk0p8: TYPE="squashfs" PARTLABEL="rootfs2" PARTUUID="508b8f82-164c-4898-8edc-adaa59438cd4"
/dev/mmcblk0p9: LABEL="rootfs_data" UUID="ea5ae1d2-cdc2-40c9-bada-0a9c0d8f63a6" BLOCK_SIZE="1024" TYPE="ext4" PARTLABEL="rootfs_data" PARTUUID="dd18c072-adb3-412b-bf97-37617b01adf3"
/dev/mmcblk0p10: UUID="4f3e32d7-cf18-40a9-a42d-0afa648c1513" BLOCK_SIZE="1024" TYPE="ext4" PARTLABEL="log" PARTUUID="2d18c070-adb6-412b-bf90-37617b01adf5"
/dev/mmcblk0p11: UUID="fac0a627-0346-4883-bea5-f0aefccb31aa" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="plugin" PARTUUID="3d18c075-adb0-412b-bf92-37617b01adf6"
/dev/mmcblk0p12: TYPE="swap" PARTLABEL="swap" PARTUUID="4d18c079-adb2-412b-bf93-37617b01adf7"
/dev/mmcblk0p13: UUID="a10bd4dd-7f44-4760-a1e9-51a71442922a" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="storage" PARTUUID="5d18c072-adb3-412b-bf95-37617b01adf8"
root@OpenWrt:~# sgdisk -p /dev/mmcblk0
Warning! Main partition table overlaps the first partition by 34 blocks!
You will need to delete this partition or resize it in another utility.
Disk /dev/mmcblk0: 241664000 sectors, 115.2 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 2BD17853-102B-4500-AA1A-8A21D4D7984D
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 240615424
Partitions will be aligned on 1024-sector boundaries
Total free space is 8158 sectors (4.0 MiB)
Number Start (sector) End (sector) Size Code Name
2 8192 9215 512.0 KiB 8300 u-boot-env
3 9216 13311 2.0 MiB 8300 factory
4 13312 17407 2.0 MiB 8300 fip
5 17408 50175 16.0 MiB 8300 kernel
6 50176 152575 50.0 MiB 8300 rootfs
7 152576 185343 16.0 MiB 8300 kernel2
8 185344 287743 50.0 MiB 8300 rootfs2
9 287744 390143 50.0 MiB 8300 rootfs_data
10 390144 524287 65.5 MiB 8300 log
11 524288 2621439 1024.0 MiB 8300 plugin
12 2621440 4718591 1024.0 MiB 8300 swap
13 4718592 240615424 112.5 GiB 8300 storage
root@OpenWrt:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 115.2G 0 disk
├─mmcblk0p1 179:1 0 17K 0 part
├─mmcblk0p2 179:2 0 512K 0 part
├─mmcblk0p3 179:3 0 2M 0 part
├─mmcblk0p4 179:4 0 2M 0 part
├─mmcblk0p5 179:5 0 16M 0 part
├─mmcblk0p6 179:6 0 50M 0 part
├─mmcblk0p7 179:7 0 16M 0 part
├─mmcblk0p8 259:0 0 50M 0 part /rom
├─mmcblk0p9 259:1 0 50M 0 part /overlay
├─mmcblk0p10 259:2 0 65.5M 0 part /log
├─mmcblk0p11 259:3 0 1G 0 part /opt
├─mmcblk0p12 259:4 0 1G 0 part [SWAP]
└─mmcblk0p13 259:5 0 112.5G 0 part /mnt/mmcblk0p13
mmcblk0boot0 179:8 0 4M 1 disk
mmcblk0boot1 179:16 0 4M 1 disk
备份原厂分区的步骤如下:
- 备份分区:
- 只需备份 GPT 分区信息到
mmcblk0p12
的 Swap 分区,mmcblk0p13
的 Storage 分区由于过大,所以不进行备份。 - 由于
plugin
和swap
分区的大小均为 1GB,建议将它们备份到挂载点/mnt/mmcblk0p13
中。然后,可以使用类似 WinSCP 的工具通过网络登录并下载备份的文件。
- 只需备份 GPT 分区信息到
- 关键分区:
bl2
位于/dev/mmcblk0boot0
。uboot
位于 FIP 分区。
- 全零空白文件:
unpartitioned.bin
是一个全0的空白文件,用于后续将备份的分区按顺序合并成一个完整的 eMMC 镜像文件。该文件通常只有在更换 eMMC 时才需要使用,但还是建议将所有分区都备份以防万一。
- 备份命令提示:
- 为了方便执行多条命令,所有的命令应复制粘贴执行,最后使用
sync
命令确保文件写入完成。命令可以一起复制粘贴执行,不会遗漏任何步骤。执行完所有命令后,最后回车执行sync
命令。
- 为了方便执行多条命令,所有的命令应复制粘贴执行,最后使用
注意:放在一起的命令全部复制粘贴执行,sync也一起复制,最后的时候回车执行sync即可,下同,不再赘述。
这行sync命令主要是为了方便多行命令一起复制粘贴执行,不会遗漏上面的命令。
dd if=/dev/mmcblk0boot0 bs=512 count=2048 of=/mnt/mmcblk0p13/mmcblk0boot0_bl2.bin conv=fsync
dd if=/dev/mmcblk0p1 of=/mnt/mmcblk0p13/mmcblk0p1_PMBR.bin conv=fsync
dd if=/dev/mmcblk0 bs=512 skip=34 count=8158 of=/mnt/mmcblk0p13/mmcblk0p1_unpartitioned.bin conv=fsync
dd if=/dev/mmcblk0p2 of=/mnt/mmcblk0p13/mmcblk0p2_u-boot-env.bin conv=fsync
dd if=/dev/mmcblk0p3 of=/mnt/mmcblk0p13/mmcblk0p3_factory.bin conv=fsync
dd if=/dev/mmcblk0p4 of=/mnt/mmcblk0p13/mmcblk0p4_fip.bin conv=fsync
dd if=/dev/mmcblk0p5 of=/mnt/mmcblk0p13/mmcblk0p5_kernel.bin conv=fsync
dd if=/dev/mmcblk0p6 of=/mnt/mmcblk0p13/mmcblk0p6_rootfs.bin conv=fsync
dd if=/dev/mmcblk0p7 of=/mnt/mmcblk0p13/mmcblk0p7_kernel2.bin conv=fsync
dd if=/dev/mmcblk0p8 of=/mnt/mmcblk0p13/mmcblk0p8_rootfs2.bin conv=fsync
dd if=/dev/mmcblk0p9 of=/mnt/mmcblk0p13/mmcblk0p9_rootfs_data.bin conv=fsync
dd if=/dev/mmcblk0p10 of=/mnt/mmcblk0p13/mmcblk0p10_log.bin conv=fsync
dd if=/dev/mmcblk0p11 of=/mnt/mmcblk0p13/mmcblk0p11_plugin.bin conv=fsync
dd if=/dev/mmcblk0p12 of=/mnt/mmcblk0p13/mmcblk0p12_swap.bin conv=fsync
sync
耐心等待执行完成,最后一行sync回车执行即可,注意看最后一个swap分区是否备份完成。
然后使用WinSCP之类的软件登录路由器,到/mnt/mmcblk0p13目录下载下来保存到电脑。
WinScp软件登录路由器,协议SCP,IP 192.168.68.1,端口22,点击高级,高级站点设置-连接 去掉勾选“优化连接缓冲大小”,再点击登录。
注:/mnt/mmcblk0p13里的aiecpluginD、jdc_docker文件夹里面是跑分的缓存数据。
如果不大,也可自行压缩后备份,刷机后直接恢复到storage分区,这样回原厂跑分直接用这些数据,可以更快恢复跑分。
太大就不建议备份,回原厂后重新缓存即可。
刷写 BL2 和 UBOOT
- 关于 BL2 和 UBOOT:
- 百里设备的
bl2
和uboot
都启用了 Secure Boot 验证,因此在刷机时需要同时替换这两个部分所在的 FIP 分区。 - 刷机时不能只替换
uboot
,因为bl2
和uboot
是紧密相关的,必须一起更新。
- 百里设备的
- 文件大小调整:
- 为了满足数据洁癖的需求,可以将编译得到的
bl2
二进制文件的尾部填充为 0,使其大小扩展至 256KB。 - 同样地,将
fip
分区的尾部填充为 0,扩展到 2048KB。这样做的目的是确保刷写时文件能够直接覆盖已有的数据部分,实际上相当于清空分区再进行刷写,虽然这样会使得文件变得较大,但刷机过程会更为安全。 - 如果不介意文件大小,也可以直接使用编译得到的原始文件进行刷写,正常情况下这样刷写也能成功。
- 为了满足数据洁癖的需求,可以将编译得到的
- 上传并验证:
- 将
bl2
和uboot
文件上传到路由器的/tmp
目录。 - 使用 SSH 登录到路由器,运行命令来验证上传的文件的 MD5 校验和,确保文件没有损坏或篡改。
- 将
将bl2和uboot上传到路由器/tmp目录,SSH输入命令验证md5:
md5sum /tmp/mt7986_jdcloud_re-cp-03*.bin
加菲猫大佬2024.10.10版bl2、uboot的md5值是:
root@OpenWrt:~# md5sum /tmp/mt7986_jdcloud_re-cp-03*.bin
6c0d654a9dc261b769b472f1e3bb4df9 /tmp/mt7986_jdcloud_re-cp-03-bl2_20241010.bin
053cb614b1309f5d04544fb3380548ed /tmp/mt7986_jdcloud_re-cp-03-fip_legacy-and-fit_20241010.bin
核对md5正常后,先输入下面命令切换到shell (ash):
ash
然后一起复制下面命令粘贴执行,刷写bl2和uboot:
echo 0 > /sys/block/mmcblk0boot0/force_ro
dd if=/tmp/mt7986_jdcloud_re-cp-03-bl2_20241010.bin of=/dev/mmcblk0boot0 conv=fsync
echo 1 > /sys/block/mmcblk0boot0/force_ro
dd if=/tmp/mt7986_jdcloud_re-cp-03-fip_legacy-and-fit_20241010.bin of=$(blkid -t PARTLABEL=fip -o device) conv=fsync
sync
最后一行sync回车执行,刷写完没有报错,则检查下分区的md5值,和我一样即可,不一样就重新刷,不能重启!!
md5sum /dev/mmcblk0boot0 && md5sum $(blkid -t PARTLABEL=fip -o device)
输出结果即可:
root@OpenWrt:~# md5sum /dev/mmcblk0boot0 && md5sum $(blkid -t PARTLABEL=fip -o device)
7dfc7a41871f6dcfd8fbcdc23706ee5c /dev/mmcblk0boot0
053cb614b1309f5d04544fb3380548ed /dev/mmcblk0p4
到这里bl2和uboot已经刷好了,不要重启,接着刷gpt分区表。
注:如果是从ImmortalWrt天灵单分区分区表或OpenWrt、ImmortalWrt主线分区表刷uboot,这里验证fip分区的md5是不一样的。
因为他们的分区表把原厂2M的fip分区扩大到了4M,我这个分区表还是保持fip为2M。
可以临时用下面命令验证fip分区数据的md5,和上面一样即可:
dd if=$(blkid -t PARTLABEL=fip -o device) bs=512 count=4096 | md5sum
后面再刷我的gpt分区表,fip分区会变为2M,重启新的分区表生效后,再验证分区的md5就会一样了。
天灵和大雕的刷机命令是直接使用偏移量,因为fip分区偏移量不变,所以不用管设备号。
上面刷uboot的命令自动找fip分区所在设备号,也不用你管设备号,可以直接用。
更新uboot建议使用我教程的命令,或者直接进Uboot Web failsafe UI(简称uboot webui)里面更新即可。bl2一般不需要再更新了。
刷写GPT分区
安装 sgdisk
工具
由于原生OpenWrt没有sgdisk
,我们首先需要将其安装。你可以将sgdisk_1.0.6-1_aarch64_cortex-a53.ipk
文件上传到 /tmp
目录,并通过SSH使用以下命令安装:
opkg install -d root /tmp/sgdisk_1.0.6-1_aarch64_cortex-a53.ipk
检查GPT分区表文件的MD5值
在刷写分区表之前,验证你上传的GPT分区表文件的MD5是否正确,确保文件未损坏。使用以下命令进行验证:
md5sum /tmp/jdcloud_re-cp-03_*gpt.bin
root@OpenWrt:~# md5sum /tmp/jdcloud_re-cp-03_*gpt.bin
823e50e29dd27b55ce11a3757e676da7 /tmp/jdcloud_re-cp-03_rootfs1024M_production1024M-gpt.bin
2d57350e2f5da3a7c7fbc2b6a196a82f /tmp/jdcloud_re-cp-03_rootfs256M_production256M-gpt.bin
3abe28bfa7b6072b05059c6cdf292a6f /tmp/jdcloud_re-cp-03_rootfs512M_production512M-gpt.bin
你会得到一个MD5值,对比与预期的值是否一致。
示例:
root@OpenWrt:~# md5sum /tmp/jdcloud_re-cp-03_*gpt.bin
823e50e29dd27b55ce11a3757e676da7 /tmp/jdcloud_re-cp-03_rootfs1024M_production1024M-gpt.bin
2d57350e2f5da3a7c7fbc2b6a196a82f /tmp/jdcloud_re-cp-03_rootfs256M_production256M-gpt.bin
3abe28bfa7b6072b05059c6cdf292a6f /tmp/jdcloud_re-cp-03_rootfs512M_production512M-gpt.bin
刷写GPT分区表
第1条dd命令是写入gpt分区表文件到/dev/mmcblk0的前34个扇区
第2条sgdisk命令是用未分配空间新建storage分区,-1G代表末尾的1G空间留白,可自行调整
第3条sync命令主要是为了方便多行命令一起复制粘贴执行,不会遗漏上面的命令
接着一起复制下面3条命令,一起粘贴执行:
dd if=/tmp/jdcloud_re-cp-03_rootfs512M_production512M-gpt.bin of=/dev/mmcblk0 bs=512 count=34 conv=fsync
sgdisk -e -n 0:0:-1G -c 0:storage -t 0:0FC63DAF-8483-4772-8E79-3D69D8477DE4 -u 0:5D18C072-ADB3-412B-BF95-37617B01ADF8 -p /dev/mmcblk0
sync
最后一行sync回车执行,你会看到如下输出:
root@OpenWrt:~# dd if=/tmp/jdcloud_re-cp-03_rootfs512M_production512M-gpt.bin of=/dev/mmcblk0 bs=512 count=34 conv=fsync
34+0 records in
34+0 records out
root@OpenWrt:~# sgdisk -e -n 0:0:-1G -c 0:storage -t 0:0FC63DAF-8483-4772-8E79-3D69D8477DE4 -u 0:5D18C072-ADB3-412B-BF95-37617B01ADF8 -p /dev/mmcblk0
Setting name!
partNum is 9
Disk /dev/mmcblk0: 241664000 sectors, 115.2 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 2BD17853-102B-4500-AA1A-8A21D4D7984D
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 241663966
Partitions will be aligned on 1024-sector boundaries
Total free space is 2105310 sectors (1.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 8192 9215 512.0 KiB 8300 u-boot-env
2 9216 13311 2.0 MiB 8300 factory
3 13312 17407 2.0 MiB 8300 fip
4 17408 50175 16.0 MiB 8300 kernel
5 50176 1098751 512.0 MiB 8300 rootfs
6 1098752 2147327 512.0 MiB FFFF production
7 2147328 2281471 65.5 MiB 8300 log
8 2281472 4378623 1024.0 MiB 8300 plugin
9 4378624 6475775 1024.0 MiB 8300 swap
10 6475776 239566814 111.1 GiB 8300 storage
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
root@OpenWrt:~# sync
root@OpenWrt:~#
dd写入没有报错,sgdisk最后输出successfully即可。如果分区表明显不一样或有错误则及时排错,重新刷。
检查第5、6分区rootfs、production是分区表设置的大小,比如rootfs/production512M的分区表rootfs/production就是512MB。
检查第9分区storage大小接近整个eMMC大小,比如128G eMMC,storage分区有110GB左右。
建议此时备份下载修改后的分区表,以后有问题进不了系统,可以直接uboot刷这个分区表。
当然重刷分区表后再新建分区也行,一样的。
dd if=/dev/mmcblk0 bs=512 count=34 of=/tmp/mmcblk0_GPT_sgdisk.bin
都没有问题可以断电,按reset上电进uboot刷固件了。
##【刷分区表的一点小提示】##
不建议用diskman磁盘管理修改分区,可能会导致系统不能启动。建议用fdisk、gdisk之类的工具修改分区。
如果不慎修改后系统不能启动,可以进入uboot,浏览器输入 http://192.168.1.1/gpt.html 重新刷正常的gpt分区表即可。
如果在uboot或系统中更换了其他分区表,但又不需要新建分区,这种情况建议在系统中使用fdisk或者sgdisk(一般需要先安装)单独保存下分区表,这样在diskman那里显示才正确:
例如系统中更换gpt分区表:
dd if=/tmp/gpt.bin of=/dev/mmcblk0 bs=512 count=34 conv=fsync
则建议保存下分区表:
echo -e 'w' | fdisk /dev/mmcblk0
sgdisk -e /dev/mmcblk0
关于分区表不包含最后那个大分区的原因
gpt分区表的最大扇区数不能大于eMMC的物理最大扇区数,小于等于则没问题。比如128G的eMMC刷64G的分区表可以,刷256G的分区表会出错。
mt798x eMMC机子的bl2在boot0硬件分区,不受userdata硬件分区的gpt分区表影响,即使gpt坏了也可以启动uboot,所以比较抗揍。
比如百里测试刷最大扇区数大于eMMC扇区数的分区表也能启动uboot,只是固件启动会报错,可以进uboot重新刷正常的分区表。
不过高通ipq60xx eMMC机子SBL是在userdata硬件分区中由gpt分区表划分出来的第一个软件分区,会受到gpt分区表的影响。
比如京东云AX1800 Pro亚瑟测试直接刷最大扇区数大于eMMC扇区数的分区表会砖,需要USB救砖。
同时如果最后一个大的分区超过了eMMC的扇区数,fdisk、parted、gdisk这些工具并不能直接修复,仍然需要删除新建。
基于这两个原因,加菲猫大佬改的分区表都采用天灵大佬的gpt分区表的做法,不保留最后一个最大的分区。
这样的分区表只包含前面的小分区,扇区总数也不会超过4G,所以适用所有大于4G的eMMC。
刷好我改分区表后,使用sgdisk用未分配空间新建一个分区,并还原分区的type code和UUID,这样分区和原厂分区是完全一样的。
- 最新
- 最热
只看作者