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. 03etherboot と BOOTP/TFTP 要件の解説
  4. 04パッケージ順序とアーキテクチャ適合の説明
  5. 05ネットワークインストールの主な失敗要因の提示

活用シーン

  1. 01etherboot モードからの RouterOS 再インストール
  2. 02設定を保持するか消去するかの選択
  3. 03初回起動時の `device-mode` 設定
  4. 04Netinstall がデバイスを検出しない原因の調査

インストール

コマンドをコピーしてターミナルで実行します。

$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 の設定はリセットしません
  • BOOTP/DHCP ポートとTFTPを使用する、直接のレイヤー 2経路で動作します
  • 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現在インストールされているブランディングパッケージを破棄します
-m1 回の実行で繰り返しインストールできるようにします
-o-m と併用すると、1 回の実行につき指定された MAC アドレスへの再インストールを 1 回だけ行います。単独では通常の 1 回限りのインストールとして動作します
-fストレージ容量のチェックを無視します
-v詳細な出力を表示します
-c同じホスト上で複数の netinstall インスタンスを許可します
-k <keyfile>ライセンスキー(.KEY)をインストールします
-s <userscript>RouterOS が提供するデフォルト設定スクリプトを置き換える、永続的な設定スクリプトをインストールします
-sm <modescript>インストール後の初回起動時に実行する、1 回限りのモードスクリプトをインストールします
--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 が変更されると、スクリプトの完了直後にデバイスが再起動します

この順序が重要です。デフォルト設定やカスタム設定よりも前に適用する必要がある初回起動時の状態、特に**/system/device-mode** とprotected-routerbootには、-sm を使用してください。

Configure Script と Mode Script

ドキュメントでは、永続的な -s スクリプトに configure script、initial configuration、次の場所に表示されるカスタムのデフォルト設定スクリプトなど、複数の名称が使われています。

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

この2種類のスクリプトは異なります。

機能Configure script(-s)Mode script(-sm)
目的RouterOS が提供するデフォルト設定スクリプトを置き換える設定スクリプトの前に、初回起動時の処理を1回実行する
実行タイミングデバイスのデフォルト設定ステージとしてインストール後の初回起動時に、カスタム/デフォルト設定の前に
永続性デバイスに保存される実行後に自動削除される
アップグレード後も保持はいいいえ
後続の /system reset-configurationリセット後に再実行される後続のリセット時には保持されない
バージョン要件RouterOS 7.x のドキュメントで利用可能RouterOS 7.22+ と netinstall-cli 7.22+ が必要
タイムアウト120秒120秒
ファイル形式通常の RouterOS インポートファイル(.rsc)通常の RouterOS インポートファイル(.rsc)

その他の確認できる詳細:

  • Configure script は RouterOS 7.10beta8 以降、$defconfPassword と $defconfWifiPassword を読み取れます。
  • MikroTik のドキュメントでは、configure script の実行前に遅延を入れることが明示的に推奨されています。
  • ルーターを configure script 付きで netinstall した場合、そのスクリプトなしで再度 netinstall するまで、後続の /system reset-configuration で同じスクリプトが再実行されます。

パッケージ 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

これは設定データベースのみを維持します。デバイスに保存されたファイルは保持されません。

初回起動時の Mode script
/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 に関する注意事項

Netinstall でデバイスを検出するには、事前にetherbootモードにする必要があります。一般的な起動方法は次のとおりです。

  • リセットボタン
  • シリアルコンソール(Ctrl+E)
  • RouterOS の設定 boot-device=try-ethernet-once-then-nand

Netinstall は BOOTP/DHCP ポートを使用するため、同じネットワークセグメント上に他の DHCP ソースがないようにしてください。ドキュメントでは、次の2つもよくある失敗例として挙げられています。

  • 一部の USB イーサネットアダプターでは余分なリンクの切断・再接続が発生し、デバイスを検出できないことがある
  • DHCP snooping によってパケットがブロックされることがある(Netinstall に接続するポートを信頼済みにしない場合)

x86 以外のホスト

netinstall-cli は Linux 用の i386 ELF バイナリです。

ホスト実用的な方法
x86_64 Linux直接実行する
ARM/ARM64 LinuxQEMU ユーザーモード(qemu-i386-static または qemu-i386)を使用する
macOSブリッジネットワークを使って Linux を VM 内で実行する

ここで、tikoci/netinstall は参考用のラッパーとして役立ちます。パッケージのダウンロード、ARM 上での QEMU の実行、macOS での VM 実行を自動化しますが、基盤となる Netinstall の動作は、上記で説明した netinstall-cli のフローと同じです。

関連資料

コメント