关于 routeros-netinstall
面向 MikroTik RouterOS 管理者的 Netinstall 操作技能,说明 Linux 命令行工具 netinstall-cli 的重装行为、参数和首次启动脚本顺序。内容涵盖保留配置的边界、网络条件及常见故障点。
主要功能
- 01说明 netinstall-cli 参数与重装模式
- 02区分配置脚本和模式脚本
- 03讲解 etherboot 与 BOOTP/TFTP 要求
- 04说明软件包顺序及架构匹配
- 05列出网络安装常见故障点
适用场景
- 01通过 etherboot 重新安装 RouterOS
- 02选择保留配置或使用空配置
- 03设置首次启动时的 device-mode
- 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 |
硬性规则
- 系统软件包必须列在第一位。 将
routeros-...npk放在软件包列表的首位。 - 必须具有 root 权限。 Netinstall 使用特权 BOOTP/TFTP 端口。
- 允许使用多架构软件包集。 Netinstall 会检测设备架构,并且只使用匹配的软件包。
- 不使用
-r和-e表示“保留旧配置”。Netinstall 会下载当前配置数据库,重新格式化设备,然后将该配置上传回设备。此操作不会保留用户文件,也不会保留 Dude 或 User Manager 等数据库。
安装工作流和脚本顺序
官方工作流如下:
- 将设备置于 etherboot 模式
- 使用所需软件包和可选脚本运行 Netinstall
- 下次启动时,RouterOS 会执行初始配置步骤
对于 Linux netinstall-cli,首次启动时的重要执行顺序如下:
- 首先运行模式脚本(
-sm) - 之后运行自定义/默认配置
- 如果模式脚本更改了 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 视为备用镜像/缓存,而非主要版本规则。
架构后缀
| 架构 | 软件包格式 |
|---|---|
arm | routeros-7.22-arm.npk |
arm64 | routeros-7.22-arm64.npk |
mipsbe | routeros-7.22-mipsbe.npk |
mmips | routeros-7.22-mmips.npk |
smips | routeros-7.22-smips.npk |
ppc | routeros-7.22-ppc.npk |
tile | routeros-7.22-tile.npk |
x86 | routeros-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 流程相同。
相关参考
- 官方文档:https://help.mikrotik.com/docs/spaces/ROS/pages/24805390/Netinstall
- 持久化配置脚本的重置行为:https://help.mikrotik.com/docs/spaces/ROS/pages/328155/Configuration%2BManagement#ConfigurationManagement-ConfigurationReset
- 版本/渠道和 URL 模式:
routeros-fundamentals/references/version-parsing.md - 封装程序/示例项目:https://github.com/tikoci/netinstall