添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 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

  • 待刷写镜像及工具的下载
  • ⚠️ 为了避免无线局域网的干扰,可以暂时将电脑的无线网络断开。

    启用 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*
  • 刷写 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
  • 将电脑设置为静态 IP
  • 「控制面板」→「网络和共享中心」→「更改适配器设置」→ 找到有线网卡,鼠标右键点击 →「属性」→ 双击「Internet 协议版本 4(TCP/IPv4)」→ 使用以下 IP 地址:

  • IP 地址: 192.168.1.254

  • 子网掩码: 255.255.255.0

  • 默认网关: 192.168.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

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

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

  • 等待完成 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 作者的教程:

  • 本地安装 ShellClash 的教程
  • 至此,本文完。