> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sambanova.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# デバイス管理

本ガイドでは、SambaRack 内のデバイスのファームウェアの確認と更新について説明します。デバイスとは、ラックやノードに取り付けられた個々のコンポーネントのことで、BMC、スイッチ、PDU、シリアルターミナルなどが含まれます。

## コマンド

### ファームウェアバージョンの確認

デバイスのファームウェアバージョンを確認します。

```bash theme={}
snctl device firmware-check \
  (--rack-id <rack_id> | --group <group_name>) \
  --type <device_type> \
  [--index <index>]
```

**対象の指定:**

`--rack-id` または `--group` のいずれか一方の指定が必須です (同時には指定できません)。

| パラメータ | 説明 |
| - | - |
| `--rack-id <rack_id>` | 特定のラック内のデバイスを確認 |
| `--group <group_name>` | グループ内のすべてのラックのデバイスを確認 |

**デバイスタイプ:**

| タイプ | 説明 |
| - | - |
| `access_switch` | アクセススイッチ |
| `data_switch` | データスイッチ |
| `scs` | システムコントロールスイッチ (System Control Switch) |
| `bios` | BIOS |
| `bmc` | ベースボード管理コントローラー (Baseboard Management Controller; BMC) |
| `card` | カード/アダプター |
| `pdu` | 電源分配ユニット (Power Distribution Unit; PDU) |
| `xrdu` | XRDU |
| `all` | すべてのデバイスタイプ |

#### 単一ラック

**例 – 単一ラックの BMC ファームウェアを確認:**

```bash theme={}
snctl device firmware-check --rack-id 001 --type bmc
```

**出力例:**

```text theme={}
             Firmware Version Information
┏━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┓
┃ Rack     ┃ Component ┃ Status ┃ CURR     ┃ POR      ┃
┡━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━┩
│ Rack-001 │ BMC       │ PASS   │ 12.61.21 │ 12.61.21 │
└──────────┴───────────┴────────┴──────────┴──────────┘
```

**例 – ラック内のすべてのファームウェアを確認:**

```bash theme={}
snctl device firmware-check --rack-id 001 --type all
```

**出力例:**

```text theme={}
                                        Firmware Version Information
┏━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Rack     ┃ Component     ┃ Status ┃ CURR                        ┃ POR         ┃ OBMC_CURR ┃ OBMC_POR ┃ RDUC_CURR ┃ RDUC_POR ┃
┡━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩
│ Rack-001 │ ACCESS_SWITCH │ FAIL   │                             │             │           │          │           │          │
│ Rack-001 │ BIOS          │ PASS   │ R24_P1                      │ R24_P1      │           │          │           │          │
│ Rack-001 │ BMC           │ PASS   │ 12.61.21                    │ 12.61.21    │           │          │           │          │
│ Rack-001 │ CARD          │ PASS   │ snhni0 -> 228.1.111.0  PASS │ 228.1.111.0 │           │          │           │          │
│          │               │        │ snni0 -> 228.1.111.0  PASS  │             │           │          │           │          │
│          │               │        │ snni2 -> 228.1.111.0  PASS  │             │           │          │           │          │
│          │               │        │ snni4 -> 228.1.111.0  PASS  │             │           │          │           │          │
│          │               │        │ snni6 -> 228.1.111.0  PASS  │             │           │          │           │          │
│          │               │        │ snni8 -> 228.1.111.0  PASS  │             │           │          │           │          │
│          │               │        │ snni10 -> 228.1.111.0  PASS │             │           │          │           │          │
│          │               │        │ snni12 -> 228.1.111.0  PASS │             │           │          │           │          │
│          │               │        │ snni14 -> 228.1.111.0  PASS │             │           │          │           │          │
│ Rack-001 │ DATA_SWITCH   │ FAIL   │                             │             │           │          │           │          │
│ Rack-001 │ PDU_PDU_1     │ FAIL   │ 5.10.8                      │ 6.3.0       │           │          │           │          │
│ Rack-001 │ PDU_PDU_2     │ FAIL   │ 5.10.8                      │ 6.3.0       │           │          │           │          │
│ Rack-001 │ PDU_PDU_3     │ FAIL   │ 5.10.8                      │ 6.3.0       │           │          │           │          │
│ Rack-001 │ PDU_PDU_4     │ FAIL   │ 5.10.8                      │ 6.3.0       │           │          │           │          │
│ Rack-001 │ SCS           │ FAIL   │ 9.4.0.1R1                   │ 9.5.0.0R15  │           │          │           │          │
│ Rack-001 │ XRDU_XRDU_0   │ PASS   │                             │             │ 5.1.4-0   │ 5.1.4-0  │ 5.1.4     │ 5.1.4    │
│ Rack-001 │ XRDU_XRDU_1   │ PASS   │                             │             │ 5.1.4-0   │ 5.1.4-0  │ 5.1.4     │ 5.1.4    │
│ Rack-001 │ XRDU_XRDU_2   │ PASS   │                             │             │ 5.1.4-0   │ 5.1.4-0  │ 5.1.4     │ 5.1.4    │
│ Rack-001 │ XRDU_XRDU_3   │ PASS   │                             │             │ 5.1.4-0   │ 5.1.4-0  │ 5.1.4     │ 5.1.4    │
│ Rack-001 │ XRDU_XRDU_4   │ PASS   │                             │             │ 5.1.4-0   │ 5.1.4-0  │ 5.1.4     │ 5.1.4    │
│ Rack-001 │ XRDU_XRDU_5   │ PASS   │                             │             │ 5.1.4-0   │ 5.1.4-0  │ 5.1.4     │ 5.1.4    │
│ Rack-001 │ XRDU_XRDU_6   │ PASS   │                             │             │ 5.1.4-0   │ 5.1.4-0  │ 5.1.4     │ 5.1.4    │
│ Rack-001 │ XRDU_XRDU_7   │ PASS   │                             │             │ 5.1.4-0   │ 5.1.4-0  │ 5.1.4     │ 5.1.4    │
└──────────┴───────────────┴────────┴─────────────────────────────┴─────────────┴───────────┴──────────┴───────────┴──────────┘
```

#### グループ

**例 – グループ内のすべてのラックの BMC ファームウェアを確認:**

```bash theme={}
snctl device firmware-check --group g1 --type bmc
```

**出力例** (ラックごとに 1 行):

```text theme={}
             Firmware Version Information
┏━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┓
┃ Rack     ┃ Component ┃ Status ┃ CURR     ┃ POR      ┃
┡━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━┩
│ Rack-001 │ BMC       │ PASS   │ 12.61.21 │ 12.61.21 │
│ Rack-002 │ BMC       │ FAIL   │ 12.85.05 │ 12.61.21 │
└──────────┴───────────┴────────┴──────────┴──────────┘
```

> [!NOTE]
>
> デバイスに到達できない場合や設定が正しくない場合、該当デバイスのファームウェアチェックは、上の出力例のように `FAIL` ステータスで失敗します。カードデバイスの場合、`CURR` 列には各ネットワークインターフェースのファームウェアバージョンと、インターフェースごとの `PASS`/`FAIL` の比較結果が表示されます。`CARD` 全体のステータスは、すべてのインターフェースが POR バージョンと一致している場合にのみ `PASS` になります。

### ファームウェアの更新

ラックまたはグループ内のデバイスのファームウェアを更新します。

```bash theme={}
snctl device firmware-update \
  (--rack-id <rack_id> | --group <group_name>) \
  --type <device_type> \
  [--index <index_or_list>] \
  [--file <path> ...] \
  [--force]
```

**対象の指定:**

`--rack-id` または `--group` のいずれか一方の指定が必須です (同時には指定できません)。

| パラメータ | 説明 |
| - | - |
| `--rack-id <rack_id>` | 特定のラック内のデバイスを更新 |
| `--group <group_name>` | グループ内のすべてのラックのデバイスを更新 |

**デバイスタイプ:**

| タイプ | 説明 |
| - | - |
| `bios` | BIOS |
| `bmc` | BMC |
| `card` | カード/アダプター |
| `xrdu` | XRDU |

> [!NOTE]
>
> その他のデバイスタイプ (`access_switch`、`data_switch`、`pdu`、`scs`) は、現在ファームウェア更新に対応しておらず、CLI で拒否されます。

**任意のパラメータ:**

| パラメータ | 説明 |
| - | - |
| `--index <index_or_list>` | 更新対象のデバイスインデックス。XRDU の場合: 省略するとすべての XRDU が対象になります。単一のインデックス (0–7)、またはカンマ区切りのリスト (例: `0,2,5`) を指定できます。複数のインデックスを指定した場合、ラック内で並列に実行されます。 |
| `--file <path>` | ローカルのファームウェアファイル。XRDU の場合、名前が `xrdu` で始まる結合アーカイブ 1 つ (例: `xrdu-combined-5.1.4.tgz`)、または名前がそれぞれ `obmc` と `rduc` で始まる 2 つの分割アーカイブを指定します。2 ファイルを指定する場合はフラグを繰り返します: `--file obmc-5.1.4.tgz --file rduc-5.1.4.tgz`。省略した場合、ファームウェアは設定済みのアーティファクトストアからダウンロードされます。 |
| `--force` | チェックサム検証をスキップ |

#### 単一ラック

**例 – BMC ファームウェアを更新:**

```bash theme={}
snctl device firmware-update --rack-id 001 --type bmc
```

**例 – すべての XRDU を更新:**

```bash theme={}
snctl device firmware-update --rack-id 001 --type xrdu
```

**例 – 特定の XRDU を更新:**

```bash theme={}
snctl device firmware-update --rack-id 001 --type xrdu --index 0,2,5
```

**例 – ローカルファイルから XRDU ファームウェアを更新:**

```bash theme={}
snctl device firmware-update --rack-id 001 --type xrdu --index 3 \
  --file /path/to/obmc-5.1.4.tgz --file /path/to/rduc-5.1.4.tgz --force
```

#### グループ

**例 – グループ内のすべてのラックのファームウェアを更新:**

```bash theme={}
snctl device firmware-update --group g1 --type bmc
```

`--group` を使用すると、`snctl` はラックを順番に (1 ラックずつ) 処理し、各ラック内では個々のデバイス更新を並列に実行します。これにより同時実行数が抑えられます。たとえば、10 ラック × 各 8 XRDU のグループでも、80 個のジョブが同時に起動されることはありません。

更新中、`snctl` は以下を出力します。

* 各ジョブの完了時に、コンポーネントごとの `PASS`/`FAIL` 行
* 各ラックの完了後に、ラックごとのチェックポイント (`PASS`/`FAIL` の件数と、失敗があった場合のログファイルパスを含む)
* 実行全体を要約した最終的な **Firmware Update Results** テーブル

1 つ以上のデバイスで更新が失敗した場合、コマンドは非ゼロの終了コードで終了し、失敗した各ジョブの stdout、stderr、および instruction 出力のログパスを出力します。

## 実行順序

複数のコンポーネントを更新する場合、コンポーネント間に厳密な依存関係はありません。ただし、同じメンテナンスウィンドウ内で複数のタイプをアップグレードする場合は、次の順序に従ってください。

**THOR CARD → BIOS → BMC → XRDU**

| デバイス | 事前条件 | アップグレード後の操作 | 所要時間の目安 |
| - | - | - | - |
| THOR CARD | ホストの電源がオンであること | パワーサイクル、ファームウェアチェック | 約 25 分 (アップグレード約 5 分 + パワーサイクル約 20 分) |
| BIOS | ホストの電源がオンであること | ホストの電源オフ/オン、SR-IOV 確認、ノードのパワーサイクル、ファームウェアチェック | 約 1 時間 (アップグレード約 5 分 + SR-IOV 無効化と確認約 30 分 + パワーサイクル約 20 分) |
| BMC | なし | パワーサイクル、ファームウェアチェック | 約 25 分 (アップグレード約 5 分 + パワーサイクル約 20 分) |
| XRDU | ホストの電源がオフであること | 電源オン、ファームウェアチェック | 約 30 分 (アップグレード約 20 分 + 電源オン約 10 分) |

### 1. THOR CARD

**事前条件:** ホストの電源がオンである必要があります。

```bash theme={}
# Verify host is powered on
snctl node powerstate --node <node_id> --type host

# Power on host if needed
snctl node poweron --node <node_id> --type host
```

**更新:**

```bash theme={}
snctl device firmware-update --rack-id <rack_id> --type card
```

**アップグレード後:**

```bash theme={}
snctl node powercycle --node <node_id>
snctl device firmware-check --rack-id <rack_id> --type card
```

### 2. BIOS

**事前条件:** ホストの電源がオンである必要があります。

```bash theme={}
# Verify host is powered on
snctl node powerstate --node <node_id> --type host

# Power on host if needed
snctl node poweron --node <node_id> --type host
```

**更新:**

```bash theme={}
snctl device firmware-update --rack-id <rack_id> --type bios
```

**アップグレード後:**

BIOS 更新を適用した直後にノード全体をパワーサイクルすると、ホストの電源は入っているのに POST の手前で停止し、OS まで到達しない状態になることがあります。新しい BIOS を確実に適用するには、まずホスト単体を電源サイクルし、SR-IOV の BIOS 設定を確認してから、最後にノード全体をパワーサイクルしてください。

1. **ノード (ホストと XRDU) の電源をオフにします。** `--type` を省略すると、ホストと XRDU の両方が電源オフになります。

```text theme={}
snctl node poweroff --node <node_id>
```

2. **ホストの電源を入れ直します。** 新しい BIOS は、OS が起動する前の POST (Power-On Self-Test) 中に適用されます (コンソールに BIOS 設定の適用が表示され、ホストが自動的に 1 回再起動することがあります)。

```text theme={}
snctl node poweron --node <node_id> --type host
```

> [!WARNING]
>
> 注: 電源オン後、ホストが POST を完了して OS が起動するまで約 15 分待ってから、以下の SR-IOV チェックを実行してください。

3. **SR-IOV が無効であることを確認します。** BIOS で SR-IOV が**無効 (Disabled)** になっている必要があります (`PCIS007` が SR-IOV の属性です)。以下のチェックを Redfish 経由で順に実施してください。

**3a. BMC の接続情報を収集する:**\
以下の curl コマンドは BMC の Redfish API に認証するため、BMC の IP アドレス・ユーザー名・パスワードが必要です。

BMC の IP とユーザー名はノードのインベントリから取得します。snctl node show \<node\_id> を実行し、BMC の行 (IP 列と Username 列) から読み取ってください:

```shellscript theme={}
snctl node show <node_id>
```

BMC のパスワードは snctl のシークレットストアに保存されています。現在の値は次のコマンドで表示できます:

```shellscript theme={}
snctl secret get --device-type bmc --show-value
```

> [!WARNING]
>
> \--show-value はパスワードを平文で表示します。安全な環境でのみ使用し、出力は決して共有しないでください

> [!NOTE]
>
> 以下の `curl` コマンドがタイムアウトする、または認証エラーを返す場合は、`snctl node show <node_id>` と `snctl secret get --device-type bmc --show-value` で BMC の IP・ユーザー名・パスワードを再確認し、このホストから BMC の管理インターフェースに到達できることを確認してください。

**3b. 現在の値を確認する:**

```shellscript theme={}
curl -s -k -u <bmc_user>:<bmc_password> \
  https://<bmc_ip>/redfish/v1/Systems/Self/Bios \
  | jq '.Attributes.PCIS007'

#Example Output
"Enabled"
```

* `"Disabled"` と表示された場合、このステップは完了です。ステップ 4 に進んでください。
* `"Enabled"` と表示された場合は、ステップ 3c に進んでください。

**3c. SR-IOV を無効化する** **(リクエストが成功した場合、出力はありません):**

```shellscript theme={}
curl -s -k -u <bmc_user>:<bmc_password> \
  -X POST https://<bmc_ip>/redfish/v1/Systems/Self/Bios/SD \
  -H 'Content-Type: application/json' \
  -d '{"Attributes": {"PCIS007": "Disabled"}}'
```

**3d. 変更を適用する**ため、再度**ホストのみを再起動**します:

```shellscript theme={}
snctl node poweroff --node <node_id> --type host
snctl node poweron  --node <node_id> --type host
```

> [!WARNING]
>
> ホストの起動まで約 15 分待ってから、ステップ 3a を繰り返して `PCIS007` が `"Disabled"` になったことを確認し、その上で先に進んでください。まだ `"Enabled"` のままの場合はステップ 4 に進まず、ステップ 3c を 1 回だけ再実行してください。それでも値が変わらない場合は、SR-IOV が有効のままパワーサイクルするのではなく、作業を中止して SambaNova サポートにお問い合わせください。

4. **SR-IOV の無効化が確認できたら、ノード全体をパワーサイクルします。**

```bash theme={}
#Power Cycle the Node
snctl node powercycle --node <node_id> --type node

#Check the Firmware BIOS version
snctl device firmware-check --rack-id <rack_id> --type bios
```

### 3. BMC

**更新:**

```bash theme={}
snctl device firmware-update --rack-id <rack_id> --type bmc
```

**アップグレード後:**

```bash theme={}
snctl node powercycle --node <node_id> --type node
snctl device firmware-check --rack-id <rack_id> --type bmc
```

### 4. XRDU

**事前条件:** XRDU ファームウェアを更新する前に、ホストの電源がオフである必要があります。

```bash theme={}
# Verify host is powered off
snctl node powerstate --node <node_id> --type host

# Power off host if needed
snctl node poweroff --node <node_id> --type host
```

**更新:**

```bash theme={}
snctl device firmware-update --rack-id <rack_id> --type xrdu
```

**アップグレード後:**

```bash theme={}
snctl node poweron --node <node_id> --type node
snctl device firmware-check --rack-id <rack_id> --type xrdu
```

## 出力列

ファームウェアチェックの出力には、以下の列が含まれます。

| 列 | 説明 |
| - | - |
| Rack | ラックの識別子 |
| Component | デバイスタイプとインデックス |
| Status | ファームウェアが期待されるバージョンと一致する場合は `PASS`、それ以外は `FAIL` |
| CURR | 現在のファームウェアバージョン。カードデバイスの場合、各ネットワークインターフェースのバージョンと、インターフェースごとの `PASS`/`FAIL` の結果が表示されます。 |
| POR | Plan of Record (期待される) ファームウェアバージョン |
| OBMC\_CURR | 現在の OpenBMC ファームウェアバージョン (XRDU のみ) |
| OBMC\_POR | 期待される OpenBMC ファームウェアバージョン (XRDU のみ) |
| RDUC\_CURR | 現在の RDUC ファームウェアバージョン (XRDU のみ) |
| RDUC\_POR | 期待される RDUC ファームウェアバージョン (XRDU のみ) |
