惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
N
Netflix TechBlog - Medium
腾讯CDC
C
Check Point Blog
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
S
SegmentFault 最新的问题
F
Fortinet All Blogs
美团技术团队
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
F
Full Disclosure
Recorded Future
Recorded Future
D
DataBreaches.Net
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
J
Java Code Geeks
I
InfoQ
Y
Y Combinator Blog
A
About on SuperTechFans
AI
AI
爱范儿
爱范儿
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
W
WeLiveSecurity
M
MIT News - Artificial intelligence
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Docker
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
V2EX - 技术
V2EX - 技术
Project Zero
Project Zero

yywr – Ed_'s Blog

给 Debian 开了自动安全更新 – yywr's Blog macOS 下 xlr-spaceFN 键盘映射方案实现方案 v1 – yywr's Blog 移动网络/高延迟网络下 ssh 的替代品 – yywr's Blog OBS摄像头设置教程:画面形状与绿幕功能详解 – yywr's Blog 走出舒适区的第一步:先做个垃圾出来 – yywr's Blog 视频录制和推流直播工具OBS Studio 的使用 – 基础篇 – yywr's Blog [一个酷酷的软件] Readest 电子书阅读器 – yywr's Blog UPower – 将笔记本电池当成UPS使用 – yywr's Blog 私有音乐服务 Navidrome:部署与Nginx 二级目录反代访问 – yywr's Blog 简单的私有云数据访问工具 – FileBrowser 部署记要 – yywr's Blog 配置评论邮件通知,沮丧的一天 – yywr's Blog 停止想象 – yywr's Blog 关于冥想的一些想法 – yywr's Blog
H3C NX30PRO 半砖救回记 – yywr's Blog
yywr · 2026-05-30 · via yywr – Ed_'s Blog

机器是刚出来的时候买的,系统刷的别人改过的,东西太多了,哪怕硬件资源有空,也很慢,而且很多应用其实处于不可用的状态,配置固定到了某一次保存的状态,每次重启都会回到那个状态,配置是否应用成功完全是个迷,很长时间都是当中继路由在使用了

这次虽然中间变砖了,但救回来进入新系统后能感觉能质的飞跃

找到另一篇文章,好你默认就是没有web界面,必须要 TFTP 服务的,参考 H3C-NX30PRO.html#进入-u-boot-并刷入固件

版本跨度太大,导致中间变半砖了,操作忘记截图了,就这样吧,原厂小分区就24Mb,啥也干不了

主机当前信息

  • 主机型号:H3C NX30PRO
  • 架构:ARMv8 Processor rev 4 (v8l) x 2 (1298MHz)
  • 目标平台:mediatek/mt7981
  • 固件版本:ImmortalWrt 18.06-5.4-SNAPSHOT r11814-ef0c86bdb0 / LuCI branch (git-22.323.17670-f9380b5)
  • 内核版本: 5.4.224

目标&操作计划

准备通过下面方法升级到 25.12.0,这是 AI 提供的方案,方案是没有问题的,但是没有比较明显的警告

  1. 下载文件备用: ImortalWrt Firmware Selector
    • Bootloader 镜像:文件名包含 …-u-boot.bin 或 …-bl31-uboot.fip
    • 恢复内核镜像 (Recovery):文件名包含 …-initramfs-recovery.itb
    • 系统升级镜像 (Sysupgrade):文件名包含 …-squashfs-sysupgrade.itb
    • preloader.bin:我没刷,但没问题,应该是我是升级,而不是从原版系统刷
  2. 通过 SCP 将 Bootloader 文件传至 /tmp SCP 基本使用方法
  3. SSH 连接路由查看分区表,运行 cat /proc/mtd, 检查列表中是否有名为 “FIP”“fip” 的分区(大小通常为 00200000)
  4. 写入引导 mtd write /tmp/immortalwrt-25.12.0-xxx-u-boot.bin FIP (上一步查到的分区名是小写,最后的 FIP 也要改成小写 fip),如果是原版系统,还需要 mtd write /tmp/immortalwrt-mediatek-filogic-h3c_magic-nx30-pro-preloader.bin BL2
  5. 断电重启:提示写入成功后,直接拔掉路由器电源。此时旧系统已被破坏,无法正常开机,接下来必须通过 U-Boot 救砖模式注入新系统。(下面进入下一阶段,利用U-Boot 恢复模式安装新系统)
  6. 设置静态IP 192.168.1.254,子网掩码 255.255.255.0,网关 192.168.1.1,网线连接路由 LAN 口
  7. 触发 U-Boot界面:路由器在断电状态下,用卡针按住背部的 Reset(恢复)按钮不放,插上路由器电源,继续按住 Reset 键保持 10-15 秒左右(H3C NX30PRO 的状态灯是常绿的,不会变化,注意时间就行)
  8. 进入刷机网页:打开电脑浏览器,在地址栏输入 192.168.1.1 并回车。此时网页会展现出全新的 ImmortalWrt U-Boot 恢复页面。
  9. 刷入恢复固件    在 U-Boot 网页中点击“选择文件”,上传【恢复内核镜像 (Recovery)】文件。点击 Update / Flash。等待大约 1-2 分钟,路由器会自动重启。 (下面进入下一阶段:最终 Sysupgrade 写入与完成)
  10. 进入临时系统:在浏览器中访问 192.168.1.1,此时会进入一个界面简陋的临时 Recovery 系统(不需要密码,直接登录),这个时候会有两个提示,一个设置root密码,一个是提示上传sysupgrade 固件包(我的版本有的)
  11. 直接按提示进入【系统 (System) -> 备份/升级 (Backup / Flash Firmware)】,选择更新固件,上传系统升级镜像 (Sysupgrade)并点【刷写固件】
  12. 等待2-3分钟,将电脑网卡的 IP 地址重新改回 “自动获取 IP (DHCP)” (可选项)
  13. 重新进入 192.168.1.1,默认账户root,无密码,完成

正题:半砖与救回

上面的方案是没有问题的,但可能我选的版本跨度太大,根据信息 25.12 底层架构和系统组件有全面升级,不知道是否是这个原因,总之在第七步触发 U-Boot界面时出现了问题,无法正常进入刷机网页。

新砖状态

经过测试状态如下:

  • 能ping 192.168.1.1;TTL64;每20秒断1秒,很规律;
  • 无法连接至网页服务,测试超时
    • curl -I http://192.168.1.1
    • curl -k https://192.168.1.1
  • 端口不可用,测试超时
    • nc -zv 192.168.1.1 22
    • nc -zv 192.168.1.1 80
    • nc -zv 192.168.1.1 443

经过 AI 分析,认为 Bootloader 还活着,没完全变砖,U-Boot 启动了,Linux启没启动不知道,第四步 mtd write 命令只更新了 FIP 分区,而旧的 BL2 分区没动,导致两个核心引导组件不匹配。现在的状态是 U-Boot 卡在初始化环节,无法加载完整的系统,所以只有 ICMP 协议(ping)有响应,而 HTTP、SSH 等服务都无法工作

使用 TFTP 服务进行恢复

参考:

操作步骤

  1. 设置静态IP 192.168.1.254/24,网关 192.168.1.1,网线连接路由 LAN 口 (不同路由 tftp 服务器要求的服务器IP不一样)
  2. 准备Recovery恢复固件,这次我选的 24.10.0
  3. 准备 tftp 服务软件(强烈建议使用GUI界面的软件,有日志信息输出,我在 macOS 使用系统自带的 tftp 没有日志,导致完全不知道发生了什么)
  4. 将Recovery恢复固件名改成 openwrt-mediatek-filogic-h3c_magic-nx30-pro-initramfs-recovery.itb (需要用TFTP日志确认,包名非常重要,我因为这个卡了很久,也是因为上一步没日志导致的)
  5. 打开 tftp64 软件,点击打开”log viewer”选项卡,设置“Current Directory”目录为Recovery恢复固件所在目录,设置“Server Interface”为192.168.1.254所在接口 ( tftp64这好像是Windows 下的软件,我没用过)
  6. 触发 U-Boot界面:路由器在断电状态下,用卡针按住背部的 Reset(恢复)按钮不放,插上路由器电源,继续按住 Reset 键保持 10-15 秒左右(H3C NX30PRO 的状态灯是常绿的,不会变化,注意时间就行)
  7. 稍等一下,注意 ping 稳定了,http://192.168.1.1 应该就能访问了
  8. 继续之前的第十步,进入临时 Recovery 系统系统继续刷固件,是的,你没猜错, tftp 服务的作用就是半砖状态下(无法使用 SSH 和网页)刷 Recovery 固件的备用方案

以上的每一步都很重要,比如 ip 地址,tftp 的使用,固件的名字等,不熟悉的话每一步都是坑


题外: 建议使用带日志功能的 TFTP 服务端软件

macOS 自带 TFTP 功能,但默认是关闭的,我用的就是它。

但是建议使用有GUI界面的软件,它们一般有日志功能,可以知道路由那边请求的文件名是什么,我是因为用资料里的文件名尝试成功了,否则还要去找软件。

TFTP刷路由固件和 FTP/SSH 不一样,它是由路由向服务端(电脑)主动请求文件的:路由器(TFTP客户端)→ 启动时发送请求 → TFTP服务器(你的电脑)。路由器是主动方,你的电脑是被动提供文件,路由会自动”拉取”指定文件,所以文件名非常重要,如果你不知道,那么TFTP 服务器软件的日志就非常重要

我改完名字后尝试手动上传固件,报超时,但无意发现 ping 正常了,不再中断,尝试了一下网页,发现已经好了

下面是macOS 自带 TFTP 功能的使用方法

打开 Mac 的“终端”(Terminal),按顺序输入以下命令:

# 切换到 TFTP 目录(通常根目录下的 tftpboot 文件夹需要自己创建):
cd /private/tftpboot

# 把你下载好的 recovery.itb 文件复制到这个文件夹里。
sudo /PathToRecovery.itb /private/tftpboot/openwrt-mediatek-filogic-h3c_magic-nx30-pro-initramfs-recovery.itb

# 启动 TFTP 服务:
sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist

# 检查,如果显示 PID 数字,就说明服务已成功运行。
sudo launchctl list | grep tftp

# 路由器断电,按住路由器背后的 Reset 按钮通电,Reset 持续按 10-15 秒,路由开始找 tftp 服务器获取特定名字的固件

# 手动上传(不知道固件名字的时候我尝试过,报超时,没成功)
tftp 192.168.1.1
put openwrt-mediatek-filogic-h3c_magic-nx30-pro-initramfs-recovery.itb

# 用完关闭 sftp
sudo launchctl unload -F /System/Library/LaunchDaemons/tftp.plist

弄完好像发现也没有什么好玩的,我有一台Debian,各种设备上也配置了需要的环境,这个路由除了用了扩展一点点信号之外没有任何作用