故障安全模式、恢复出厂设置和恢复模式

OpenWrt 提供了几种方法来让你的路由器“重新开始”:

  • 故障安全模式 在你失去对设备的控制且设备变得无法访问时很有用,例如由于配置错误。它允许你将路由器重新启动到基本操作状态,同时保留你所有的软件包和(大部分)设置。
  • 恢复出厂设置 会清除您的所有软件包和设置,使路由器恢复到安装 OpenWrt 后的初始状态。
  • 恢复模式 允许您在已损坏的路由器上安装新固件。

OpenWrt 允许你启动进入“故障安全模式”,该模式会覆盖其当前配置。如果你的设备变得无法访问,例如在配置错误后,那么故障安全模式可以帮助你解决问题。当你在故障安全模式下重新启动时,设备会以基本操作状态启动,并带有一些硬编码的默认设置,你可以开始手动修复问题。

故障安全模式在设备开机2-4秒内按下(几乎任何)按钮来触发。 每个路由器都是独一无二的,但 OpenWrt 会监测 WPS、Reset按钮或其他按钮的按下情况。 然而,故障安全模式无法修复更深层次的问题,例如硬件故障或内核损坏。 它类似于重置,但是有故障安全模式的情况下,你可以访问你的设备并在需要时恢复设置,而重置只会清除所有内容。

注意事项: 仅当您安装了基于 Squashfs 映像的固件时,安全模式才可用。因为该类型固件包含必需的只读根分区,且所有后续更改都存储在独立的 /overlay 分区和目录中。 要验证你的设备是否具有 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)。在4秒窗口期内按下按钮,即可指示设备进入安全模式。(注意:在 24.10 及之后版本的 OpenWrt 中窗口期为四秒,而 23.05 及更早版本中仅为两秒。)

要进入故障安全模式,请遵循以下列出的其中一种步骤:

最简单——推荐大多数人使用:打开设备电源,等待 LED 闪烁,然后按下一个按钮。 这可以是设备上的 WPS、Reset按钮或其他按钮。

发光二极管(LED)为按下按钮的时机提供线索。 接通路由器电源后,立即观察 LED 的闪烁速度。 大多数路由器在启动期间会显示三种不同的(电源)LED 闪烁速度:

  • 一种特定于设备引导加载程序的灯光开机顺序。
  • 会以每秒5次的半快速频率闪烁4秒,此时路由器正等待按键输入。
  • 然后出现以下情况:
    • 如果触发了故障安全模式,会以每秒 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 根文件系统)无法以这种方式重置。

在带有物理重置按钮的设备上,无需串口或 SSH 访问即可将 OpenWrt 重置为出厂设置。

  1. 打开设备电源,等待状态指示灯停止闪烁(或者进入故障安全模式,如上文所述)。
  2. 按下并按住重置按钮 10 秒钟。
  3. 松开复位按钮。

设备将进行硬恢复出厂设置(见下文),然后重新启动。 在某些设备上,此操作可能会比较缓慢,因此在再次连接之前请等待几分钟。

如果您想要全新的开始,无需再次刷机;只需输入以下命令。您设备的设置将被重置为默认值,就像 OpenWrt 首次安装时一样。

使用 “firstboot” 或 “jffs2reset” (或在 2024 年 12 月后的 main/master 版本中使用factoryreset)命令将尝试删除 jffs2 overlay 分区的所有文件。 注意: “soft reset” 是通过文件系统操作执行的,因此在某些情况下是不够的。

firstboot && reboot

注意:如果上面的命令(在同一行上)不起作用,请在终端中逐行尝试这些命令。

注意:对于大多数路由器来说,firstboot 实际上只是发出一个 jffs2reset 命令,因此与下面的“hard reset”建议相比没有太大区别。

注意:如果你在 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”键(一次),然后按回车键进入故障安全模式。

重新刷写固件

重刷或升级固件并放弃保留设置。

sysupgrade -n /path/to/firmware

如果您打算重新刷写路由器并希望重置设置,请使用 sysupgrade 映像,而非 factory 映像。

OpenWrt 默认会保留设置(可参考默认设置),因此你需要选择不保留设置才能实现恢复出厂设置。

JFFS2 重置

重置 JFFS2 分区。

umount /overlay && jffs2reset && reboot

根据 overlay 的挂在状态, jffs2reset 选择 基于文件的删除操作或分区标记为空的操作,以便在引导时重新创建。

注意:jffs2reset 命令已于 2024 年 12 月更名为 factoryreset

F2FS 重置

重置 F2FS 分区。

dd if=/dev/zero of=/dev/loop0 bs=1M; reboot
  • Last modified: 2026/02/23 15:39
  • by ja