Topics で読み物として読む
この HLD は実装詳細を含みます。機能の概念・設定・運用を読み物として読みたい場合は Topics 14 章: Platform / Port / Optics を参照。
裏取りステータス: code-verified
sonic-utilities/fwutil/{main,lib,log}.py と sonic-platform-common/sonic_platform_base/component_base.py(get_firmware_version / install_firmware 等)の存在を確認。各 platform plugin と platform_components.json の正確な記述差はベンダ依存のため範囲外。
fwutil(platform component firmware の install / update / show)¶
概要¶
BIOS、CPLD、FPGA、BMC、SSD などのプラットフォームコンポーネントの ファームウェアを統一 CLI から操作 するためのユーティリティ1。狙い:
- ベンダ固有 utility に頼らず SONiC 標準コマンドで firmware を扱う
- バージョン情報の取得・install・update(次回起動時反映)を共通インタフェース化
- platform 側の plugin で実機固有の install ロジックを吸収する
動作仕様¶
flowchart LR
USER[管理者] --> CLI[fwutil CLI]
CLI --> PLAT["/usr/share/sonic/device/<platform>/\nplatform_components.json"]
CLI --> PLUG["plugin\n(platform/chassis/component の Python class)"]
PLUG -->|read version| HW[("BIOS / CPLD / FPGA / BMC / SSD")]
PLUG -->|install| HW
主要要素1:
platform_components.json: platform ごとに install 可能な component と既定 firmware path を宣言する manifest- plugin API:
Chassis.get_component_list()/Component.install_firmware(image_path)/Component.get_firmware_version()等を platform 実装が提供 - CLI サブコマンド:
show/install/update/show status等を統一フォーマットで提供
主な操作¶
| CLI | 用途 |
|---|---|
fwutil show status |
各 component の現行 firmware version |
fwutil show updates |
利用可能な update(manifest 由来) |
fwutil install chassis component <name> fw <path> |
image を直接 install |
fwutil update |
manifest に従って一括 update |
Boot type による動作差¶
ファームウェア書き換えは多くの platform で 再起動を伴う。fwutil は cold reboot を要求するもの、warm reboot を許容するもの、即時反映するものを plugin の declaration で区別する設計。詳細な順序制御は platform plugin に委ねられる。
制限事項¶
- platform plugin が必要: plugin 未実装の component は
fwutilから触れない - ASIC 本体の firmware は対象外: SAI/SDK 経由で扱う想定(fwutil は周辺コンポーネント向け)
- 手動 image 指定 vs manifest: 両者で受け付ける引数フォーマットが異なる
- 書き換え失敗の rollback: 多くは hardware 側保証(dual-bank) に依存
干渉する機能¶
- secure-upgrade / secure-boot: 署名検証や TPM 連携が必要な platform では fwutil の install 経路にも影響
- show platform:
show platform firmwareで同じ情報を見られる platform もある - smart-switch DPU graceful shutdown: DPU 側 firmware 更新時のシャットダウン整合
- kdump / fast-reboot: firmware install で求められる reboot 種別との相性
トラブルシューティング¶
- component が表示されない →
platform_components.jsonと plugin 実装の存在を確認 installが失敗 → image 形式(vendor-specific binary)と plugin の対応版を確認- 反映されない → 再起動種別(cold が必要)を満たしているか確認
コマンド例¶
firmware ユーティリティを確認する。
# Firmware
sudo fwutil show status
sudo fwutil show version
ls /usr/share/sonic/device/*/fw/ 2>/dev/null | head