五一的时候看见群里在讨论路由器。想到家里的路由器还是N年前的矿难传家宝(K2P和Newifi3,一个当主路由一个当AP),就想着100块钱也不太多,把家里路由升级一下吧。
2242版本开SSH
拿到手是23年5月的版本。不插网线开机上电,系统信息显示版本号为2242。这个版本可以免拆机开SSH,就是麻烦点……巨麻烦。
- 准备一个U盘,大小随意。我手边有个金士顿的32G U盘。
- 准备一个Linux环境(比如Linux、能插U盘的OpenWRT。甚至你如果Mac能挂载EXT4的话,一个Mac就够了)。我用的是PVE。然后我在Linux或Mac下不会分区,所以又准备了个Windows环境,里面放了DiskGenius用于给U盘分区。
- 给U盘分区。分两个区,都是EXT4格式。为了后面好识别,建议分区大小不要相同。
- Windows下,打开DiskGenius,选择U盘,快速分区,分俩区,大小方面我一个输入了10G另一个输入了20G。
- Linux下我不会用fdisk。如果是有图形界面的Linux,可以试试「磁盘工具」。
- Mac下简直有毒。磁盘工具根本不给你分区的选项,也不给你调整分区大小的选项。如果你熟悉fdisk的话,可以用fdisk自己搞。
- 分区好的U盘,插回Linux。大多数Linux应该都会自动挂载。看一下「第二个分区」叫啥。比如我的U盘插上后识别是
/mnt/sda1
和/mnt/sda2
,那么第二个分区就是/mnt/sda2
。 - 创建两个软链接(把
/mnt/sda2
替换成你前面找到的第二个分区)。不用管原始文件存不存在,只管创建软连接就好了。ln -s /etc/rc.local /mnt/sda2/rc.local
ln -s /etc/init.d/done /mnt/sda2/done
- 把U盘插到路由器上
- 路由器不要插网线,插电开机。随便配置一下基础信息。在设置里关闭自动升级。
- 手机下载「京东云无线宝」APP,登录。
- 路由器插上网线,等大概10s,手机切换到路由器的Wi-Fi上。此时你的手速要「稍微」快一点,不要拖好几个小时,不然可能会被自动升级。
- 手机绑定京东云。绑定后这台路由器会出现在列表里。点击它,在下方一大堆图标里找到「在线升级」,点进去,关闭「自动升级」。此时千万不要手残升级。
- 还是在那一堆小图标里,找到「存储设置」。从上往下来:
- 「内置存储」选「智能加速」
- 「外置存储」,「智能加速」选U盘上的第一个分区
- 「外置存储」,「本地网盘」选U盘上的第二个分区
- 拔掉路由器上的网线。好了,不用再和时间赛跑了。甚至APP也可以卸载了。
- 本机挂载WebDAV
- Windows下, 打开「我的电脑」,空白处右键,选择「添加网络位置」,然后输入「
http://192.168.68.1:56589
」 - Mac下,Finder里「连接服务器」的话,挂载出来是只读的,很不爽。我在AppStore里找到了「FTP挂载器精简版」,免费够用。下载安装后,同样是用读写方式挂载「
http://192.168.68.1:56589
」
- Windows下, 打开「我的电脑」,空白处右键,选择「添加网络位置」,然后输入「
- 进入挂载的文件夹,用Notepad++或者VSCode,打开
done
和rc.local
文件- 对于
rc.local
,14-16行应该是被注释掉了的。取消注释 [ -f /etc/rc.local ] && { sh /etc/rc.local }
- 对于
done
,在exit 0
之前加入一个新行,内容为 /usr/sbin/dropbear
- 对于
- 重启路由器。重启完成后,就可以用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
刷系统
似乎亚瑟比较著名的有iStoreOS和openwrt.ai两个版本。其他的还有官改、梅林啥的,在此不表。我自己体验了一下之后,感觉iStoreOS似乎没啥必要:我只需要个AP其实就够了,尽可能精简一点吧。
如果没刷GPT分区表,那么在用iStoreOS的时候,只能选「小/旧」的那个版本,下载出来后自己合并文件啥的。我自己没搞懂。如果刷了GPT分区表,那么iStoreOS可以随便刷。2G够你随便霍霍。
路由器断电,捅reset不松手,等到指示灯变成蓝色常亮,松手。然后把自己电脑的ip改为192.168.1.10
,其他都是网页操作了。
白色的那个,可以在网页上直接刷其他分区。虽然一般人也用不到:
- 刷固件:http://192.168.1.1
- 刷ART(无线校准数据和MAC地址):http://192.168.1.1/art.html
- 刷CDT(好像好高级的样子):http://192.168.1.1/cdt.html
- 刷GPT分区表或者整个emmc镜像:http://192.168.1.1/img.html
- 刷UBoot:http://192.168.1.1/uboot.html
将存储利用起来
如果刷了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 需要执行几分钟
一些下载
我自己打包备用的一些东西:点击这里下载。里面包含
哦我另外自己鼓捣了个分区表,两个系统分区都是2G,并且合并了后面22-26分区(这样128G的机器有114G可以用)。我用着蛮舒服的,你也可以下载来试试。
参考资料
- https://www.bilibili.com/read/cv34442695/
- 2242版本免拆机开ssh
- https://post.smzdm.com/p/azoml5po
- 其他版本开ssh可以看这个教程
- https://phyng.com/2024/05/05/ax1800-openwrt.html
- 这里面有一个很好用的蓝色背景的uboot文件
- https://post.smzdm.com/p/a7p2opw5/
- 扩展overlay分区
- https://firmware.swrt.site/firmware/JDC/JDC-AX1800PRO/
- 华硕固件
- https://github.com/VIKINGYFY/OpenWRT-CI/releases
- immortalwrt的改版,用着还行
- https://openwrt.ai/
- kwrt,可以在线定制。202411在线定制的话会缺少Wi-Fi固件,不定制的话内网似乎有点问题
- 这个Github
- 排版不咋好,但是需要的资料/文件都有,很详细。旁边有个7z文件可以下载,里面啥都有
发表回复