mcpField
R
routeros-netinstall

routeros-netinstall

github.com/tikoci云与 DevOps8341 次安装5 天前更新
代码仓库

关于 routeros-netinstall

面向 MikroTik RouterOS 管理者的 Netinstall 操作技能,说明 Linux 命令行工具 netinstall-cli 的重装行为、参数和首次启动脚本顺序。内容涵盖保留配置的边界、网络条件及常见故障点。

主要功能

  1. 01说明 netinstall-cli 参数与重装模式
  2. 02区分配置脚本和模式脚本
  3. 03讲解 etherboot 与 BOOTP/TFTP 要求
  4. 04说明软件包顺序及架构匹配
  5. 05列出网络安装常见故障点

适用场景

  1. 01通过 etherboot 重新安装 RouterOS
  2. 02选择保留配置或使用空配置
  3. 03设置首次启动时的 device-mode
  4. 04排查设备未被 Netinstall 发现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tikoci/routeros-skills --skill routeros-netinstall

安装后在 Claude Code 中输入/routeros-netinstall确认已加载。

详细介绍

RouterOS Netinstall

本技能重点介绍官方 Netinstall / netinstall-cli 的行为。tikoci/netinstall 是一个实用的封装工具,也提供了有据可查的示例,但它只是驱动该工具的一种方式。

netinstall-cli 的作用

Netinstall 会在设备启动进入 etherboot 模式后,将 RouterOS 重新安装到设备上。Linux 工具 netinstall-cli 会监听 BOOTP 请求,然后发送 RouterOS 启动映像和所选的 .npk 软件包。

MikroTik 文档中有据可查的行为:

  • Netinstall 会重新格式化系统驱动器
  • 它不会擦除 RouterOS 许可证密钥
  • 它不会重置 RouterBOOT 设置
  • 它通过直接的 Layer 2 路径工作,使用 BOOTP/DHCP 端口和 TFTP
  • 它需要 root / sudo 权限

netinstall-cli 是 Linux 命令行版本。Windows GUI 提供的核心选项几乎相同。

命令语法

netinstall-cli [-r] [-e] [-b] [-m [-o]] [-f] [-v] [-c]
               [-k <keyfile>] [-s <userscript>] [-sm <modescript>]
               [--mac <mac>] {-i <interface> | -a <client-ip>} [PACKAGES...]

标志

标志含义
-r重新安装并应用默认配置阶段
-e使用空配置重新安装
-b丢弃当前安装的品牌软件包
-m在一次运行中启用重复安装
-o与 -m 配合使用时,每次运行中只对给定的 MAC 地址重新安装一次;单独使用时,其行为与普通的单次安装相同
-f忽略存储空间大小检查
-v输出详细信息
-c允许同一主机上运行多个 netinstall 实例
-k <keyfile>安装许可证密钥(.KEY)
-s <userscript>安装持久性配置脚本,替代 RouterOS 提供的默认配置脚本
-sm <modescript>安装一次性模式脚本,用于安装后的首次启动
--mac <mac>仅响应此 MAC 地址
-i <interface>绑定到特定接口
-a <client-ip>指定客户端 IP;若使用 -i,则会自动检测服务端 IP

硬性规则

  1. 系统软件包必须列在第一位。 将 routeros-...npk 放在软件包列表的首位。
  2. 必须具有 root 权限。 Netinstall 使用特权 BOOTP/TFTP 端口。
  3. 允许使用多架构软件包集。 Netinstall 会检测设备架构,并且只使用匹配的软件包。
  4. 不使用 -r 和 -e 表示“保留旧配置”。Netinstall 会下载当前配置数据库,重新格式化设备,然后将该配置上传回设备。此操作不会保留用户文件,也不会保留 Dude 或 User Manager 等数据库。

安装工作流和脚本顺序

官方工作流如下:

  1. 将设备置于 etherboot 模式
  2. 使用所需软件包和可选脚本运行 Netinstall
  3. 下次启动时,RouterOS 会执行初始配置步骤

对于 Linux netinstall-cli,首次启动时的重要执行顺序如下:

  1. 首先运行模式脚本(-sm)
  2. 之后运行自定义/默认配置
  3. 如果模式脚本更改了 device-mode,设备会在模式脚本完成后立即重启

这个顺序很重要:对于必须在默认或自定义配置之前完成的首次启动状态,应使用 -sm,尤其是 /system/device-mode 和 protected-routerboot。

配置脚本与模式脚本

文档中对持久化的 -s 脚本使用了多个名称:配置脚本、初始配置,以及显示在以下位置的自定义默认配置脚本:

/system/default-configuration/custom-script/print

这两种脚本类型有所不同:

功能配置脚本(-s)模式脚本(-sm)
用途替换 RouterOS 提供的默认配置脚本在配置脚本运行前执行一次性的首次启动操作
运行时机作为设备的默认配置阶段运行安装后首次启动时,在自定义/默认配置之前运行
持久性存储在设备上执行后自动删除
升级后仍保留是否
后续 /system reset-configuration重置后会再次运行不会保留供后续重置使用
版本要求RouterOS 7.x 文档中已提供需要 RouterOS 7.22+ 和 netinstall-cli 7.22+
超时120 秒120 秒
文件格式常规 RouterOS 导入文件(.rsc)常规 RouterOS 导入文件(.rsc)

其他有据可查的细节:

  • 从 RouterOS 7.10beta8 起,配置脚本可以读取 $defconfPassword 和 $defconfWifiPassword
  • MikroTik 文档明确建议在配置脚本执行前加入延迟
  • 如果路由器通过带配置脚本的 Netinstall 安装,之后执行 /system reset-configuration 时,会再次运行同一脚本,直到设备通过不带该脚本的 Netinstall 重新安装

软件包 URL 和命名

使用常规的 RouterOS 下载目录:

https://download.mikrotik.com/routeros/{version}/routeros-{version}-{arch}.npk
https://download.mikrotik.com/routeros/{version}/all_packages-{arch}-{version}.zip
https://download.mikrotik.com/routeros/{version}/netinstall-{version}.tar.gz

对于所有发布渠道,优先使用 download.mikrotik.com。将 cdn.mikrotik.com 视为备用镜像/缓存,而非主要版本规则。

架构后缀
架构软件包格式
armrouteros-7.22-arm.npk
arm64routeros-7.22-arm64.npk
mipsberouteros-7.22-mipsbe.npk
mmipsrouteros-7.22-mmips.npk
smipsrouteros-7.22-smips.npk
ppcrouteros-7.22-ppc.npk
tilerouteros-7.22-tile.npk
x86routeros-7.22.npk

**x86 的命名规则例外:**软件包文件名省略架构后缀,但所有软件包 ZIP 文件仍使用 x86,例如 all_packages-x86-7.22.zip。

下载并运行

官方 Linux 快速入门示例:

wget https://download.mikrotik.com/routeros/7.22/netinstall-7.22.tar.gz
tar -xzf netinstall-7.22.tar.gz

sudo ./netinstall-cli -r -i eth0 \
  routeros-7.22-arm64.npk \
  container-7.22-arm64.npk

强烈建议在 Netinstall 主机上设置静态 IP,例如:

sudo ifconfig eth0 192.168.88.2/24

常见脚本场景

空配置
sudo ./netinstall-cli -e -b -i eth0 \
  routeros-7.22-arm64.npk
保留旧配置
sudo ./netinstall-cli -i eth0 \
  routeros-7.22-arm64.npk

这只会保留配置数据库;不会保留存储在设备上的文件。

首次启动模式脚本
/system/device-mode update mode=advanced container=yes
sudo ./netinstall-cli -r -sm modescript.rsc -i eth0 \
  routeros-7.22-arm64.npk \
  container-7.22-arm64.npk

这是 -sm 的主要文档用途:在首次启动时设置设备模式,无需之后手动确认。

Etherboot 说明

设备必须处于 etherboot 模式,Netinstall 才能发现它们。常见的进入方式:

  • 重置按钮
  • 串行控制台(Ctrl+E)
  • RouterOS 设置 boot-device=try-ethernet-once-then-nand

Netinstall 使用 BOOTP/DHCP 端口,因此请避免在同一网段中使用其他 DHCP 源。文档还指出了两个常见故障情况:

  • 某些 USB 以太网适配器会导致额外的链路中断,设备因此无法被发现
  • DHCP snooping 可能会阻止数据包,除非将面向 Netinstall 的端口设为可信端口

非 x86 主机

netinstall-cli 是 Linux i386 ELF 二进制文件。

主机实用方案
x86_64 Linux直接运行
ARM/ARM64 Linux使用 QEMU 用户模式(qemu-i386-static 或 qemu-i386)
macOS在虚拟机中运行 Linux,并使用桥接网络

这正是 tikoci/netinstall 可作为参考封装发挥作用的地方:它会自动处理软件包下载、ARM 上的 QEMU,以及 macOS 虚拟机执行,但底层 Netinstall 行为仍与上文记录的 netinstall-cli 流程相同。

相关参考

评论

支持 Markdown