转区
那第一件事肯定是转区。GLiNET的路由器固件无论哪个区域都是一样的,不存在像MIUI那种的按固件区分区域,也不存在刷固件转区。区域代码和其他配置信息(如SN码、设备ID等)一同被写在闪存的某个分区内。根据机型不同,分区位置也不一样。
MT3000的基础信息在/dev/mtdblock3,MT2500在/dev/mmcblk0boot1,AX1800/AXT1800在/dev/mtdblock8。在OpenWRT上可以使用lsblk或fdisk -l查看分区信息,并可以使用dd命令将分区dump到文件复制用于分析。
示例代码
注意,转区是直接写入闪存的,误操作可能导致设备无法启动。操作前请三思,操作时请谨慎。(注意系统编码格式的影响,可能会写入不正确的数据)。
比较保险的方法是用dd命令将/dev/mtdblock3导出到文件,然后用scp传到PC上进行修改,改好后传回去用dd写入。
- MT3000
1 2 | echo “US” | dd of=/dev/mtdblock3 bs=1 seek=136 sync |
- MT2500
1 2 3 | echo 0 > /sys/block/mmcblk0boot1/force_ro echo “US” | dd of=/dev/mmcblk0boot1 bs=1 seek=136 sync |
- AX1800
1 2 3 | echo “US” | dd of=/dev/mtdblock8 bs=1 seek=152 sync reboot |
成功转区之后建议重置一下固件,并且(即便是重置了固件)此时也并不能在主页看到神秘的功能,因为简体中文下不考虑区域设置,直接就是隐藏的,切换到其他语言即可。
语言切换
在/www/i18n中,将后面带zh-cn的文件替换为zh-tw即可。
SSH login this router as per this guide: https://docs.gl-inet.com/en/3/tutorials/ssh/
Type in the following commands one by one.
Only for AXT1800
echo “US” |dd of=/dev/mtdblock8 bs=1 seek=152
sync
reboot
方案一
用代码修改 mtdblock8 里面的一个参数
echo "US" |dd of=/dev/mtdblock8 bs=1 seek=152
sync
reboot
亲测可用,也很方便。但不知道是不是每次升级后都需要重新操作一下。
方案二
看到了个帖子「官方 GUI 辅助脚本」,应该是往里面加了一些菜单项,让被隐藏的按钮显示出来。
由于 js 代码做了一点点点点点点点点混淆……(就是个凯撒密码)我懒得去解了,所以也不清楚他到底干了啥。
方案三
还可以直接改固件。感觉和方案一其实是一样的原理。
方案一和三,修改完后,会去掉左上角的「CN」标志,去掉后切换语言到英语,就可以看到 AdGuard 等功能了
root@GL-AXT1800:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00180000 00020000 "0:SBL1"
mtd1: 00100000 00020000 "0:MIBIB"
mtd2: 00380000 00020000 "0:QSEE"
mtd3: 00080000 00020000 "0:DEVCFG"
mtd4: 00080000 00020000 "0:RPM"
mtd5: 00080000 00020000 "0:CDT"
mtd6: 00080000 00020000 "0:APPSBLENV"
mtd7: 00180000 00020000 "0:APPSBL"
mtd8: 00080000 00020000 "0:ART"
mtd9: 07280000 00020000 "rootfs"
mtd10: 00080000 00020000 "log"
mtd11: 00080000 00020000 "0:ETHPHYFW"
mtd12: 0041e000 0001f000 "kernel"
mtd13: 034ad000 0001f000 "ubi_rootfs"
mtd14: 03339000 0001f000 "rootfs_data"
暴力搜索,查到在 mtd8
root@GL-AXT1800:/dev# hexdump -C /dev/mtdblock8
*
00000090 43 4f 55 4e 54 52 59 3a 43 4e ff ff ff ff ff ff |COUNTRY:CN......|
导出
dd if=/dev/mtdblock8 of=mtdblock8
cp mtdblock8 mtdblock.orig
修改,opkg里没有 hexedit,但是有个 jupp
opkg update
opkg install jupp
jupp mtdblock8
比较难用,ctrl + o + g
进入16进制模式,把 COUNTRY:CN
改成 COUNTRY:US
,再使用 ctrl + k + x
保存。可以看 ctrl + j
的帮助。
回写,重启
dd if=mtdblock8 of=/dev/mtdblock8
reboot