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

推荐订阅源

A
About on SuperTechFans
T
Threatpost
L
LangChain Blog
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
W
WeLiveSecurity
T
The Blog of Author Tim Ferriss
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
H
Hacker News: Front Page
P
Privacy International News Feed
Microsoft Azure Blog
Microsoft Azure Blog
Apple Machine Learning Research
Apple Machine Learning Research
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Attack and Defense Labs
Attack and Defense Labs
The Hacker News
The Hacker News
www.infosecurity-magazine.com
www.infosecurity-magazine.com
The Register - Security
The Register - Security
Cisco Talos Blog
Cisco Talos Blog
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
H
Help Net Security
U
Unit 42
S
Security Affairs
Engineering at Meta
Engineering at Meta
Forbes - Security
Forbes - Security
The Cloudflare Blog
S
Securelist
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Webroot Blog
Webroot Blog
量子位
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
Latest news
Latest news
SecWiki News
SecWiki News
H
Heimdal Security Blog
IT之家
IT之家
博客园 - Franky
Google DeepMind News
Google DeepMind News
小众软件
小众软件
A
Arctic Wolf
月光博客
月光博客
T
Tailwind CSS Blog
NISL@THU
NISL@THU
GbyAI
GbyAI
N
News and Events Feed by Topic

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,各种设备上也配置了需要的环境,这个路由除了用了扩展一点点信号之外没有任何作用