OpenWrt 安全模式
OpenWrt 有一个内置的安全模式, 此模式下 OpenWrt 会绕过几乎所有的配置并使用内置的默认配置, 路由将只启动必要的服务并使用默认的IP 192.168.1.1/24
. 这种情况下你可以使用 telnet
连接进路由并修复某些错误.
读 flash.layout, 你应该明白 OpenWrt 的安全模式能帮你解决任何问题是因为 OpenWrt 使用 JFFS2 分区存储用户数据 (如果你用的是 SquashFS 固件)! 在你忘记密码, 或把你自己墙了, 或你弄坏了一个启动脚本的情况下, 你可以用安全模式恢复.
需求
通过按钮触发(标准OpenWrt方法)
- 电脑IP设置为192.168.1.2,子网设置为255.255.255.0 subnet
- 路由电源循环(关闭和开启)
- 在以上程序过后立刻迅速的按下路由上的按钮60秒(可能是任何按钮). 提示: 如果你的路由启动时间长的夸张(例如DIR-300 A),那么你可能要等很长时间)
- 如果所有过程都正确, 192.168.1.1将能够ping通和可以telnet
- Telnet进192.168.1.1 -- 将会有不需要认证就可以进去的root shell
- 尝试一下下面的命令
连接串口后,通过键盘触发
- 断开路由器电源线。
- 把你的电脑用网线连接路由器的LAN口。
- 给你的电脑配置静态IP,在192.168.1.2 and 192.168.1.254之间。比如:192.168.1.2 (网关和DNS都不需要配置).
- 接通路由器电源线。
- 通过串口线连接路由器。
- 等待一会,直到出现以下内容: Press the [f] key and hit [enter] to enter failsafe mode
- 按下“F”键并回车。
- 现在,你可以使用telnet连接192.168.1.1了 (不需要用户名和密码)
在安全模式下
You get a message like this “bla bla, you booted into failsafe mode”
NOTE: The root file system in failsafe mode is the only the SquashFS partition. The JFFS2 is not present. To mount JFFS2 in read-write mode run mount_root
:
mount_root
接下来,可以修复你的系统了:
- In case you forgot your password, you need to set a new one. Type:
passwd
- In case you forgot the routers IP address, get it with
uci get network.lan.ipaddr
- In case you filled up the entire JFFS2 by installing too big/too many packages, clean the entire JFFS2 partition. All settings will be reset (OpenWrt equivalent of a factory reset)
mtd -r erase rootfs_data
If you are done with failsafe mode use
reboot -f
to reboot. (Normal /sbin/reboot
will not work, because init
is not running.) Or power cycle the router.
Notes
- the article process.boot may help you better understand when
failsafe
“kicks in” once activated