抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

导语:本文将指引您如何在 H3C Magic NX30 Pro 安装官方 OpenWrt。因为这台路由器出厂就启用了 Telnet 服务,所以可以更方便的刷入第三方固件,但是您在此之前依然需要完成一些准备工作。

事前准备

  • 1 台有网口的电脑(如无网口,可配带网口的扩展坞)、2 条网线、1 台配置好 Web 管理密码的 H3C Magic NX30 Pro

  • 完成 NX30 Pro 的网络连接配置(因为需要在 NX30 Pro 上安装 ssh 的软件包,我们需要其能连接互联网)。故连接网线的方式:

    • ⑴. 如果您有一台在役(能上网)的旧路由器。网线 1 一端连接旧路由器的 LAN 口,对端连接 NX30 Pro 的 WAN 口;网线 2 一端连接 NX30 Pro 的 LAN 口,对端连接电脑(或扩展坞)的网口
    • ⑵ . 如果您只有一台 NX30 Pro,也一样的需要让其能正常访问网络。此时网线 1 一端是入户网口或者是光猫的网口,对端连接 NX30 Pro 的 WAN 口;网线 2 一端连接 NX30 Pro 的 LAN 口,对端连接电脑(或扩展坞)的网口
  • 启用电脑的 Telnet 服务

    Controll Panel」控制面板 → 「Programs」程序 → 「Turn Windows features on or off」关闭或启用 Windows 特性,确保以下功能项处于开启状态:

Telnet Client

  • 待刷写镜像及工具的下载
文件名 描述 下载
openwrt-*-preloader.bin BL2 页面
openwrt-*-bl31-uboot.fip FIP 同上
openwrt-*-initramfs-recovery.itb initramfs 镜像 同上
openwrt-*-squashfs-sysupgrade.itb Sysupgrade 镜像 同上
Tftpd64-4.64-setup.exe TFTP 工具安装包 链接

⚠️ 为了避免无线局域网的干扰,可以暂时将电脑的无线网络断开。


启用 ssh 服务

1
2
3
4
5
6
7
8
9
10
11
12
13
# 打开 cmd 窗口,Telnet 命令登录到设备终端
## 用户名为 H3C、密码为您此前初始配置的 Web 管理密码
telnet 192.168.124.1 99

# 获取 dropbear 软件包,并启用 ssh 服务
curl -o /tmp/dropbear.ipk https://downloads.openwrt.org/releases/packages-19.07/aarch64_cortex-a53/base/dropbear_2019.78-2_aarch64_cortex-a53.ipk
opkg install /tmp/dropbear.ipk
/etc/init.d/dropbear enable
/etc/init.d/dropbear start

# 配置 ssh 登录的密码,建议设置成和 Web 管理密码一致
passwd
# 设置完密码 exit 退出登录终端、或直接关闭窗口

分区备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 打开 cmd 窗口,ssh 命令登录到路由器终端
ssh root@192.168.124.1

# 查看分区表
root@NX30Pro:~# cat /proc/mtd
dev: size erasesize name
mtd0: 08000000 00020000 "spi0.0"
mtd1: 00100000 00020000 "BL2"
mtd2: 00080000 00020000 "u-boot-env"
mtd3: 00200000 00020000 "Factory"
mtd4: 00200000 00020000 "FIP"
mtd5: 04000000 00020000 "ubi"
mtd6: 00600000 00020000 "pdt_data"
mtd7: 00600000 00020000 "pdt_data_1"
mtd8: 00100000 00020000 "exp"
mtd9: 02580000 00020000 "plugin"

# 备份原厂固件
root@NX30Pro:~# dd if=/dev/mtd5 of=/tmp/mtd5_ubi
131072+0 records in
131072+0 records out
67108864 bytes (64.0MB) copied, 28.450201 seconds, 2.2MB/s
# 导出原厂固件至电脑
## 你可以使用 WinSCP 之类的 GUI 工具查看路由器的 /tmp 目录,导出至您的电脑
## 也可参考命令导出方法:新开一个 cmd 窗口,执行命令导出至指定目录
scp root@192.168.124.1:/tmp/mtd5_ubi D:\Downloads\backup\
# 删除 /tmp/mtd5_ubi
## 因为闪存空间有限,我们仍需要单独备份几个分区,故将已导出的固件删除
## 回到登陆 ssh 的终端窗口,执行命令
root@NX30Pro:~# rm /tmp/mtd5_ubi

# 单独备份(小)分区
root@NX30Pro:~# dd if=/dev/mtd1 of=/tmp/mtd1_BL2
2048+0 records in
2048+0 records out
1048576 bytes (1.0MB) copied, 0.390332 seconds, 2.6MB/s
root@NX30Pro:~# dd if=/dev/mtd3 of=/tmp/mtd3_Factory
4096+0 records in
4096+0 records out
2097152 bytes (2.0MB) copied, 0.786793 seconds, 2.5MB/s
root@NX30Pro:~# dd if=/dev/mtd4 of=/tmp/mtd4_FIP
4096+0 records in
4096+0 records out
2097152 bytes (2.0MB) copied, 0.798879 seconds, 2.5MB/s

# 导出分区镜像至电脑,像此前一样用 WinSCP 工具或用命令导出:
scp root@192.168.124.1:/tmp/mtd1_BL2 D:\Downloads\backup\
scp root@192.168.124.1:/tmp/mtd3_Factory D:\Downloads\backup\
scp root@192.168.124.1:/tmp/mtd4_FIP D:\Downloads\backup\

# 回到登陆完 ssh 的窗口,删除已导出镜像
root@NX30Pro:~# rm /tmp/mtd*

刷写过程

  1. 刷写 BL2 和 uboot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## 本文下载的镜像存储在电脑的 D:\Downloads\ 目录下
## 刷写前,用 WinSCP 或命令将用到的镜像导至路由器的 /tmp 目录下
# cmd 窗口执行命令参考:
scp D:\Downloads\openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-preloader.bin root@192.168.124.1:/tmp/
scp D:\Downloads\openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-bl31-uboot.fip root@192.168.124.1:/tmp/

# 回到 ssh 的终端窗口,刷写到各自分区
# 发现 BL2 分区提示不能写入,这个可以暂时忽略
root@NX30Pro:~# cd /tmp/

root@NX30Pro:/tmp# mtd write *-preloader.bin BL2
Could not open mtd device: BL2
Can't open device for writing!

root@NX30Pro:/tmp# mtd write *-bl31-uboot.fip FIP
Unlocking FIP ...

Writing from openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-bl31-uboot.fip to FIP ...
root@NX30Pro:/tmp# client_loop: send disconnect: Connection reset
  1. 将电脑设置为静态 IP

「控制面板」→「网络和共享中心」→「更改适配器设置」→ 找到有线网卡,鼠标右键点击 →「属性」→ 双击「Internet 协议版本 4(TCP/IPv4)」→ 使用以下 IP 地址:

  • IP 地址: 192.168.1.254

  • 子网掩码: 255.255.255.0

  • 默认网关: 192.168.1.1

填写完成,确认保存即可。

  1. 将文件 openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-initramfs-recovery.itb 重新命名openwrt-mediatek-filogic-h3c_magic-nx30-pro-initramfs-recovery.itb

  2. 安装 tftpd64 ,然后将 openwrt-mediatek-filogic-h3c_magic-nx30-pro-initramfs-recovery.itb 移动tftpd64 安装目录,双击其主程序 tftpd64.exe 启动

  3. 物理断电重启下路由器,即可看到程序执行 tftp 恢复的进度条,可通过 tftpd64 程序的 Log viewer查看日志,判断是否执行成功。

  4. 等待完成 tftp 恢复后设备完成启动(可以 ping 下 192.168.1.1 ,通了就说明起来了),最后 ssh 登录设备并执行 sysupgrade 完成固件刷写

1
2
3
4
5
6
7
8
9
10
11
12
# 将 sysupgrade 镜像传输至路由器的 /tmp 目录,cmd 窗口执行命令:
scp D:\Downloads\openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-squashfs-sysupgrade.itb root@192.168.1.1:/tmp/

# tftp 恢复写入了一个用于临时过渡的 OpenWrt 固件,我们可以通过 ssh 命令登录其终端:
ssh root@192.168.1.1

# 刷写 OpenWrt 固件
root@OpenWrt:~# sysupgrade -F -n /tmp/*-squashfs-sysupgrade.itb
Tue Oct 24 12:31:18 UTC 2023 upgrade: Commencing upgrade. Closing all shell sessions.
Command failed: Connection failed
root@OpenWrt:~# Connection to 192.168.1.1 closed by remote host.
Connection to 192.168.1.1 closed.

经过上述操作,我们就完成了 OpenWrt 官方固件的刷写

重新刷写此前未刷入的 BL2 分区

虽然不知道 BL2 分区的作用,但是 OpenWrt 的首次引入设备支援的 commit 的作者有提到,强迫症的我还是想要刷进去,我们可以这么做:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 清除临时过渡固件的密钥信息,否则 ssh 登录或用 scp 命令传输文件会报错
ssh-keygen -R 192.168.1.1

## 将需要用到的镜像导至路由器的 /tmp 目录下
# cmd 窗口执行命令参考:
scp D:\Downloads\openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-preloader.bin root@192.168.1.1:/tmp/

# ssh 登录到设备终端
ssh root@192.168.1.1

# 同步仓库源,安装 kmod-mtd-rw 内核模块
root@OpenWrt:~# opkg update && opkg install kmod-mtd-rw
# 将分区配置为可读写
root@OpenWrt:~# insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1

# 刷写 BL2 分区
root@OpenWrt:~# mtd write /tmp/*-preloader.bin BL2
Unlocking BL2 ...

Writing from openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-preloader.bin to BL2 ...

# 对了,OpenWrt 默认没设置 ssh / Luci Web 的密码。可以命令设置下:
root@OpenWrt:~# passwd

# 重启路由器
root@OpenWrt:~# reboot

最后,各位不要忘记将电脑的网络设置改回自动获取 IP 哦。

Luci 主题的安装

1
2
3
4
5
6
7
8
9
# ssh 登录到设备终端
ssh root@192.168.1.1

# 安装 luci-theme-material 主题
opkg update
opkg install luci-theme-material

# 安装 Luci 中文语言包(可选)
opkg install luci-i18n-base-zh-cn

ShellClash 的安装

至于为什么不安装 OpenClash 或其他之类的工具?那是因为它们太占用闪存空间了,加之目前 OpenWrt 的闪存布局暂时给 /overlay 的大小就 22.2 MB,能装软件包的挂载分区就小的可怜。至于如何安装及使用 ShellClash 不是本文的重点,请直接移步 ShellClash 作者的教程:

至此,本文完。

评论