Quantcast
Channel: CodeSection,代码区,Linux操作系统:Ubuntu_Centos_Debian - CodeSec
Viewing all articles
Browse latest Browse all 11063

EdgeRouter X 救砖全记录

$
0
0

想不到啊想不到,到手才几天这就要开始救砖啊。。。。

===========

这里是我作死弄挂 EdgeRouterX 的过程,如果你的设备也挂了在找解决方案,跳过这段。

我上一篇文章提到了给 EdgeRouterX 添加 Debian 的源来安装 apg 和 dnsutils 这类的小工具,看起来这些小工具只占用几百 K 空间问题不大。但实际上,每次 apt-get update 本身都会占用二三十 MB 的路由器存储空间,更扯淡的是,今天不知道为什么在 apt-get update 时出现了好几次 bus error,竟然直接把磁盘空间挤爆了。

按复位键?开玩笑,这玩意仅仅是给你恢复一下默认的 config 文件,对其他文件动都不动,就算你删掉些东西成功恢复了配置,磁盘空间也找不回来,这以后还怎么玩?

其实主要问题是我是个 linux 菜鸟,根本不知道到底是哪里被占用了,我想直接用升级固件的方法覆盖一下应该可以了吧,结果空间不足连升级固件都不信。

又看网上的方法,删掉旧的系统固件备份,还差十几 M,这下可傻逼了。更傻逼的事,其实有旧的系统固件备份时,可以先切回旧的系统固件,再把另一个有乱七八糟东西的固件备份删除,这样反而可以释放空间(我猜的),反正现在是没戏了。

到后面为了腾出空间一顿乱删,把 squashfs.img 干掉了,在 openwrt 里这玩意你怎么删都不影响,一个复位旧回来了,但 EdgeRouter 不是,删了还真就删掉了。然后,得到砖头奖励。。。

===========

参考了 文章 1 , 文章 2 , 文章 3 ,然后开始救砖。

准备材料:一根 USB 转 TTL 的串口线,另外一台至少有两个 LAN 口的路由,一台电脑。

1. 把 EdgeRouter X 的 ETH0 和电脑接入同一个路由的 LAN。

2. 把 EdgeRouter X 的螺丝拆下来,按第三篇文章的图片接好串口线,VCC 不要接。如果 TX/RX 搞不清楚,把 EdgeRoueter 断电再上电后调换一下试试就知道了,收到数据就对了,波特率 57600。

3. 准备一个 Openwrt 镜像,上面的文章中有连接,我也会贴在附件里。

4. 在电脑上开 TFTP 服务器,Mac 上还真没什么好工具,最后万能的 python 给我带来了 py3tftp https://github.com/sirMackk/py3tftp , 很好用。

5. 在还能用的那个路由上,查看一下电脑和 EdgeRouter 的 IP,是的,EdgeRouter 虽然挂了,但还是能分配到一个局域网 IP。

6. 用你喜欢的工具观察串口消息,看到原厂 uboot 的启动项选择时,选择 1,

#Reset_MT7530 setportisolation Pleasechoosetheoperation: 1: Loadsystemcodeto SDRAMviaTFTP. 2: Loadsystemcodethen writeto FlashviaTFTP. 3: BootsystemcodeviaFlash (default). 4: Entrbootcommandlineinterface. 7: LoadBootLoadercodethen writeto FlashviaSerial. 9: LoadBootLoadercodethen writeto FlashviaTFTP. default: 3 0

从 TFTP 加载 openwrt 镜像到 EdgeRouter 的 RAM 然后启动,按照提示输入 EdgeRouter 的 IP,电脑的 IP 和 Openwrt 镜像名称即可

7. 一切顺利的话串口工具那里就可以看到启动了一个 Openwrt 系统,在 openwrt 里修复我们的 EdgeRouter。

8. 按我这种玩死路由的方法,mtd5 一定还是可以正常加载的,会看到类似这样的消息:

[3.270000] UBI: auto-attachmtd5 [3.280000] ubi0: attachingmtd5 [5.720000] ubi0: scanningis finished [5.740000] ubi0: attachedmtd5 (name"ubi", size 247 MiB)

9. 我们得让它无法挂在,在 openwrt 输入以下命令:

ddif=/dev/zeroof=/dev/mtdblock5

不需要等这个命令运行完成,因为我们只是要破坏它,等个十几秒应该足够了。

10.reboot 命令重启

11. 在启动 log 中看到这样的信息就行了:

UBIerror: novalidUBImagicfoundinsidemtd5

12. 我们把官方下载下来的镜像解压,为了方便后面传输,我把这些文件放到一个 http 服务器下,开启简单的 http 服务一样可以用 python 实现,这里不废话了。

13. 在 openwrt 中,格式化 mtd5 区块:

ubiformat /dev/mtd5

碰到 y/n 就回答 y。

14. 依次运行以下命令,其实我也不是很清楚,照着做就是了:

ubiattach -p /dev/mtd5 ubimkvol /dev/ubi0 --vol_id=0 --lebs=1925 --name=troot mount -o sync -t ubifsubi0:troot /mnt/

15. 到这步应该可以进入 / mnt 目录了,可以用 df 看一下:

root@OpenWrt:/mnt# df -h FilesystemSizeUsedAvailableUse% Mountedon tmpfs124.6M60.0K124.5M0% /tmp tmpfs512.0K0512.0K0% /dev ubi0:troot213.5M24.0K208.7M0% /mnt

16. 运行以下命令:

ddif=/tmp/vmlinux.tmpof=/dev/mtdblock3 ddif=/tmp/vmlinux.tmpof=/dev/mtdblock4

17. 用 wget 从电脑开的 http 服务器下载 version.tmp,squashfs.tmp,squashfs.tmp.md5 到 / tmp 目录下。

18. 把 tmp 目录下的文件复制到 / mnt 目录下,注意名称的修改:

cp /tmp/version.tmp /mnt/version cp /tmp/squashfs.tmp /mnt/squashfs.img cp /tmp/squashfs.tmp.md5 /mnt/squashfs.img.md5

复制 squashfs.tmp 时会比较慢,毕竟要些一个很大的系统进 NAND。

19. 确认复制 OK,直接 reboot,然后就可以看到可爱的 EdgeOS 了。

附件是最重要的 openwrt 镜像文件。openwrt.bin.tar


Viewing all articles
Browse latest Browse all 11063

Trending Articles