故障安全模式、恢复出厂设置和恢复模式
OpenWrt 提供了几种方法来让你的路由器“重新开始”:
故障安全模式
OpenWrt 允许你启动进入“故障安全模式”,该模式会覆盖其当前配置。如果你的设备变得无法访问,例如在配置错误后,那么故障安全模式可以帮助你解决问题。当你在故障安全模式下重新启动时,设备会以基本操作状态启动,并带有一些硬编码的默认设置,你可以开始手动修复问题。
故障安全模式可以在设备开机后不久按下(几乎任何)按钮来触发。 每个路由器都是独一无二的,但 OpenWrt 会监测 WPS、Reset按钮或其他按钮的按下情况。 然而,故障安全模式无法修复更深层次的问题,例如硬件故障或内核损坏。 它类似于重置,但是有故障安全模式的情况下,你可以访问你的设备并在需要时恢复设置,而重置只会清除所有内容。
注意事项: 仅当你从 Squashfs 映像安装了固件且该固件包含所需的只读根分区时,故障安全模式才可用。 要验证你的设备是否具有 SquashFS 根分区,可以在 OpenWrt 镜像名称中查找“squashfs”,或者在你的设备上执行以下检查:
grep squash /proc/mounts
终端应返回与此类似的内容:
/dev/root /rom squashfs ro,relatime 0 0
进入故障安全模式
故障安全模式以 IP 地址 192.168.1.1 启动路由器,并禁用 DHCP 和无线连接。 你需要将你的电脑设置为同一子网中的静态地址(例如,192.168.1.10)并通过以太网连接。 有时你需要连接到路由器的特定网络端口才能获得连接。 先尝试 LAN1 端口。 DSA 设备经常启用 LAN1 only.
在大多数路由器上,OpenWrt 在启动过程中会闪烁一个 LED(通常是“电源”LED)。在启动周期的早期,OpenWrt 会在特定的两秒钟窗口内监测按钮按下(任何按钮),以指示它应该进入故障安全模式。
要进入故障安全模式,请遵循以下列出的其中一种步骤:
最简单——推荐大多数人使用:打开设备电源,等待 LED 闪烁,然后按下一个按钮。 这可以是设备上的 WPS、Reset按钮或其他按钮。
发光二极管(LED)为按下按钮的时机提供线索。 接通路由器电源后,立即观察 LED 的闪烁速度。 大多数路由器在启动期间会显示三种不同的(电源)LED 闪烁速度:
- 一种特定于设备引导加载程序的灯光开机顺序。
- 然后在两秒钟内以每秒 5 次的快速闪烁节奏闪烁,此时路由器正在等待按钮按下。
- 然后出现以下情况:
- 如果触发了故障安全模式,会以每秒 10 次的快速闪烁。设备正在监听 192.168.1.1。
- 如果故障安全模式未被触发,则会以每秒 2.5 次的较慢闪烁持续到正常启动结束。
- 如果你错过了时机并看到较慢的闪烁速率,只需关闭设备电源,等待几秒钟,然后再试一次。
供专业用户选择:使用数据包嗅探器等待特殊的广播数据包,然后按下按钮。 该数据包将被发送到目标地址 192.168.1.255 的 UDP 4919 端口。 该数据包包含文本 “Please press button now to enter failsafe” 。 所以,例如,在终端中使用 tcpdump,并且路由器连接到计算机的 eth0 端口,你将输入以下命令。
tcpdump -Ani eth0 port 4919 and udp
对于具有串口连接的专业用户的替代方法:在串口控制台上观察启动消息,并在串口键盘上按下一个键(“f”)。 这需要你将串口线连接到设备上。 控制台中显示的消息是 “按下[f]键并按[Enter]回车键进入故障安全模式”
通常,观察 LED 最为容易。但是,请务必查阅设备的可用文档,因为没有默认按钮被指定为重置按钮,并且并非所有程序在每个设备上都有效。无论使用哪种触发方式,设备都将进入故障安全模式,并且您可以通过 SSH(始终可行)或串行键盘访问命令行。
请注意, OpenWrt 始终使用 SSH 进行 terminal (终端)连接。
修复设备的设置
一旦触发故障安全模式,路由器将以 192.168.1.1/24 的网络地址启动,通常在 eth0 网络接口上,仅运行基本服务。在故障安全模式下,DHCP 服务器将不会运行。您必须将计算机的以太网端口设置为在 192.168.1.0/24 网络中使用静态 IP 地址(有效 IP 为 192.168.1.2 - 192.168.1.254,子网掩码为 255.255.255.0)。
使用 SSH 或串口连接,然后可以使用以下命令挂载 JFFS2 分区:
mount_root
然后,你可以开始四处查看并修复损坏的地方。JFFS2 分区将像正常操作一样挂载到 /overlay
。
你也可以在 Linux 或 macOS 上使用 scp 命令/协议来传输文件,或者在Windows上使用 WinSCP
Extroot 设置所需的额外步骤:
# unplug external device # 拔掉外部设备。 reboot # plug external device # 插入外部设备 # mount external device, e.g. # 挂在外部设备,例如 block info mount /dev/mmcblk0 /mnt # fix the issue, e.g. # 修复问题,例如 vi /mnt/upper/etc/config/network # verify external device will be mounted automatically, e.g. # 验证外部设备是否会自动挂载,例如 vi /overlay/upper/etc/config/fstab reboot
提示: 如果您无法使用 mount_root
并且看到消息 jffs2 not ready yet, using temporary tmpfs overlay
. 请使用 df -h
检查您的文件系统,当文件系统已满(已使用 100%)时,mount_root 命令将无法正常工作,软恢复出厂设置也将无法正常工作。
在这种情况下,请使用
mtd -r erase rootfs_data
继续执行 软恢复出厂设置
恢复出厂设置
恢复出厂设置会使你的路由器恢复到刷机后不久的配置状态。对于任何使用 squashfs/overlayfs 设置进行安装的情况(这是大多数安装的标准配置)都有效,因为它是基于擦除和重新格式化 overlayfs。
对于大容量的 NOR 芯片,格式化 overlayfs 可能需要 3 到 5 分钟。在此期间,无法保存更改。
警告:
- 恢复出厂设置取决于完成引导过程。如果恢复出厂设置不起作用,请尝试使用故障安全模式。
- 用于 PC/服务器硬件的 x86 构建版本(具有可读写的 ext4 根文件系统)无法以这种方式重置。
Reset 复位按钮
在带有物理重置按钮的设备上,无需串口或 SSH 访问即可将 OpenWrt 重置为出厂设置。
- 打开设备电源,等待状态指示灯停止闪烁(或者进入故障安全模式,如上文所述)。
- 按下并按住重置按钮 10 秒钟。
- 松开复位按钮。
设备将进行硬恢复出厂设置(见下文),然后重新启动。 在某些设备上,此操作可能会比较缓慢,因此在再次连接之前请等待几分钟。
软恢复出厂设置
如果您想要全新的开始,无需再次刷机;只需输入以下命令。您设备的设置将被重置为默认值,就像 OpenWrt 首次安装时一样。
使用 “firstboot” 或 “jffs2reset” 命令将尝试从 jffs2 overlay 分区删除所有文件。 注意: “soft reset” 是通过文件系统操作执行的,因此在某些情况下是不够的。
firstboot && reboot
注意:如果上面的命令(在同一行上)不起作用,请在终端中逐行尝试这些命令。
注意:对于大多数路由器来说,“首次启动”实际上只是发出一个“jffs2reset”命令,因此与下面的“硬重置”建议相比没有太大区别。
注意:如果你在 bash 脚本中发出此命令,请记住添加选项 -y 以强制首次启动:
firstboot -y && reboot
这里是通过串口连接在路由器启动期间获得的软工厂重置过程的日志。:
... Press the [f] key and hit [enter] to enter failsafe mode Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level f - failsafe - /etc/preinit: line 1: /sbin/mtk_failsafe.sh: not found /etc/preinit: line 1: dropbearkey: not found /etc/preinit: line 1: dropbear: not found BusyBox v1.25.1 () built-in shell (ash) ash: can't access tty; job control turned off _________ / /\ _ ___ ___ ___ / LE / \ | | | __| \| __| / DE / \ | |__| _|| |) | _| /________/ LE \ |____|___|___/|___| lede-project.org \ \ DE / \ LE \ / ----------------------------------------------------------- \ DE \ / Reboot (17.01-SNAPSHOT, r0-e88ba24) \________\/ ----------------------------------------------------------- ================= FAILSAFE MODE active ================ special commands: * firstboot reset settings to factory defaults * mount_root mount root-partition with config files after mount_root: * passwd change root's password * /etc/config directory with config files for more help see: http://wiki.openwrt.org/doc/howto/generic.failsafe ======================================================= admin@(none):/# firstboot && reboot [ 102.942293] jffs2reset: This will erase all settings and remove any installed packages. Are you sure? [N/y] y [ 117.606813] jffs2reset: /dev/mtdblock6 is not mounted [ 117.612055] jffs2reset: /dev/mtdblock6 will be erased on next mount reboot admin@(none):/# [ 119.810569] ===> rt_pci_shutdown() ...
提示: 基于 OpenWrt 的路由器重新启动或启动后,会在 1 到 2 秒内(或者在预设延迟时间过后的 1 秒内)进入启动菜单(启动选项选择菜单)。启动菜单接受上/下键和回车键,所以在这段时间内避免按下这些键或任何其他键。在那个启动菜单阶段之后,3 到 8 秒后(取决于 CPU 速度等)会出现故障安全模式并通过,所以你必须在这段时间内只按一次“f”键(一次),然后按回车键进入故障安全模式。
硬恢复出厂设置
重新刷写固件
JFFS2 重置
重置 JFFS2 分区。
umount /overlay && jffs2reset && reboot
根据 overlay 的挂在状态, jffs2reset 选择 基于文件的删除操作或分区标记为空的操作,以便在引导时重新创建。
F2FS 重置
重置 F2FS 分区。
dd if=/dev/zero of=/dev/loop0 bs=1M; reboot