360T7 写入 openwrt
360T7 配置
MT7981(filogic 820)
- CPU:MT7981B 双核 A53 1.3GHz ,架构 aarch64_cortex-a53
- RAM:256M DDR3
- FLASH:128M SPI NAND
- 无线 phy:MT7976CN AX3000
- 交换机:MT7531A 2xHSGMII
原厂 UBoot 启动时,只能使用一个 ubi 分区存放固件,固件总体积(含 kernel+rootfs+rootfs_data)将限制在 36M 内,但仍然可以使用 plugin 分区(36M)存放其它数据。因此,原厂的 UBoot 只能使用小于 36M 的固件,较大的固件超过了存放 ubi 的分区就不能使用。
分区信息
- Factory 为无线 EEPROM 分区
- fip 为 uboot 分区
- ubi 为固件分区,36M,ubi 格式
- firmware-1 为固件分区,36M,ubi 格式
- plugin 为原厂插件分区,36M,ubi 格式
- factory 为原厂固件信息分区,保存有机器编号,MAC 地址等信息
开启 telnet
- 拆机。
用卡片撬动,可以无损开机。
从底部中间部位插入翘片,需要注意卡扣方向,卡扣的结构为外壳扣在底座里的,使用翘片使底座向外正面外壳向内方向撬动,沿边缘走。
注意四个角的卡扣。 - 找到 UART 串口。
拆机后找到,主板正面(贴芯片的一面),左上方侧边三个圆孔,线序从上到下一次为 RXD,TXD,GND,分别对应读、写、地。波特率为`115200 - 使用串口工具,连接路由器,串口工具的读对应路由器 UART 的写,地对地。不要接错!
- 使用串口助手,路由器通电,等待启动,不断按
F
和回车键,直到出现以下提示进入 failsafe 模式。
1 | Press the [f] key and hit [enter] to enter failsafe mode |
- failsafe 下执行以下操作
1 | # 开启uboot控制台菜单 |
- 重启。
reboot
- Putty 串口操作
putty 可替代替代 串口助手 ,具体用法如下:- session
Serical Line:选择设备使用的串口,speed:115200,connection type:serical - Connection-Serical
Flow control: none 。流控制基本不再使用了 - Teminal
Teminal-Imolcit CR in every IF \ Imolcit LF in every CR 勾选
Local echo: force on
Local line editing:force on - Opne 运行即可。
- session
telnet 连接
在 failsafe 模式下打开 telnet 以后,重启路由器,使用 telnet 连接路由器,ip 地址为路由器的后台管理页面地址,密码为在 failsafe 下设置的密码(也就是路由器的𭙃密码)。
windws
- 开启 telent
win+R 运行 ctrol-程序-程序和功能-启动和关闭 windows 功能-Telnet 客户端勾选。
xin+R 运行 cmd,运行 telent 即可
也可使用 termius 等工具。
uboot
基于 bl-mt798x 项目
mt798x uboot
- CPU : mt798
- BOARD : 360t7
- 默认地址 :192.168.1.1
- 固件分区 108M,原厂固件分区 36M
- 带有 webui 恢复页面
UBoot 升级:192.168.1.1/uboot.html
FirmwareUpdate:192.168.1.1/uboot.html
可以在 webui 刷 uboot 或者固件。 - 支持多种 Flash 分区布局切换
刷入 UBoot
- 下载该修改版 UBoot:mt798x-uboot-202206-fip.tar.xz,解压缩出 bin 文件。
- 将 Uboot bin 文件上传到路由器,并写进 fip。
使用 telnet 将文件上传到/tmp,直接使用 wegt 下载到/tmp 也可以。上传文件以后,执行mtd write mt7981_360t7-fip-fixed-parts.bin fip
写入 UBoot 文件,刷 UBoot 完成。
刷入固件
- 完成 UBoot 写入以后,断电,修改电脑 IP 为 192.168.1.2,子网掩码 255.255.255.0,网关 192.168.1.1,dns 192.168.1.1.按住路由器 RESET 按键,通电,等待 8s 后使用访问 192.168.1.1 进入 uboot 恢复页面。
- 选择固件,写入。
- 重启完成。
failsafe webui 使用方法
- 按住路由器 RESET 键孔后通电,保持 10-15 秒后松开按键,路由器自动进入 failsafe 模式。
- uboot 不支持 DHCP,需要电脑网线接路由期 lan 口,配置电脑 ip 为固定 IP 设置
192.168.1.100
。 - 使用浏览器的 隐身模式 访问路由器 ip
192.168.1.1
- 选择固件上传,支持 sysupgrade 和 factory 格式的固件,上传完毕后点击开始刷机。
- 固件写入后,路由器会自动撑起,请将电脑 ip 地址重新设置成 DHCP 自动获取。
- 要使用 webui 更新 uboot,可以访问
http://<路由ip>/uboot.html
,选择 FIP 格式的 uboot 二进制文件并上传刷如即可。
刷机
openwrt 固件
官方 openwrt
⚠️ 注意: 这里仅限原厂分区即 36M UBoot 使用的,修改版的 Uboot 运行情况没测试。
因为没有 NMBM,所以需要刷机前在 failsafe mode 备份所有 mtd 分区。
需要文件
openwrt-23.05.0-mediatek-filogic-qihoo_360t7-bl31-uboot.fip
ATF uboot 文件,不支持 108M Uboot。openwrt-23.05.0-mediatek-filogic-qihoo_360t7-initramfs-recovery.itb
openwrt-23.05.0-mediatek-filogic-qihoo_360t7-preloader.bin
ATF BL2 文件openwrt-23.05.0-mediatek-filogic-qihoo_360t7-squashfs-sysupgrade.itb
hanwckf 版
hanwckf 编译版
在 github 上有个一个基于 hanwckf 的编译版,在这里可以找到。
基于修改的 108M 的 Uboot,比较纯净。
潘多拉版
immortaiwrt
openwrt 的文件系统
cat /proc/filesystems
查看当前可读取的文件系统lsblk
列出可用块设备的信息
openwrt 使用的是 mini_fo 文件系统,可以看作是 squash fs 和 jffs2 的文件系统实现了连接,如果用户读取只读文件,则连到 squash 文件系统个,如果读取可修改文件则连接到 jffs2 上。
squashfs 是把 rom 压缩到一个文件刷进路由器,然后剩下的空间格式化成 jffs2 并且优于 ROM 文件,rom 的只读分区挂载到/rom 下,另一个读写 jffs2 分区挂到/overlay,当两个目录下有同名文件就优先读这个,相当于覆盖了 rom 文件,实际并没有覆盖,这种情况的优点是 rom 压缩率高,可写分区就大一些,其次只要备份/overlay 就可以把 rom 以为的所有文件备份下来,以后可以全部还原不用配置了,格式化/overlay 分区就相当于恢复 Openwrt 出厂设置了。
路由器的 flash 上,内核中常使用的是 MTD 设备驱动。查看 MTD 分配 cat /proc/mtd
cat /proc/partitions
flash 分区
1 | u-boot: 设备初始化程序和引导程序代码本身 |
文件系统 df -h
1 | - / |
文件结构
1 | // |
openwrt 常用口令
用户名:root
密码:password 或者 空
SSH
ssh <usr>@<ip>
ssh 连接ssh-keygen -R <ip>
ssh 连接密钥重置cat /proc/mtd
查找分区的名称。在列出的输出中,可以看到每个分区的名称、起始地址和大小。df -h
硬盘空间查看du -h
查看指定文件或目录的磁盘占用ls <dir> -all -h
查看指定目录下的文件大小fdisk -l
查看当前磁盘分区情况
openwrt 是基于 linux 的,linux 一般情况下第一个磁盘的名称通常是 sda,第二个是 sdb 以此类推,而 sda1 就是 sda 磁盘的第一个分区,sda2 就是 sda 磁盘的第二个分区opkg files <package>
查看指定软件包的安装位置,会列出安装路径下的所有文件opkg info <package>
显示指定软件包的详细信息
软件源
推荐使用国内软件源,地址自行替换。
地址格式大多为:
域名/releases | snapshots/<版本号>/packages/<cpu架构>/base | luci | packages | routing | telephony | feeds.conf
- luci: 包含 Luci(openwrt 的 web 图形化界面)的扩展应用程序、插件,如额外的网络设置、vpn 客户端、文件管理等。
- packages: openwrt 社区维护的软件仓库,包含了大量的额外的软件包,社区的成员可以提交软件包到这个仓库。
- routing: 路由软件包,提供路由相关功能的软件包。
- telephony: 电话通信相关的软件包。
- feeds.conf: 软件源的配置文件。
域名/releases | snapshots/<版本号>/targets/<芯片平台>/<芯片型号> | filogic
主要是对应平台的固件包,
passwall 的安装及配置
- 到 这里 去下载 passwall 文件,对照自己的路由器芯片下载对应的版本。
- 低版本的 openwrt 安装缺少
luci-lua-runtime
依赖,需要下载 luci-lua-runtime-fake 单独安装。 这里 还有一些 openwrt 的其他装依赖。 - 使用 文件传输 或者 文件助手 ,将 passwall 文件,luci-lua-runtime 依赖上传至 openwrt 的 /tmp 路径下,比如
/tmp/upload/
路径下。 - 使用 ssh 连接 openwrt,进入
/tmp/upload/
目录,解压压缩文件到当前目录。 - 在当前目录执行安装命令
opkg install *.ipk --force-reinstall
- 进入 passwall 检查各组件安装情况及版本型号。sing-box 可能显示无,没关系,点击检查更新就行了。
- 手工更新各组件的方法,比如 sing-box:
- 找到发行包,当然要确保的你 openwrt 版本及芯片支持,下载文件包sing-box-1.7.0-alpha.2-darwin-arm64.tar.gz。
- 上传 sing-box-1.7.0-alpha.2-darwin-arm64.tar.gz 到 openwrt 的
/tmp/upload/
文件夹并解压tar -zxvf sing-box-1.7.0-alpha.2-darwin-arm64.tar.gz
修改解压后文件名字为 sing-box。
<
为什么要这么做,没有执行自动检查更新?
当然是因为 /overlay 空间不够,自动解压不成功了!!
/ > - 将文件覆盖到 passwall 的 singbox 文件位置,默认/usr/bin/sing-box,执行
mv sing-box /usr/bin/sing-box
- 安装完成。
- 不必要的组件可以删除,也可以在第 5 步时直接忽略安装。(空间足够的话都安装吧,没必要精简,指不定哪就用到了不是)
小内存运行 passwall 的 Tips
- 组件更新问题参考上面手动安装步骤。
关于 geoip.dat 和 geosite.dat 文件的处理。
调整位置路径为/tmp/share/v2ray
,但是/tmp 目录不稳妥每次重启、断电都会抹掉,可以设置一个开机脚本实现自动下载。
脚本及设置方法如下:具体的是设置贴在这里,等我从air上复制过来!
这是使用的是增强版的 geoip.dat 和 geosite.dat,来自 这里 。
<
这里就要吐槽一下,v2ray 使用的.dat 文件,sing-box 使用的是.db 文件,还不通用,通用的话直接调用同同一个文件多好。
/>
- 当然如果你愿意,所有的组件文件都可以这么干。
IPV6
我是自动配置的 ipv6 发现极其不稳定,网络里的设备总有几台偶尔抽风,影响体验,就在 openwrt 的 DHCP\lan\wan 里全部禁用了 ipv6,把 wan6 也删除了。毕竟 ipv6 目前不是刚需,没折腾。