京东云亚瑟(AX1800)刷机


发布于

|

分类

,

五一的时候看见群里在讨论路由器。想到家里的路由器还是N年前的矿难传家宝(K2P和Newifi3,一个当主路由一个当AP),就想着100块钱也不太多,把家里路由升级一下吧。

2242版本开SSH

拿到手是23年5月的版本。不插网线开机上电,系统信息显示版本号为2242。这个版本可以免拆机开SSH,就是麻烦点……巨麻烦。

  1. 准备一个U盘,大小随意。我手边有个金士顿的32G U盘。
  2. 准备一个Linux环境(比如Linux、能插U盘的OpenWRT。甚至你如果Mac能挂载EXT4的话,一个Mac就够了)。我用的是PVE。然后我在Linux或Mac下不会分区,所以又准备了个Windows环境,里面放了DiskGenius用于给U盘分区。
  3. 给U盘分区。分两个区,都是EXT4格式。为了后面好识别,建议分区大小不要相同。
    • Windows下,打开DiskGenius,选择U盘,快速分区,分俩区,大小方面我一个输入了10G另一个输入了20G。
    • Linux下我不会用fdisk。如果是有图形界面的Linux,可以试试「磁盘工具」。
    • Mac下简直有毒。磁盘工具根本不给你分区的选项,也不给你调整分区大小的选项。如果你熟悉fdisk的话,可以用fdisk自己搞。
  4. 分区好的U盘,插回Linux。大多数Linux应该都会自动挂载。看一下「第二个分区」叫啥。比如我的U盘插上后识别是 /mnt/sda1/mnt/sda2,那么第二个分区就是/mnt/sda2
  5. 创建两个软链接(把/mnt/sda2 替换成你前面找到的第二个分区)。不用管原始文件存不存在,只管创建软连接就好了。
    • ln -s /etc/rc.local /mnt/sda2/rc.local
    • ln -s /etc/init.d/done /mnt/sda2/done
  6. 把U盘插到路由器上
  7. 路由器不要插网线,插电开机。随便配置一下基础信息。在设置里关闭自动升级
  8. 手机下载「京东云无线宝」APP,登录。
  9. 路由器插上网线,等大概10s,手机切换到路由器的Wi-Fi上。此时你的手速要「稍微」快一点,不要拖好几个小时,不然可能会被自动升级。
  10. 手机绑定京东云。绑定后这台路由器会出现在列表里。点击它,在下方一大堆图标里找到「在线升级」,点进去,关闭「自动升级」。此时千万不要手残升级。
  11. 还是在那一堆小图标里,找到「存储设置」。从上往下来:
    • 「内置存储」选「智能加速」
    • 「外置存储」,「智能加速」选U盘上的第一个分区
    • 「外置存储」,「本地网盘」选U盘上的第二个分区
  12. 拔掉路由器上的网线。好了,不用再和时间赛跑了。甚至APP也可以卸载了。
  13. 本机挂载WebDAV
    • Windows下, 打开「我的电脑」,空白处右键,选择「添加网络位置」,然后输入「http://192.168.68.1:56589
    • Mac下,Finder里「连接服务器」的话,挂载出来是只读的,很不爽。我在AppStore里找到了「FTP挂载器精简版」,免费够用。下载安装后,同样是用读写方式挂载「http://192.168.68.1:56589
  14. 进入挂载的文件夹,用Notepad++或者VSCode,打开donerc.local文件
    • 对于rc.local,14-16行应该是被注释掉了的。取消注释
    • [ -f /etc/rc.local ] && {
          sh /etc/rc.local
      }
    • 对于done,在exit 0之前加入一个新行,内容为
    • /usr/sbin/dropbear
  15. 重启路由器。重启完成后,就可以用SSH登录了。
    • ssh [email protected] -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa

麻烦死了😂

备份

京东云的分区比较多。有一些对我来说没啥用,例如跑PCDN用的plugin分区、log分区和storage分区,我就没有备份。其他的还是备份一下吧,有备无患。

你的U盘还插在路由器上吧?

dd if=/dev/mmcblk0 bs=512 count=34 of=/mnt/sda2/mmcblk0_GPT.bin conv=fsync
dd if=/dev/mmcblk0p1 of=/mnt/sda2/mmcblk0p1_0SBL1.bin conv=fsync
dd if=/dev/mmcblk0p2 of=/mnt/sda2/mmcblk0p2_0BOOTCONFIG.bin conv=fsync
dd if=/dev/mmcblk0p3 of=/mnt/sda2/mmcblk0p3_0BOOTCONFIG1.bin conv=fsync
dd if=/dev/mmcblk0p4 of=/mnt/sda2/mmcblk0p4_0QSEE.bin conv=fsync
dd if=/dev/mmcblk0p5 of=/mnt/sda2/mmcblk0p5_0QSEE_1.bin conv=fsync
dd if=/dev/mmcblk0p6 of=/mnt/sda2/mmcblk0p6_0DEVCFG.bin conv=fsync
dd if=/dev/mmcblk0p7 of=/mnt/sda2/mmcblk0p7_0DEVCFG_1.bin conv=fsync
dd if=/dev/mmcblk0p8 of=/mnt/sda2/mmcblk0p8_0RPM.bin conv=fsync
dd if=/dev/mmcblk0p9 of=/mnt/sda2/mmcblk0p9_0RPM_1.bin conv=fsync
dd if=/dev/mmcblk0p10 of=/mnt/sda2/mmcblk0p10_0CDT.bin conv=fsync
dd if=/dev/mmcblk0p11 of=/mnt/sda2/mmcblk0p11_0CDT_1.bin conv=fsync
dd if=/dev/mmcblk0p12 of=/mnt/sda2/mmcblk0p12_0APPSBLENV.bin conv=fsync
dd if=/dev/mmcblk0p13 of=/mnt/sda2/mmcblk0p13_0APPSBL.bin conv=fsync
dd if=/dev/mmcblk0p14 of=/mnt/sda2/mmcblk0p14_0APPSBL_1.bin conv=fsync
dd if=/dev/mmcblk0p15 of=/mnt/sda2/mmcblk0p15_0ART.bin conv=fsync
dd if=/dev/mmcblk0p16 of=/mnt/sda2/mmcblk0p16_0HLOS.bin conv=fsync
dd if=/dev/mmcblk0p17 of=/mnt/sda2/mmcblk0p17_0HLOS_1.bin conv=fsync
dd if=/dev/mmcblk0p18 of=/mnt/sda2/mmcblk0p18_rootfs.bin conv=fsync
dd if=/dev/mmcblk0p19 of=/mnt/sda2/mmcblk0p19_0WIFIFW.bin conv=fsync
dd if=/dev/mmcblk0p20 of=/mnt/sda2/mmcblk0p20_rootfs_1.bin conv=fsync
dd if=/dev/mmcblk0p21 of=/mnt/sda2/mmcblk0p21_0WIFIFW_1.bin conv=fsync
dd if=/dev/mmcblk0p22 of=/mnt/sda2/mmcblk0p22_rootfs_data.bin conv=fsync
dd if=/dev/mmcblk0p23 of=/mnt/sda2/mmcblk0p23_0ETHPHYFW.bin conv=fsync
dd if=/dev/mmcblk0p24 of=/mnt/sda2/mmcblk0p24_plugin.bin conv=fsync
dd if=/dev/mmcblk0p25 of=/mnt/sda2/mmcblk0p25_log.bin conv=fsync
dd if=/dev/mmcblk0p26 of=/mnt/sda2/mmcblk0p26_swap.bin conv=fsync

刷分区表

此步骤非必做,而且稍有危险。

默认的固件分区只有60MB。如果想装个iStoreOS之类的「比较大」的系统的话,可能会刷不进去。那不如大胆一点,直接把这60MB扩大点。

我找到了512M、1G、2G的分区表(我直接用了2G的)。下载后,刷入(写入gpt文件到/dev/mmcblk0的前34个扇区)

dd if=/tmp/gpt.bin of=/dev/mmcblk0 bs=512 count=34 conv=fsync

注意,这个分区表里面只有前面那些小分区,没有最后数据分区(接近50G或者100G)。后面刷好系统后,可以去系统里面再进行调整。

刷uboot

uboot我找到了两个。一个是蓝色背景的,只能刷系统;另一个是白色背景的,不仅能刷系统,还能刷uboot、分区表啥的。

下载后,刷到0:APPSBL(一般为 /dev/mmcblk0p13)和0:APPSBL_1 (一般为/dev/mmcblk0p14)分区。

dd if=/tmp/uboot.bin of=$(blkid -t PARTLABEL=0:APPSBL -o device) conv=fsync
dd if=/tmp/uboot.bin of=$(blkid -t PARTLABEL=0:APPSBL_1 -o device) conv=fsync

# 或者

dd if=/tmp/uboot.bin of=/dev/mmcblk0p13 conv=fsync
dd if=/tmp/uboot.bin of=/dev/mmcblk0p14 conv=fsync

刷系统

似乎亚瑟比较著名的有iStoreOSopenwrt.ai两个版本。其他的还有官改、梅林啥的,在此不表。我自己体验了一下之后,感觉iStoreOS似乎没啥必要:我只需要个AP其实就够了,尽可能精简一点吧。

如果没刷GPT分区表,那么在用iStoreOS的时候,只能选「小/旧」的那个版本,下载出来后自己合并文件啥的。我自己没搞懂。如果刷了GPT分区表,那么iStoreOS可以随便刷。2G够你随便霍霍。

路由器断电,捅reset不松手,等到指示灯变成蓝色常亮,松手。然后把自己电脑的ip改为192.168.1.10,其他都是网页操作了。

白色的那个,可以在网页上直接刷其他分区。虽然一般人也用不到:

将存储利用起来

如果刷了GPT分区,那么默认最后有接近50G/100G的空余空间没有被分区。这些空间只有被挂载后才可以用来当网盘、挂系统文件、跑PCDN。

我想直接在iStoreOS里面创建分区,似乎是少了啥包,所以一直报错。

有人想把那么大空间直接挂给overlay,这样可以为所欲为安各种东西。我没有尝试。毕竟2G真的够我用了,跑Docker的话我也是在小主机上跑。

umount /dev/mmcblk0p27
mkfs.ext4 -F /dev/mmcblk0p27
cp -r /overlay/* /mnt/mmcblk0p27
ls /mnt/mmcblk0p27
block detect > /etc/config/fstab
sed -i s#/mnt/mmcblk0p27#/overlay# /etc/config/fstab
sed -i '12s/1/0/g' /etc/config/fstab

其中 mkfs.ext4 -F /dev/mmcblk0p27 需要执行几分钟

一些下载

我自己打包备用的一些东西:点击这里下载。里面包含

  • 蓝色背景的uboot [来源][来源]
  • 白色背景的uboot [来源]
  • 512M、1G、2G的GPT分区表 [来源]
  • 我自己备份的原始分区表

参考资料


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注