Skip to content
cccskills
FreePublished on GitHub

irmc-bios-raid

Fujitsu iRMC S4 (TX1320 M3 等) の電源・BIOS・RAID 操作 + BIOS 設定リファレンス。

Redfish (HTTPS + SECLEVEL=0) 経由の電源/ブート操作 + iRMC Web UI/KVM 経由の手動 BIOS/RAID 操作手順 + 全 BIOS 設定項目の網羅リファレンス (bios/)。training-tx1320 対応。

The English summary is being prepared. Showing the original description.

Works withPlaywright
See how to install

Files included (12)

  • SKILL.md91.9 KB
  • bios/_capture-runbook.md6.8 KB
  • bios/advanced.md51.1 KB
  • bios/boot.md7.7 KB
  • bios/index.md19.4 KB
  • bios/main.md3.7 KB
  • bios/power.md3.0 KB
  • bios/raid-avago-hii.md5.6 KB
  • bios/save-exit.md2.0 KB
  • bios/security.md6.7 KB
  • bios/server-mgmt.md3.0 KB
  • reference.md22.9 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

iRMC S4 BIOS / RAID 操作スキル

Fujitsu PRIMERGY サーバの iRMC S4 BMC を Redfish (HTTPS + 古い DH 鍵対策) 経由で操作する。 本セッション (2026-05-16) 時点で対応している唯一のマシンは training-tx1320 (10.254.254.9, 一時設置・クラスタ非参加)。

サブコマンド用途自動化レベル
info <config>接続情報・PowerState・BIOS バージョン・ライセンス確認完全自動
power status <config>電源状態取得完全自動
power on <config>電源 On (ResetType=On)完全自動
power forceoff <config>強制 Off完全自動
power cycle <config> [wait=15]ForceOff → wait → On完全自動
bios enter <config>再起動して BIOS Setup へ (BootSourceOverrideTarget=BiosSetup)完全自動 (POST 中の F2 不要)
bios screenshot <config> <out.jpg>OEM FTSComputerSystem.Screenshot (Make→Preview)半自動 (BIOS Setup 中など static screen で AllowableValues に Preview が出ない場合あり)
bios backup <config> <out.xml>WinSCU XML をダウンロード (boot phase で実行)完全自動 (scripts/irmc-bios.py backup)
bios restore <config> <in.xml>WinSCU XML をインポート (boot phase で適用)完全自動 (scripts/irmc-bios.py restore、 multipart/form-data data=@xml)
bios show <xml> [regex]XML 内の <supportedSetting> を一覧完全自動
bios set <xml> <id> <value>XML 内の特定 id の <value> を書換完全自動
bios diff <a.xml> <b.xml>2 つの XML 間の値差分表示完全自動
bios apply-config <config>config['bios_settings.supported'] の値を XML に書き込み → restore完全自動
bios verify <config>現在の BIOS 設定が config と一致するか確認完全自動
raid status <config>RAID コントローラ・VD・PD 表示手動 (iRMC Web UI で確認、手順ガイドのみ)
raid create-r10 <config>4 本選んで RAID10 VD 作成⚠️ 部分動作 (2026-05-18 #7 s-peaceful-hinton)。 #6 (p-effervescent-kahn) で SMB silent failure 真因確定 + 修正 → CD boot + kernel boot まで成功。 installer の cdrom-detect で iRMC Virtual CD が見つからない問題に対し、 #7 で kernel cmdline (GRUB legacy / ISOLINUX / EFI 全 3 経路) + preseed.cfg.template に cdrom-detect/try-usb=true cdrom-detect/scan=true hw-detect/load_media=false を仕込んで再試行 → 効かず。 iRMC OEM CDImage は GRUB レベル (BIOS USB CD-ROM emulation) では読めるが、 Linux 起動後の installer cdrom-detect の udev/sysfs ルールにマッチしない。 preseed.cfg 自体も /cdrom/preseed.cfg から load される設計上 cdrom-detect 失敗の時点で適用されない (chicken-and-egg)。 次セッション候補 (優先順): (1) initrd preseed 注入 + preseed/early_command で自前 mount /dev/sr0 /cdrom、 (2) iRMC HDImage (USB Mass Storage) 経由配信、 (3) PXE / hd-media 経路。 詳細は本 SKILL.md 末尾の「RAID10 storcli + preseed 経路」セクション + report 2026-05-18_025914_tx1320_raid10_cdrom_detect_cmdline_failed.md を参照
raid delete <config> <vd>VD 削除手動 (同上)

詳細プロトコル・落とし穴・スクリーンショットは reference.md を参照。

BIOS 設定リファレンス (bios/)

TX1320 M3 (D3373-B1x) の 全 BIOS 設定項目 (91 設定 + 各タブ/サブメニュー) を、選択肢・デフォルト・ 現在値・ヘルプ・リスクまで網羅したリファレンスを bios/index.md に置く (タブ単位で分割)。 値は実機 WinSCU XML 由来、タブ所属と存在は KVM 確認で確定する。各タブ: main / advanced / security / power / server-mgmt / boot / save-exit / RAID HII。再生成・KVM 確認手順は bios/_capture-runbook.md。

前提条件

  • 対象: training-tx1320 (10.254.254.9, iRMC S4 FW 9.08F, claude index 4)
  • config: config/training_tx1320.yml
  • 認証: claude / Claude123 (BMC ユーザ)
  • ライセンス: KVM + MEDIA (Permanent)、eLCM なし → Redfish 経由 RAID 操作不可
  • ipmitool は SOL 用 (本 skill では電源・BIOS は Redfish のみ使用)

Redfish 接続規約

iRMC S4 は古い DH 鍵で TLS handshake するため、curl のオプションが必要:

curl -k --ciphers 'DEFAULT@SECLEVEL=0' -u claude:Claude123 https://10.254.254.9/redfish/v1/...

scripts/bmc-power.sh は環境変数で対応済み:

BMC_SCHEME=https \
BMC_CURL_OPTS='--ciphers DEFAULT@SECLEVEL=0' \
POWER_ON_RESET_TYPE=On \
    ./scripts/bmc-power.sh <command> 10.254.254.9 claude Claude123

iRMC ResetType メモ: AllowableValues は PowerState で変わる。Off→On 遷移は "On" を使う (default で OK)。PushPowerButton は電源 On 状態で物理ボタンを pulse する用途のみ。

config から自動で読み込んで export するヘルパーパターン (skill 内で利用):

BMC_IP=$(./bin/yq '.bmc_ip' config/training_tx1320.yml)
BMC_USER=$(./bin/yq '.bmc_user' config/training_tx1320.yml)
BMC_PASS=$(./bin/yq '.bmc_pass' config/training_tx1320.yml)
export BMC_SCHEME=$(./bin/yq '.bmc_scheme' config/training_tx1320.yml)
export BMC_CURL_OPTS=$(./bin/yq '.bmc_curl_opts' config/training_tx1320.yml)
export POWER_ON_RESET_TYPE=$(./bin/yq '.power_on_reset_type' config/training_tx1320.yml)
./scripts/bmc-power.sh status "$BMC_IP" "$BMC_USER" "$BMC_PASS"

サブコマンド: info

接続性と基本情報を一括取得。

# 例
BMC_IP=10.254.254.9
USR=claude; PSW=Claude123
CURL='curl -sS -k --ciphers DEFAULT@SECLEVEL=0 --max-time 30 -u'
$CURL "$USR:$PSW" "https://$BMC_IP/redfish/v1/Systems/0" | grep -E '"Manufacturer"|"Model"|"BiosVersion"|"PowerState"|"SerialNumber"|"TotalSystemMemoryGiB"'
$CURL "$USR:$PSW" "https://$BMC_IP/redfish/v1/Managers/iRMC" | grep -E '"Model"|"FirmwareVersion"'
$CURL "$USR:$PSW" "https://$BMC_IP/redfish/v1/Managers/iRMC/Oem/ts_fujitsu/iRMCConfiguration/Licenses"

期待出力 (training-tx1320):

  • Manufacturer: FUJITSU / Model: PRIMERGY TX1320 M3 / BIOS V5.0.0.11 R1.22.0 / Memory 24 GiB
  • iRMC S4 FW 9.08F
  • Licenses: KVM, MEDIA (Permanent)

サブコマンド: power

scripts/bmc-power.sh を呼ぶ。電源 On は ResetType=On (デフォルト) で OK。

# Status
BMC_SCHEME=https BMC_CURL_OPTS='--ciphers DEFAULT@SECLEVEL=0' \
    ./scripts/bmc-power.sh status 10.254.254.9 claude Claude123
# → On / Off

# Power on (Off 状態から On へ)
BMC_SCHEME=https BMC_CURL_OPTS='--ciphers DEFAULT@SECLEVEL=0' \
    ./oplog.sh ./scripts/bmc-power.sh on 10.254.254.9 claude Claude123

# Force off
BMC_SCHEME=https BMC_CURL_OPTS='--ciphers DEFAULT@SECLEVEL=0' \
    ./oplog.sh ./scripts/bmc-power.sh forceoff 10.254.254.9 claude Claude123

# Cycle (forceoff → wait 20s → on)
BMC_SCHEME=https BMC_CURL_OPTS='--ciphers DEFAULT@SECLEVEL=0' \
    ./oplog.sh ./scripts/bmc-power.sh cycle 10.254.254.9 claude Claude123 20

サブコマンド: bios enter

Redfish PATCH で BootSourceOverrideTarget を BiosSetup に設定 → 再起動 → BIOS Setup に入る。 F2 キー送信不要 (POST 自動で BIOS Setup に分岐する)。

BMC_SCHEME=https BMC_CURL_OPTS='--ciphers DEFAULT@SECLEVEL=0' \
    ./scripts/bmc-power.sh boot-override 10.254.254.9 claude Claude123 BiosSetup UEFI
BMC_SCHEME=https BMC_CURL_OPTS='--ciphers DEFAULT@SECLEVEL=0' \
    ./oplog.sh ./scripts/bmc-power.sh cycle 10.254.254.9 claude Claude123 20

注意: BootSourceOverrideEnabled は iRMC の AllowableValues が Once / Continuous のみ (Disabled は別フィールド)。Once で 1 回限定。

サブコマンド: bios screenshot

OEM FTSComputerSystem.Screenshot で現在の画面を取得 (POST 中・BIOS Setup 中・OS 起動後の画面が見える)。

BMC_IP=10.254.254.9
USR=claude; PSW=Claude123
# 1. Trigger screenshot
curl -sS -k --ciphers 'DEFAULT@SECLEVEL=0' -u "$USR:$PSW" \
    -X POST "https://$BMC_IP/redfish/v1/Systems/0/Actions/Oem/FTSComputerSystem.Screenshot" \
    -H 'Content-Type: application/json' \
    -d '{"FTSScreenshotType":"Make"}'
# 2. Download image (path documented in reference.md)

サブコマンド: bios backup / bios restore / bios apply-config

OEM FTSBios.BSPBRBackup / FTSBios.BSPBRRestore で WinSCU XML を読み書き。Bios.Attributes={} なため、設定変更はこの XML 経由で行う。scripts/irmc-bios.py でラップ済み。

Backup フロー (新規 backup を取得して download する場合)

  1. POST FTSBios.BSPBRBackup → 任意 Task /N (TaskState=Pending)
  2. Task は BIOS Boot Phase で実行される — MessagesOEM に "BSPBR boot phase pending, you may need to reboot host" → サーバを cycle/forceoff/on で再起動
  3. Boot Phase が始まると Task は Running BSPBRBootInProgress → 完了で Completed BSPBRSuccess
  4. /Systems/0/Bios の IsBspbrFileAvailable: true を確認
  5. POST FTSBios.BSPBRSaveBackupToFile (Content-Type: application/json, body {}) → HTTP 200 で application/octet-stream の WinSCU XML が返る
  6. 末尾に NUL bytes が付いてくる → Python は text.rstrip(b"\x00\r\n\t ") で除去してから parse する

Restore フロー

  1. WinSCU XML を編集 (<supportedSetting> の <value> を書換)
  2. POST FTSBios.BSPBRRestore → Content-Type: multipart/form-data、 field 名 data 必須 (-F "data=@bios.xml")
    • 他の Content-Type は 406 Not Acceptable (Fujitsu.1.0.ContentTypeNotSupported)
    • field 名が違うと 400 (Fujitsu.1.0.DeclaredDataNotPresent)
  3. HTTP 202 + Task /N (Pending)
  4. cycle で boot phase → 適用 → Completed BSPBRSuccess
  5. 2 度目以降の SaveBackupToFile は 404 — restore で backup file が「消費」される。再度新規 backup task を投入する。

apply-config フロー (推奨)

# config 例:
# bios_settings:
#   supported:
#     BootOptionFilter: "UEFI only"
#     LaunchStorageOpRomPolicy: "UEFI only"
#     LaunchPxeOpRomPolicy: "UEFI only"
#     LaunchVideoOpRomPolicy: "UEFI only"

./scripts/irmc-bios-raid-setup.sh setup-bios config/training_tx1320.yml --cycle
./scripts/irmc-bios-raid-setup.sh verify-bios config/training_tx1320.yml

実機検証済み: training-tx1320 で BootOptionFilter 等の Legacy→UEFI 切替が確実に動作する (2026-05-16)。

XML スキーマ

WinSCU XML には 2 つのセクションが含まれる:

  • <settingDefinitions> — 各 setting の 定義 (id, name, possibleValues, default, current)。 comment="setting definition part only, does not restore anything" の通り、 restore 対象外。
  • <configuration> 内の <supportedSetting> — restore で適用される現在値 (id, name, setupItemID, value)。 <value> を書き換えて restore する。

詳細は reference.md の "WinSCU XML schema" を参照。

サブコマンド: raid (BIOS UEFI HII 手動操作のガイド)

iRMC S4 の Redfish Storage Members は空、OEM Raid は OOBRaidEventsEnabled しか持たず、eLCM ライセンスもない (training-tx1320)。BIOS Setup → Advanced → AVAGO MegaRAID Configuration Utility (UEFI HII) を HTML5 KVM で操作するのが唯一の経路。

⚠️ VGA frame buffer 問題 (2026-05-16 #69 続報)

確定: BMC Manager Reset では改善しない。 2026-05-16 #69 で Manager.Reset GracefulRestart (HTTP 204) → BMC 復帰 187s → BIOS Setup 再進入を試したが、 canvas は引き続き黒で frame buffer が更新されない。

ただし OEM Screenshot (FTSComputerSystem.Screenshot) は 3 回に 1 回程度成功することが判明。 これを retry で穴埋めすれば実用的な画面取得が可能 (scripts/irmc-oem-screenshot.sh 2026-05-16 改修済、 wall-clock 化 + 4 attempts retry, --max-time 15)。

✅ Playwright KVM 自動化 解決 (2026-05-17 golden-candle セッションで実証)

scripts/irmc-kvm-interact.py 改修済み。 default で動作する新パス + 旧パス温存:

旧パス (温存)新パス (default)
canvas.toDataURL() — WebGL preserveDrawingBuffer:false で黒locator.screenshot() — composed frame を取得
click(force=True)locator.click(force=False) — hit-test 経由
(なし)キー送信に dispatch-event フォールバック (document.dispatchEvent(KeyboardEvent)) も実装済み

新 CLI flag: --capture-mode={locator,canvas} / --focus-mode={hittest,force} / --key-mode={playwright,dispatch-event}。 旧経路は --capture-mode=canvas 等で利用可能。

🎯 KVM screenshot は必ず --capture-mode=locator (default) を使うこと。 legacy scripts/irmc-kvm-screenshot.py は canvas mode 固定で WebGL 黒画 artifact を出す (Phase 3 s-rustling-melody 2026-05-22 で 11857 B × 3 同一 PNG を「VGA 全黒」と誤判定、 Phase 4 s-vast-hare 2026-05-22 で訂正)。 canvas mode artifact のサイン: 撮った PNG が全部完全同 size (sha256 一致) で 11857 B 前後。 これが出たら即 locator mode に切り替える。 ただし host が実際に kernel hang していて VGA が更新されない場合も同 size 連続になるため (Phase 4 で BIOS POST 12833 B × 4、 凍結 4489 B × 2)、 単に同 size 連続 = artifact とは限らない。 識別ポイント: canvas mode artifact は 全 5 枚で完全同 sha256、 実 host hang は POST 段階と hang 段階で sha256 が分かれる。

✅ 2026-05-17 #2: cursor_y adaptive navigation (golden-dongarra セッション)

scripts/irmc-kvm-interact.py の Playwright 路線を更に強化し、 PIL でカーソル位置を pixel-level 検出する nav_cursor_to_y(target_y, max_press, tol) を tmp/iter/_util.py に実装。 size fingerprint だけでは隣接 menu items を区別できない (16 items in BIOS Advanced tab で size 差 7-30 bytes 程度) ことが判明、 pixel-level cursor detection が解決策。

確定知見 (詳細→ [report/2026-05-17_…_robustness.md]):

検証項目結果
Partial-access dialog dismiss_dismiss_partial_access_dialog(vp) — HTML overlay の Ok ボタンを JS click。 旧 KVM session が master の場合に発生
Exit-Without-Saving dialogキー n は Aptio で無効。 ArrowRight (No) + Enter で dismiss
BIOS top-level tab detection17 fingerprints (各 tab の各カーソル位置) を size + cursor_y で識別
safe_navigate_to_advanced_tab()Esc + dialog dismiss → ArrowLeft/Right で adaptive にタブ移動
AVAGO row 到達nav_cursor_to_y(target=393) で 100% 成功 (iter 3b PASS)
AVAGO Main → Cfg Mgmt navigationcursor_y mapping (Main Menu y=70 base, +19 per item) で stable
個別 drive toggle 信頼性問題解消: nav_cursor_to_y で silent drops を自動補正 (ArrowDown が dropped → 再 press)
Clear Configuration scaffoldingclear_configuration(vp, sdir) 実装。 ただし Confirm field の dialog cursor 検出に課題あり (要更なる pixel detection 改善)
RAID 10 VD0 commit未完遂。 form 内の 複数 ► マーカー問題 (form には「navigable 標識」として ► が複数表示され、 active cursor 検出が混乱)

カーソル検出関数 (tmp/iter/_util.py:detect_cursor_row):

def detect_cursor_row(png_path, x_min=4, x_max=30, y_min=60, y_max=720,
                       cursor_pixel_value=255, min_cursor_run=4):
    """カーソル ► の bright (255) pixel 連続を検出。
    Menu items: cursor at x=8-14; Dialog form fields: cursor at x=24-26
    """

nav_cursor_to_y(vp, sdir, target_y, max_press=25, tol=10, ...) は target_y に着地するまで ArrowDown を adaptive に押し、 overshoot 時は ArrowUp に切替え。 silent drops に自動対応。

まだ未解決 (次セッション継続必要):

  1. Create VD form の active cursor 検出 — form には複数の ► マーカーが表示され、 detect_cursor_row が active cursor を正しく識別できない。 → 解決案: ► glyph 検出ではなく「行の白背景ハイライト」(background color) を検出。 bright_pixels count を per-row で計算、 highlighted row を特定する関数に置換
  2. Clear Config dialog の field navigation — Confirm field の cursor detection が不安定
  3. 2-span 構成自動化 — RAID 10 選択後の form layout (Span 0 / Add More Spans / Span 1) の cursor_y マッピング未取得

✅ 2026-05-17 #3: active-cursor highlight detection + NumpadAdd + ArrowDown skip 発見 (partitioned-beaver セッション)

tmp/iter/_util.py に以下を追加実装:

  • detect_active_cursor_row(png_path, x_min=30, x_max=400, bg_threshold=200, min_bright_cols=30, y_min=60, y_max=720, merge_gap=4) — 行の白背景ハイライト (highlight band) を検出。 各 y で bright pixel cluster 数を計測し、 最も bright count が大きい cluster の center y を返す
  • nav_cursor_to_y(..., detector='caret'|'highlight', settle_ms=0) — caret/highlight を選択 + reach 後 settle 待機 + drift 補正

実機検証 (training-tx1320) で判明した重大事実:

観測結論
detect_active_cursor_row が form 内で常に y=128 (Select RAID Level の [RAID0] 値表示) を pickingcursor が他行にいても [RAID0] の cluster (y=121..132, max bright cols=110) が brightest として誤検出される。 form 内では highlight detection 単独で cursor 位置確定は不可能
form_open 直後 ArrowDown 1500ms wait → size=18474 → 実機 cursor は y=147 (Select Drives From)Aptio が Select RAID Level (y=128) をスキップ。 form_open (cursor on Save Config TOP y=88) → ArrowDown 1 で 2 行飛びで Select Drives From に着く
ArrowUp 1 from y=88 → cursor at y=411 (Emulation Type)wrap-around to form の bottom
vp.keyboard.press("+") / chord Shift+Equal / type("+")どれも Aptio に届かず size 不変
vp.keyboard.press("NumpadAdd")届く。 Select Drives From で押すと [Unconfigured Capacity] ↔ [Free Capacity] トグル (size 18474↔18436 振動)
ArrowDown でカーソル位置が画面表示と Aptio 内部状態でずれるiRMC KVM frame buffer の lazy refresh + Aptio key event queue の race condition。 settle_ms=1500-3000 でも完全解消せず
cursor 位置の確実な検出手段NumpadAdd を 1 回押して何の値が変わったかを screenshot size + 画像比較で同定するのが最も信頼性高い (highlight detection は誤検出多発)

確定した CURSOR_Y_CREATE_VD_FORM (RAID0 default, scout iter08_scout_run/p2_raid0_*.png から):

行y項目navigable?
step 088Save Configuration (TOP)yes
step 1128Select RAID Level [RAID0]No (Aptio skip)
step 2147Select Drives From [Unconfigured Capacity]yes
step 3166Select Drivesyes (submenu)
step 4204Virtual Drive Nameyes
step 5223Virtual Drive Sizeyes
step 6259Strip Size [256 KB]yes
step 7280Read Policy [Read Ahead]yes
step 8299Write Policy [Write Back]yes
step 9316I/O Policy [Direct]yes
step 10337Access Policy [Read/Write]yes
step 11373Disable Background Initialization [No]yes
step 12411Emulation Type [Default]yes
step 13(wrap)→ 88wrap

ArrowDown を 14 回押すと wrap-around。 silent drop (同じ y 連続) は step 9-10, 11-12 で観測。

Select RAID Level (y=128) は ArrowDown skip 対象のため、 値変更には:

  1. ArrowDown でいずれかの navigable 行に着く
  2. Tab または Shift+Tab で項目間 cycle (未検証)
  3. もしくは popup 経由 (Enter で Select RAID Level に入る—これが本来の Aptio の意図と思われる)

次セッション継続課題 (Task C/D):

  1. cursor on Select RAID Level の到達方法を確定 — Tab/Shift+Tab? それとも form 初期 cursor が default で Select RAID Level (y=128) にあり、 そこで NumpadAdd?
  2. size fingerprint ベースの cursor identifier — NumpadAdd 1 回で size diff から cursor 行を確定する関数 (identify_form_cursor_by_probe)
  3. drives popup の cursor 検出 — popup overlay 範囲 (x=410-600, y=350-420 など) に限定した detect 関数
  4. RAID10 commit シーケンス C1-C13 — 上記 1-3 完了が前提
  5. dispatcher 統合 — RAID10 commit 動作確認後

詳細→ report/2026-05-17_092256_tx1320_raid10_active_cursor.md

🎉🎯🎯🎯 2026-06-02 (d0a59391, issue #69): RAID10 dead end は 覆った — BIOS HII KVM から RAID10 作成成功

2026-05-17 #4 の「RAID10 は AVAGO HII KVM 経路では不可能」結論は誤り (偽陰性) だった。FW 9.69F + ハードニング済みツール (scripts/irmc-kvm/server.py) + per-key サブエージェント画像分析で、BIOS Setup HII から RAID10 VD を作成し Virtual Drive 0: RAID10, 1.636TB, Optimal を KVM + OEM 真VGA の両方で裏取りした (4×900GB SAS → 2 span ミラー+ストライプ = 全容量 3.272TB の半分 1.636TB)。report 2026-06-02_*_tx1320_raid10_bios_hii_success.md。

dead end が偽陰性だった理由:

  • FW 9.69F の Create VD フォームは 開いた瞬間カーソルが Select RAID Level 行に乗っている (2026-05-17 の「Save Config top から ArrowDown で y=128 を skip」は旧 FW/旧ツール/[RAID0] cluster 誤検出の複合アーティファクト)。
  • Select RAID Level の Enter で開くドロップダウンに RAID0 / RAID1 / RAID5 / RAID6 / RAID00 / RAID10 が並ぶ (RAID50/60 は "if supported" で 4 ドライブ時は非表示)。RAID10 は 0 ドライブ選択時点でも出る。右ヘルプも "0, 1, 5, 6 (if supported), 00, 10, 50, and 60 (if supported)" と明記。
  • RAID10 選択でフォームが SELECT SPAN(S): / Span 0: / Select Drives / Add More Spans に変化 (spanned 構成 UI)。

RAID10 作成 全手順 (FW 9.69F、実証済み):

  1. 既存 VD があれば Clear Configuration (下記 commit レシピ)。クリア後 Config Mgmt 再進入で Create Virtual Drive が出る (Config Mgmt メニューは stale なので一段 Escape→再進入でリフレッシュ)。
  2. Config Mgmt → Create Virtual Drive → Enter。フォームはカーソルが Select RAID Level [RAID0] に乗って開く。Enter → ドロップダウン → ArrowDown×5 で RAID10 → Enter。
  3. Span 0: 配下の Select Drives へ移動 (Select RAID Level から ArrowDown: Protect スキップ→Select Drives From→SELECT SPAN(S)/Span0 ヘッダスキップ→Select Drives) → Enter → drive popup。
  4. drive popup で 2 台だけ Enabled にする (各ドライブ: Enter で Disabled/Enabled ドロップダウン→mouse 230 384 でポップアップにフォーカス→ArrowDown→Enter)。上部 Apply Changes (ArrowUp で到達) → Enter → ►OK を Enter。
  5. フォームに戻り Add More Spans → Enter (Span 1 生成)。Span 1: 配下の Select Drives → Enter → drive popup には残り 2 台のみ表示されるので Check All → Enter → Apply Changes → Enter → ►OK。
  6. フォームに Span 0: + Span 1: + Virtual Drive Size 1.636 TB が出る。Save Configuration (フォーム最上部) → Enter → 作成確認ダイアログ → commit レシピ → 1st ►OK を Enter → 2nd msg ("Virtual Drive creation was successful...") は Escape。
  7. 裏取り: Main Menu → Virtual Drive Management → Virtual Drive 0: RAID10, 1.636TB, Optimal。VD0 Enter で Raid Level [RAID10] / Status [Optimal] / Size 1.636 TB も確認可。

🆕🆕🆕 今回確立した重大ハードニング知見 (上記レシピ成立の鍵):

  • 🚨 keyrepeat は高 latency 拠点 (training-tx1320, ping 60-340ms) で多重登録する (800ms 間隔で 4 press → 約 6 行移動 = 1.5x)。間隔 ≥1600ms にすると 1:1 になる。精密ナビは keyrepeat <key> <n> 1600 か単発 press を使う。単発 press (コマンドファイル 1 つ 1 キー) は確実に 1:1。
  • 🚨 commit/ドロップダウン確認ダイアログの操作は 1 つのコマンドファイルに全部入れる。ダイアログを開く Enter とその後の mouse→ArrowDown→Enter を別コマンドファイルに分けると、その間にフォーカスが失われ矢印が drop され ►No に当たって dialog がキャンセルされる (058/059 で実証)。press Enter (open) → sleep 3 → mouse <items> → sleep → ArrowDown → Enter を 1 ファイルで送る (060 で成功)。
  • 🚨 フォーカス確立クリックは「項目の上」を狙う。画面中央 (512 384) は不可。確認ダイアログ (Confirm/Yes/No) は開いた直後に mouse 80 240 (左の項目帯)。中央 (512 384) はダイアログ項目が左上にあるため空白部に当たり、矢印が drop される。
    • Confirm の Disabled/Enabled ドロップダウンには別途クリック不要。ダイアログ冒頭の mouse 80 240 で得たフォーカスがそのまま引き継がれ、ArrowDown→Enter で直接操作できる (commit レシピを 1 コマンドファイルにまとめる前提)。
    • ドライブの Disabled/Enabled ドロップダウンは mouse 230 384 (ポップアップ箱の上) が必須。ドライブ行へナビ後に別コマンドで開くためフォーカスが切れており、再クリックしないと ArrowDown が drop する。
  • ArrowDown は No から Confirm に wrap する (No→ArrowDown→Confirm)。ArrowUp×2 より ArrowDown×1 wrap が 1 キーで確実。
  • ドライブの Disabled/Enabled ドロップダウンは mouse 230 384 フォーカス必須。これ無しの ArrowDown は drop、NumpadAdd 直接トグルも drop (036 で実証)。
  • 重い画面遷移 (メニュー→フォーム) は 2.5s sleep でも stale スクショになることがある → 同じ前画面が写ったら追加 sleep + 再 shot (024→025 で実証)。
  • 作成 2nd msg は Escape、削除/作成 1st ►OK は Enter (挙動差、SKILL 既出を再確認)。

🛑 [SUPERSEDED — 2026-06-02 に覆った、上記参照] 2026-05-17 #4: RAID10 自動化 dead end 確定 (a-goofy-graham セッション)

tmp/iter/_util.py に identify_form_cursor_by_probe(vp, sdir, label, expected_y) + detect_popup_cursor_row(...) + PROBE_FORBIDDEN_Y / PROBE_SAFE_Y / CURSOR_Y_CREATE_VD_FORM を追加。 静的検証 (既存 PNG) で _rowwise_diff_y が cursor 行を確実に特定可能なことを実証 (size delta -38 でも _rowwise_diff_y は y=148 を pin pointer 検出、 期待 y=147 と一致)。

実機検証 (training-tx1320, iter_09 + iter_09b + iter_09c) で判明した dead end:

試行結果
iter_09 Phase 3 A2: ArrowUp x1 from y=147 → cursor y=88 (Save Config TOP に戻る、 expect y=128)❌ A2 失敗
ArrowUp x2 from y=147 → y=411 (Emulation Type, wrap to BOTTOM)❌ A2 fallback 失敗
ArrowUp x3 from y=147 → y=392 (不明位置)❌
iter_09b T1 form_open + Enter on Save Config TOP → Save Configuration dialog (size +1215)❌ y=128 到達せず (cursor は内部的にも y=88 確定)
iter_09b T2/T3 Tab / Shift+Tab → size +0 (完全無反応)❌ Aptio HII は Tab を解さない
iter_09b T_home Home key → size +0 (無反応)❌
iter_09b T_end / T_pagedown → cursor y=411 (form BOTTOM)❌ y=128 訪問なし
iter_09b T_pageup → cursor y=88 (form TOP)❌ y=128 スキップ
iter_09b T_click x50/x200/x300, y=128 Mouse click via Playwright canvas → size +0❌ Aptio HII は canvas click を解さない
iter_09c Profile-Based VD: 4 profile cycle (RAID 0/1/5/6) — RAID 10 profile なし🛑 Profile 経路も dead end

結論: AVAGO HII for TX1320 M3 (LSI SAS3008, FW iRMC 9.08F) では:

  • Create VD form の Select RAID Level (y=128) には ArrowDown/Up/Tab/Shift+Tab/Home/End/PageUp/PageDown/Mouse Click のいずれでも到達不可能
  • Profile-Based VD は RAID 0/1/5/6 のみ提供、 RAID 10 profile なし
  • → RAID 10 自動化は AVAGO HII KVM 経路では不可能

残された候補 (次セッション以降):

  1. LSI Software RAID Utility (Advanced tab y=406) を試す — AVAGO とは別 controller の HII の可能性
  2. キーボードイベント raw injection (Playwright bypass、 iRMC KVM Java/HTML5 protocol level) — Tab/Click が届かない原因の分析
  3. 2 段階 RAID 1 + RAID 0 ストライプ — Profile-based で RAID 1 を 2 つ作り、 後で manual RAID 0 化 (AVAGO がこの構成をサポートするか未確認)
  4. iRMC OEM Redfish 探索 — TX1320 は eLCM なしだが、 OEM Redfish で RAID 設定変更ができる panel が隠れている可能性
  5. MEGACLI CLI を OS 側から実行 — OS install 後に MEGACLI で RAID 10 を作成 (ただし OS install には先に RAID 必要なので circular)

Drives popup の frame buffer 描画問題 (iter_09 Phase 4 で判明):

  • popup を Enter で開いた直後 4 frame canvas 全て真っ黒 (cnt=0)
  • 5 frame 目以降 highlight が部分的に見える (cnt=39-79)
  • detect_popup_cursor_row(x=410-580, y=340-560) でも検出失敗
  • 仮説: iRMC KVM frame buffer の lazy refresh + popup overlay の partial draw
  • → 次セッションで Ctrl 単独 key で frame refresh を強制 + 待機時間長期化を試行 (ただし dead end のため優先度低)

確定した CURSOR_Y_CREATE_VD_FORM (本セッションで追加):

CURSOR_Y_CREATE_VD_FORM = {
    "save_configuration_top": 88,
    "select_raid_level":      128,   # ❌ UNREACHABLE
    "select_drives_from":     147,
    "select_drives":          166,
    "virtual_drive_name":     204,
    "strip_size":             259,
    "read_policy":            280,
    "write_policy":           299,
    "io_policy":              316,
    "access_policy":          337,
    "disk_cache_policy":      373,
    "emulation_type":         411,
}

追加実装関数 (tmp/iter/_util.py):

  • identify_form_cursor_by_probe(vp, sdir, label, expected_y) — hybrid (model + image diff probe). PROBE_FORBIDDEN_Y={88,411} で action 行 skip、 PROBE_SAFE_Y={147,259,280,299,316,337,373} で NumpadAdd→NumpadSubtract で値を確実に戻す + image diff で cursor 行特定
  • detect_popup_cursor_row(...) — popup overlay 範囲限定 detect (popup frame buffer 描画問題で本セッションでは動作未確認)
  • _rowwise_diff_y(before, after, ...) — 2 PNG 間の row-wise pixel diff sum を計算 → 最大 y を返す (probe の内部実装)

詳細: 次セッション引き継ぎレポート report/2026-05-17_HHMMSS_tx1320_raid10_dead_end.md 参照

🎯 2026-05-31 (cosmic-aho): FW 9.69F KVM ログイン修正 + HII モーダルダイアログ入力不能の確定

FW 9.69F で KVM 自動化を再開しようとして判明した 2 点 (実機 training-tx1320)。

(1) FW 9.69F の KVM ログインは cookie ベース — 旧 open_viewer は必ず失敗する

  • 旧 scripts/irmc-kvm-interact.py / tmp/iter/_util.py の open_viewer は login 成功を re.search(r'sid=', page.url) で判定していたが、FW 9.69F は SID を URL に入れず cookie (sid) に格納する。P99 (Login submit) クリック後の URL は /systeminfo?ms=1&lang=0#login のまま (ログインは成功している) → 旧コードは Failed to login after 3 attempts で必ず死ぬ。
  • 修正 3 点 (検証済み):
    1. login 成功判定を ctx.cookies() に sid cookie 出現で行う
    2. viewer は viewer.html?ms=0&lang=0 を sid パラメータなしで開く (cookie セッションで認証)。Web UI の "Video Redirection (HTML5)" link href も viewer.html?ms=1&lang=0 で sid なし
    3. canvas#kvm の click は #cursor_canvas overlay が pointer を intercept するため click(force=True) 必須 (旧コードの hit-test click は timeout)
  • KVM canvas locator screenshot (1024x768) は鮮明に判読可能。BIOS Setup メニュー画面の cursor_y マップ (CURSOR_Y_ADVANCED_TAB 等) は 9.69F でも有効。
  • 参考実装: tmp/503d9361/kvmlib.py の open_viewer (本セッションの作業コピー)。次回これを scripts/irmc-kvm-interact.py に移植すべき。

(2) 🛑 Aptio HII モーダルダイアログ/ポップアップは KVM 入力 (キー・マウス) を一切受け付けない

VD 削除を BIOS メニュー (Configuration Management → Clear Configuration) で試行したところ、Clear Configuration 確認ダイアログがキーボード・マウスの両方を完全に無視する。OEM Screenshot (真の VGA) で裏取り済み:

  • Clear Config 確認ダイアログ (Confirm [Disabled] / Yes / ► No、初期カーソル No):
    • ArrowUp/ArrowDown を 20 回連打しても ► は No から 1px も動かない (OEM screenshot で確定、frame buffer 凍結ではない)
    • Enter (No 上) も効かない (ダイアログが閉じない)
    • Escape も効かない (General Help popup を F1 で開いた後 Escape で閉じられない)
    • canvas マウスクリック (Confirm/Yes/No 行の座標) も無効 (Aptio HII はマウスを解さない、 2026-05-17 #4 既出を再確認)
    • 一方 F1 (General Help) は効く — F1 は下層フォームが処理するグローバルホットキーのため。だが開いた Help popup 自体は Esc/Ok で閉じられない
  • メニュー (Setup ページ) の矢印ナビゲーションは効く — Main tab → Advanced tab → AVAGO row (ArrowDown 14)、Main Menu → Configuration Management → Clear Configuration への移動は成功。Enter でのサブメニュー/ダイアログ展開も成功。
  • 境界: 「Setup ページ (左寄せメニュー項目リスト)」の ↑↓ は効くが、「モーダル確認ダイアログ/ポップアップ」の ↑↓/Enter/Esc/マウスは効かない。これは 2026-05-17 #3/#4 の「Create VD form の Select RAID Level 到達不可」「drives popup frame buffer 描画問題」と同根 (HII popup/form の入力レイヤが KVM では機能しない)。

⚠️ 上記 (2) の「入力不能 / dead-end」結論は 2026-06-01 に覆った (下記参照)。当初は「Confirm/Yes/No モーダルに synthesized input が一切届かない」と判断したが、真相は 「フォーカスカーソル ► が常に No に固定表示され実フォーカスを反映しないため、キーが効いていないように見えていた」 だけ。実際にはキーは届いており、正しいキーシーケンス + 1キーごとの screenshot 確認で 完全自動操作が可能。

🎉🎯 2026-06-01 (cosmic-aho 続き): 確認ダイアログ自動操作レシピ確立 — RAID 削除→再作成を完全自動化

上記 (2) の訂正。Confirm/Yes/No モーダル (Clear Configuration 削除確認 / Save Configuration 作成確認 / drives popup ではない方) は operable。鍵は「► は静的でフォーカスを示さない」ことを理解し、1キーごとに screenshot で状態遷移を確認しながら進めること (盲目の連続送信は不可)。

確認ダイアログ commit レシピ (実証済み、削除・作成共通):

  1. ダイアログ展開直後 (初期フォーカス=No、► は No 上に固定表示): ArrowUp ×2 → Enter → Confirm のドロップダウン (Disabled/Enabled) が開く (screenshot size ~11866 で確認。►×1 では不足)。
  2. ドロップダウンで ArrowDown → Enter → Enabled 選択。Confirm [Enabled] になり Yes が選択可能化。
  3. ArrowDown → Enter → Yes を選択して commit。Confirm=Enabled 後は ► が実際に Yes (caret y~221) へ可視移動するので screenshot で確認できる。
  4. "The operation has been performed successfully / ►OK" ポップアップを Enter で閉じる (この左寄せ ►OK 型は Enter で閉じる)。

Create VD (RAID0) 全自動シーケンス (FW 9.69F、実証済み):

  1. Main → ArrowRight (Advanced tab) → AVAGO row (cursor_y=393) → Enter → AVAGO dashboard。
  2. Enter (Main Menu) → Enter (Configuration Management) → Enter (Create Virtual Drive)。VD が無い時のみ Config Mgmt 先頭が Create Virtual Drive。RAID Level は [RAID0] がデフォルトで変更不要。
  3. フォームで Select Drives 行 (highlight y~147) へ → Enter → drives popup。
  4. drives popup で Check All 行 (y~412) → Enter → 全 drive [Enabled]。
  5. Apply Changes (上部 y70 を ArrowUp で狙うのが確実。下部 y450 への navy は all-Enabled 行の bright cluster で highlight 誤爆) → Enter → ►OK を Enter で閉 → フォームに戻る (VD Size に容量反映、例: 4×837GB RAID0 = 3.272 TB)。
  6. Save Configuration (フォーム最上部、cursor 初期位置) → Enter → 作成確認ダイアログ → 上記 commit レシピ。

Clear Configuration (削除) 全自動シーケンス: AVAGO dashboard → Enter (Main Menu) → Enter (Config Mgmt) → Clear Configuration 行 → Enter → 削除確認ダイアログ → 上記 commit レシピ。

🚨 検証は必ず Virtual Drive Management で: AVAGO dashboard の Virtual Drives:/Drive Groups: カウントと Configuration Management のメニュー項目は stale でキャッシュされ、作成/削除直後に古い状態を表示する (作成後も VD:0、削除後も「View Drive Group Properties/Clear Configuration」を表示し続ける)。実態は Main Menu → Virtual Drive Management が反映 (例: "Virtual Drive 0: RAID0, 3.272TB, Optimal")。

これにより iRMC S4 KVM (FW 9.69F) で BIOS メニュー経由の RAID 削除→再作成が (単一健全セッションで) 自動化可能と確定 (2026-06-01、RAID0 で実証)。RAID10 の Create VD form 内 Select RAID Level への到達も 2026-06-02 (d0a59391, issue #69) に実証され、Select RAID Level ドロップダウンに RAID10 が並ぶことを確認 → RAID10 を含む全レベルが HII KVM で作成可能と確定(旧「Select RAID Level dead-end」判定は覆った。上記「🎉🎯🎯🎯 2026-06-02 ... RAID10 dead end は覆った」節を参照)。参考実装: tmp/<sid>/kvm_server.py (永続セッション + コマンドファイル駆動 + ► 不可視前提の per-key 検証)。

🎯🎯🎯 2026-06-02 (r10hiicd): Clear Configuration は 単一コマンドファイルで完全自動化可能 — 10/10 決定論再現

OS install 10 回反復 (各 install 前に BIOS HII で RAID 構成を Clear) で、Clear Configuration の全工程を 1 つのコマンドファイルにまとめて投入し 10/10 で成功。per-key の対話的フィードバックは不要 (recipe が決定論的)。scripts/irmc-kvm/server.py の永続セッションへ以下 1 ファイルを投入するだけ:

press ArrowRight 1800           # Main -> Advanced
keyrepeat ArrowDown 14 1600     # -> AVAGO MegaRAID 行 (1600ms で 1:1、高 latency でも過剰登録なし)
shot c1_avago.png
press Enter 2500                # -> AVAGO dashboard (cursor=Main Menu)
press Enter 2500                # -> Main Menu (cursor=Configuration Management)
press Enter 2500                # -> Config Mgmt (cursor=View Drive Group Properties)
press ArrowDown 1600            # -> Clear Configuration 行
shot c2_clear_row.png
press Enter 3000                # Clear 確認ダイアログを開く
shot c3_dialog.png
mouse 80 240                    # ダイアログ項目帯にフォーカス確立 (中央 512,384 は不可)
sleep 1
press ArrowDown 1800            # No -> wrap -> Confirm
press Enter 1800                # Confirm [Disabled/Enabled] ドロップダウンを開く
press ArrowDown 1800            # Disabled -> Enabled
press Enter 1800                # Enabled 選択 (フォーカス継続のため別クリック不要)
press ArrowDown 1800            # Confirm -> Yes
press Enter 2000                # commit
shot c4_committed.png           # "The operation has been performed successfully" + ►OK
press Enter 2500                # ►OK を閉じる
press Escape 2500               # -> Main Menu
keyrepeat ArrowDown 2 1600      # -> Virtual Drive Management
press Enter 2500
shot c5_vdm_verify.png          # "no Virtual Drives currently available" = Clear 成功
quit

🔑 検証は KVM canvas PNG の byte size を指紋として使える (10 run 全て同一値、locator capture mode):

チェックポイントPNG sizecaret_y意味
c1_avago18051393AVAGO MegaRAID 行 highlight
c2_clear_row1013583/90Clear Configuration 行 highlight (help="Deletes all existing configurations")
c3_dialog11383259Clear 確認ダイアログ (Confirm[Disabled]/Yes/►No)
c4_committed9462102"operation performed successfully / ►OK"
c5_vdm_verify9758None"no Virtual Drives currently available"

size が一致すれば画面遷移は成功。ずれたら投入をやり直す (本 10 run では一度もずれなかった)。BIOS POST 後 server.py の server_ready.png は BIOS Main で size≈14600 / caret_y=178。コマンドファイル例: tmp/r10hiicd/clear-all.cmd。RAID10 作成 (storcli) は OS install の preseed partman/early_command が担当 (Clear 後の delete force は no-op、create が効く)。

⚠️ server.py の --idle-timeout 内に必ずコマンドを投入すること。投入が遅れて idle-timeout (既定 3600s) に達するとセッションが終了し、再起動 (relaunch) が必要になる (r10hiicd run09 で発生、host は BIOS Setup に留まるため害はないが時間ロス)。

🚨🆕 (2026-06-02 session 6d0368bf): 単一ファイル recipe は先頭 ArrowRight ドロップに脆弱 — 検証付き Clear が堅牢

RAID→PVE 通し 3試行検証で、上記の単一ファイル clear-all.cmd 投入が 試行1は成功・試行2は失敗した。 失敗時は 先頭 press ArrowRight (Main→Advanced タブ切替) が高 latency でドロップし、Main タブのまま keyrepeat ArrowDown 14 して System Time 行に着地 → 以降の Enter/dialog が全て誤画面で実行され、 指紋が総崩れ (c1=14584 caret_y=292、c3==c4 で commit 不発、RAID 未クリア)。c1 を読むと BIOS Main タブ だった。r10hiicd の 10/10 はタブ切替が運良く毎回通っただけで、決定論ではない (ping 36-340ms の拠点)。

→ 堅牢な「検証付き Clear」手順 (試行2で実証、推奨):

  1. press ArrowRight 2000 + shot tab.png → 画像で Advanced タブ着地を確認。Main のままなら ArrowRight 再送 (リトライ)。
  2. navy 393 caret 25 1500 + shot avago_row.png → AVAGO 行へ adaptive 着地 (nav_cursor_to_y が ArrowDown silent drop を自己補正。blind な keyrepeat ArrowDown 14 より確実)。size=18051/caret_y=393 で確認。
  3. press Enter 2500×3 + press ArrowDown 1600 + shot clearrow.png → 右ヘルプ "Deletes all existing configurations" + "Clear Configuration" ハイライトを確認 (VD 有り時は Config Mgmt が 2 項目: View Drive Group Properties / Clear Configuration、Clear は ArrowDown 1)。
  4. modal commit を 1 ファイルで投入 (press Enter 3000 でダイアログ → mouse 80 240 → ArrowDown→Enter ×3 で No→Confirm→Enabled→Yes → commit → Enter (►OK) → Escape → keyrepeat ArrowDown 2 → Enter → shot vdm.png)。vdm.png size=9758 = "no Virtual Drives currently available" = クリア成功。

要点: タブ切替は必ず shot で検証 (ドロップ時リトライ)、AVAGO 着地は navy で adaptive に。指紋は最終 vdm.png (9758) のみが信頼でき、中間 (committed.png 等) は投入経路で size がぶれる。コマンドファイル例: tmp/6d0368bf/{c-tab,c-avago,c-descend,c-commit}.cmd。

🚨🆕 (2026-06-03 4dbf313d) server.py READY は実際には常に Main タブに着地する。だが server_ready.png の size 指紋は当てにならない — 実測で READY が size=17919 (Advanced の指紋) を出しても cursor は Main にいた (試行4: 17919/caret_y=102 表示なのに直後の navy initial cursor_y=178 で Main の短いリストを wrap し 393 未到達 FAILED)。対策: READY 後は size を見て分岐せず、常に単一 press ArrowRight を送って Main→Advanced に入り、shot tab.png で確認 (Advanced = size 17919 / caret_y=102) してから navy 393 で AVAGO へ。 server_ready が Advanced っぽい size でも ArrowRight をスキップしない (試行4 はスキップして Main に 居座り失敗)。⚠️ タブ列は wrap する (Main で ArrowLeft を押すと最右 Save & Exit に回り込む) ので、 "ArrowLeft で Main 強制" は逆効果 (試行5 で Save & Exit に着地)。navy が 393 に到達せず 178/197/235/273/292 を巡回したら「Advanced でなく別タブにいる」サイン → そのタブを subagent で読み、Advanced は左から 2 番目 (index1) なので現在 index c から ArrowRight × ((1 - c) mod 7) で到達できる。

🚨 無人 N サイクル自動ループの落とし穴 (2026-06-01、9 回ループ試行中に判明)

単発の削除/作成は自動化できたが、無人で N サイクル回すのは以下の脆さで非常に困難。harden するには下記を厳守:

  1. 制御テストに F1 (General Help) を使うな。F1 が開く Help モーダルは Esc で閉じないことがあり、開いたまま残ると以降の全ナビゲーションキーをブロックする (caret が固定値に張り付き「キー不達」に見える = 過去「KVM 劣化」と誤診した症状の主因)。制御確認は ArrowRight→ArrowLeft のタブ切替 (画面 size 変化で判定、popup を開かない) を使う。
  2. BIOS 最上位タブ (Main/Advanced) で Esc を押すな。「Exit Without Saving (Quit without saving? Yes/No)」モーダルが開き、これも synthesized 入力を受けず以降をブロックする。AVAGO サブメニュー内の Esc は安全 (上位へ戻るだけ)。
  3. Advanced タブ下部の密集項目で AVAGO 行への正確な着地が困難。iSCSI(caret y≈368) / AVAGO MegaRAID(≈393) / LSI Software RAID(≈406) が ~13px 間隔で、caret 検出 ±8px では 393 と 406 を区別しきれず LSI SW RAID 等に誤入する。要・狭 tol + 着地後の screenshot 文言確認 (「AVAGO MegaRAID」の文字)。
  4. KVM master セッションは閉じると数分スロットが残存。次の接続はスレーブ (キー無反応) になり再接続が要る。無人ループは 1 セッションを開いたまま全サイクル実行し、開閉を繰り返さないこと。
  5. 詰まった modal / スレーブ状態からの確実な復旧 = host を ForceOff → BMC reboot (Manager.Reset) → host を BIOS に起動。⚠️ Manager.Reset は host が ON / BIOS 設定中だと Fujitsu.1.0.ActionRelatedFeatureBlocked で恒久ブロックされる。必ず先に host を ForceOff してから Manager.Reset すると通る (2026-06-01 実証、ユーザ指摘)。BMC 復帰後に boot-override BiosSetup + power on で fresh な BIOS Main タブ + 健全 KVM + セッション無し状態になり、その「最初の接続」だけが master かつ健全。
  6. 状態確認は KVM セッションを消費しない OEM Screenshot (irmc-oem-screenshot.sh) を優先 (KVM master を奪わない)。
  7. 🚨 AVAGO のメニュー階層は入場ごとに見え方が変わる — caret_y やサイズで盲判定するな、必ず各画面の文字を読め。確認された 2 形態: (A) フル dashboard = Main Menu / Help / PROPERTIES: Status.. / ACTIONS: Configure.. (Virtual Drives 数が見える)、その Main Menu を Enter すると Configuration Management / Controller Management / Virtual Drive Management / Drive Management / Hardware Components の 5 項目。(B) コンパクト = AVAGO 行 Enter 直後にいきなり Controller Management / Virtual Drive Management / Drive Management の 3 項目だけ (Configuration Management が無い = Create/Clear に到達できない)。2026-06-01 の careful ラウンドは (B) に入ったのに (A) のつもりで操作し、Controller Management 内を delete/create と誤認して空振りした。対策: AVAGO 進入後まず画面の文字を読み、Configuration Management 行が見える形態か確認する。無ければ一段 Esc して入り直す。VD の有無は最終的に Virtual Drive Management ページの Virtual Drive 0: RAIDx, ... 行を OEM で読むのが唯一信頼できる (dashboard カウントは stale)。
  8. per-key 駆動を徹底: 1 キー送るたびに screenshot を撮り、その画像の文字を読んでから次を決める。複数キーを 1 つの cmd にまとめて送ると、メニュー階層の取り違え・silent drop で容易に道を見失う (2026-06-01 で複数回実証)。eff率化は手順が完全に固まってから。
  9. RAID 構成は コントローラ NVRAM に永続し、host 電源断・BMC reboot では消えない (2026-06-01、VD0 が複数回の cold reset を生き延びて確認)。クリーン状態に戻したい時も RAID は明示的に Clear Configuration しない限り残る。
  10. 推奨フロー: [host off → BMC reboot → host on(BIOS) → OEM で BIOS 到達確認 → 介在セッション無しで単一セッションを開き全サイクル実行]。それでも Advanced→AVAGO の初回ナビ精度が課題で、無人完走の信頼性は低い。現実的には削除/作成の各 confirm を人手 (Web UI KVM) で行う協調方式が最も確実 (2026-06-01 で 1 サイクル実証済)。

KVM セッション運用の知見 (本セッションで確立)

  • iRMC S4 は KVM master を 1 セッションのみ許可。閉じた master セッションが数分間スロットを保持し、その間に開いた新セッションは read-only スレーブ (キー silent drop)。スレーブは master 失効後も自動昇格しない (再接続が必要)。
  • → 単一の永続 KVM セッションを保持し続ける運用が必須 (open/close を繰り返さない)。master 取得の確認は ArrowRight→ArrowLeft のタブ切替で画面 size が変化するかでテストする (F1 General Help は Esc で閉じないことがあり制御テストには使わない、上記ハードニング 1 参照)。取れなければ close → 40s 待 → 再接続をリトライ。これは昇格済みの永続セッションサーバ scripts/irmc-kvm/server.py (コマンドファイル駆動、gain_control が ArrowRight 方式で master を確認) が実装済み。
  • viewer 再接続直後は #cursor_canvas overlay で canvas が一時 invisible になり screenshot が timeout することがある → bounding_box の width/height>100 を待つ。
  • 🆕🆕 (2026-06-01 jiggly12 で実証) modal ダイアログを開くと canvas がキーボードフォーカスを失う。Clear/Save Configuration の確認ダイアログ・Confirm ドロップダウン・OK メッセージボックスを開いた直後は、press した矢印キーが全て silent drop され、▶No 等の静的マーカーに騙されて「効いていない」と誤認する (実際は届いていない)。対策: ダイアログを開いたら必ず実マウスクリック mouse 512 384 を 1 回送ってフォーカスを再確立してからダイアログキーを送る (focus コマンド = force-click では不十分、mouse の実クリックが必要)。メニュー階層のキーはフォーカス喪失の影響を受けない (ダイアログ限定)。なお BIOS Aptio はマウスで選択を動かさないので mouse 512 384 (画面中央の空白) はカーソル位置を壊さず安全。
  • 🆕🆕 ダイアログ内のカーソル位置は「Confirm ドロップダウンが開くか」で決定的に判定できる。reverse-highlight は間欠的に非描画になり ▶No は静的なので画面から位置が読めないことが多い。ArrowUp×2 → Enter で Confirm ドロップダウン (Disabled/Enabled) が開けば cursor は Confirm 行にいた証拠 (開かず dialog が閉じれば No 上だった)。最終 commit の ArrowDown→Enter も結果で分岐してよい: 成功メッセージ=Yes 押下成功 / ドロップダウン再展開=Confirm 上 (Arrow drop) / メニュー復帰=No 上 — Yes 以外は全て非破壊なので安全にリトライできる。
  • 🆕🆕 (jiggly12) サブメニューから Escape で戻った直後はカーソル位置が不定 (下方向にドリフト)。VDM → Escape → Main Menu の後に ArrowUp×2 を送っても Configuration Management(1番目) でなく Drive Management(4番目) に着地する事例が 2 回再現。Escape 後は行位置を固定送信せず、右ヘルプ文言で現在行を確認してから ±補正する。「メニューキーはダイアログと違い影響なし」は同一画面内の話で、画面遷移 (Escape) はカーソルをずらす。
  • 🆕 Create VD フォームの Protect Virtual Drive [Disabled] は非選択 (カーソルが止まらない) 表示行。Select RAID Level から ArrowDown×2 がちょうど Select Drives (Protect はスキップ)。×3 だと CONFIGURE ヘッダもスキップして Virtual Drive Name へ行き過ぎる (→ ArrowUp×1 で戻す)。

🆕 標準手順: スクリーンショット分析はサブエージェントに委任する

per-key 操作の各 shot は、主エージェントが画像を直接 Read してはならない。general-purpose サブエージェント (Agent ツール) に screenshot の絶対パスを渡し、構造化報告だけを受け取って次キーを決める。 これは 2026-06-01 (503d9361) の 3 サイクル検証で確立した方式で、(1) per-key の状態確認が確実になり、(2) 主エージェントの context を画像で埋めずに済む (長い AVAGO HII セッションでは数十〜百枚の shot を撮るため必須)。

運用ルール:

  • 1 shot = 1 サブエージェント呼び出し。scripts/irmc-kvm/server.py の shot <name> で <srv-dir>/shots/<name> を生成 → そのパスを Agent に渡す。
  • 主エージェントはサブエージェントの報告 (テキスト) だけで判断し、画像そのものは読まない。判断に迷う時のみ自分で Read する (例外)。
  • サブエージェントには必ず次の 6 項目を構造化報告させる:
    1. 選択中タブ (Main / Advanced / Security / Boot / Save&Exit のどれがハイライトされているか)
    2. カーソル行のテキスト — ▶ 静的マーカーではなく反転背景 (白背景に暗い文字) の行を読む。AVAGO の ▶No 等は実フォーカスを示さない
    3. 右ヘルプペインの全文 (行の同定に最も信頼できる。例: "Deletes all existing configurations..." = Clear Configuration)
    4. ダイアログの有無と状態 (Confirm が [Disabled]/[Enabled] のどちらか、Yes/No のどちらが反転背景か)
    5. 黒画・凍結の有無 (全黒 / 同一フレーム)。ただし KVM canvas 黒画は framebuffer artifact のことがあるので黒画単独で hang 判定しない (真実は OEM 真VGA と SOL)
    6. 画面見出し (例: CONFIGURE VIRTUAL DRIVE PARAMETERS, Virtual Drive Management)

コピペ用サブエージェントプロンプト雛形 (Agent ツール, subagent_type=general-purpose):

次の iRMC KVM スクリーンショット画像を Read して、AVAGO MegaRAID HII / Aptio BIOS Setup の
画面状態を構造化報告してください。判定は ▶ 等の静的マーカーではなく「反転背景 (白背景に暗い文字)
のハイライト行」で行うこと。

画像: /home/ubuntu/projects/pvese/tmp/<sid>/srv/shots/<name>.png

以下を箇条書きで報告:
1. 選択中タブ (Main/Advanced/Security/Boot/Save&Exit のどれが選択されているか。BIOS タブが見えなければ "なし")
2. カーソル(反転背景ハイライト)が乗っている行のテキスト全文
3. 右ヘルプペインの全文 (画面右側の説明。無ければ "なし")
4. ダイアログ有無と状態 (Confirm=[Disabled]/[Enabled]、Yes/No のどちらが反転背景か。無ければ "ダイアログなし")
5. 画面が全黒か / 凍結 (描画不全) しているか
6. 画面の見出し・タイトル行のテキスト
推測は避け、画像から読み取れた文字をそのまま引用すること。

⚠️ commit が不可逆な操作 (Save Configuration / Clear Configuration の Yes 押下) の直前は、サブエージェント報告で 項目4 の「Yes が反転背景」を確認してから Enter を送ること。盲目送信は禁止。

🎯🎯🎯 2026-06-01 (503d9361): 削除→再作成 3 サイクル完遂 — レシピ反復再現性確定 + ハードニング知見

cosmic-aho 続きで確立した削除→再作成レシピを 3 サイクル連続で完遂し、反復再現性を確定 (issue #73)。構成: ベースライン作成 + 3×(削除→検証→再作成→検証) = 削除レシピ ×3 + 作成レシピ ×4 を全て KVM canvas + OEM 真VGA で二重裏取り。最終状態 VD0 RAID0 3.272TB Optimal。

このセッションで上記レシピ (確認ダイアログ commit / Create VD / Clear Configuration) はそのまま安定動作し、信頼できると確定。ただし無人完走には以下の per-key ハードニングが必須:

  1. 🆕 KVM canvas にスクリーンショット遅延がある — press が実際には登録済でも、直後に撮った shot が 1 つ前の stale フレームを返す。ArrowLeft を 2 回送って「1 回目が効いてない」と誤認したが、実際は両方効いており shot が遅れていただけだった (Security→Advanced→Main と 2 タブ動いていた)。→ press 後に sleep 2.5 を挟んでから shot を撮る。盲目で「効いてない」と判断して再送するとオーバーシュートする。
  2. 🆕 コミット確認ダイアログは 2 段階に分けて裏取りする — 確認レシピ (ArrowUp×2→Enter→ArrowDown→Enter→ArrowDown→Enter) を盲目で一括送信せず: (段階1) ArrowUp×2→Enter→ArrowDown→Enter まで送り Confirm が [Enabled] になったか screenshot 確認 → (段階2) ArrowDown を送り Yes の反転背景 (ハイライト) を確認してから最後の Enter (commit)。commit は不可逆なので Yes ハイライトの目視確認は必須。▶No は静的マーカーで実フォーカスを示さない — 判定は必ず「反転背景 (白背景に暗い文字)」で行う。
  3. 🆕 Create VD form の Select Drives ナビは ArrowDown×2 が 1 手前に着地することがある — キードロップで Select Drives (▶) でなく Select Drives From [Unconfigured Capacity] で止まる。右ヘルプ Dynamically updates to display as Select Drives or Select Drive Group based on the selection made in Select Drives From. が出る行が Select Drives (▶)。ズレたら ArrowDown/ArrowUp で ±1 キー補正。CONFIGURE VIRTUAL DRIVE PARAMETERS ヘッダ行はカーソルがスキップするので ArrowDown 1 で Select Drives→Virtual Drive Name へ飛ぶことに注意。
  4. 🆕 作成完了の 2 つ目メッセージは Escape、削除完了の OK は Enter — 作成 commit 後の "The operation has been performed successfully." (►OK) を Enter で閉じると次に "Virtual Drive creation was successful. All free configurable space has been used." (OK ボタン無し) が出る → Escape で閉じる。一方削除 commit 後の "The operation has been performed successfully." (►OK) は Enter 1 回で Config Mgmt に戻る (2 つ目メッセージ無し)。
  5. 🆕 ArrowDown が稀に ArrowRight に誤登録しタブ移動 (Advanced→Security 等) が起きる → 各操作後にタブ名を確認、ズレたら ArrowLeft で戻す。
  6. 🆕 アイドルタイムアウトからの復旧フローを実証 (1 スクリプトに昇格済) — server.py の idle timeout (既定 7200s) で master を失った場合は ./scripts/irmc-kvm-recover.sh config/training_tx1320.yml 1 本で復旧する (kill → host ForceOff → Manager.Reset リトライ → BMC 復帰 poll → boot-override BiosSetup + power on → POST 待ち → OEM で BIOS 到達確認)。完了後に scripts/irmc-kvm/server.py を再起動し === KVM server READY === を待つ。復旧後 master は attempt 数回でクリーン取得でき、RAID は NVRAM 永続なので無影響。復旧後は BIOS Main タブから AVAGO へ再ナビ (Main→ArrowRight→Advanced→ArrowDown×14→AVAGO 行)。
  7. 🆕 画像分析はサブエージェントに委任 (標準手順へ昇格済) — per-key の各 screenshot 判読は主エージェントが直接 Read せず general-purpose サブエージェントに委任する。確実かつ context 消費を抑えられる。具体手順・報告 6 項目・プロンプト雛形は上記「🆕 標準手順: スクリーンショット分析はサブエージェントに委任する」節を参照。

運用ニュアンス (頻度・等価性):

  1. drives popup の Apply Changes は上部/下部どちらでも等価 — Check All の後 ArrowDown×2 が wrap して「上部 Apply Changes」に着地することがあるが、上部・下部とも右ヘルプは "Submits the changes made to the entire form." で機能同一。どちらに着地しても Enter でよい (どちらかに固執して補正し過ぎない)。
  2. Select Drives ナビのキードロップは散発 — ArrowDown×2 での Select Drives 着地は 3 サイクル中ほぼピタリで、1 手前 (Select Drives From) に止まるのは散発 (4回中1回)。毎回ズレる訳ではないので、まず ×2 を送って右ヘルプで確認し、ズレた時だけ ±1 補正すればよい。
  3. OEM 真VGA スクショは初回空振り→retry することがある — irmc-oem-screenshot.sh は健全時でも Preview not available after 12s, retrying で 1 回目空振り→2 回目成功になることがある (frame buffer 詰まりとは別)。retry 機構が吸収するので失敗扱いせず待つ。
  4. Config Management メニューは VD 有無で項目数が変わる + stale は非決定的 — VD あり時の正常 = View Drive Group Properties / Clear Configuration (2項目)、VD なし時の正常 = Create Virtual Drive / Create Profile Based Virtual Drive / Clear Configuration (3項目)。操作直後は前状態の構成を残す (stale) ことがあるが回によって stale になったりならなかったりする。→ Clear Configuration の行位置は構成で変わる (2項目なら ArrowDown 1、3項目なら ArrowDown 2) ので行位置を固定送信せず、行テキスト + 右ヘルプ "Deletes all existing configurations..." を確認してから Enter。VD 有無の最終判定は常に Virtual Drive Management で。
  5. 🆕 KVM セッションは正常終了 (close/quit) させてから切ると次の master 取得が速い — idle timeout で exit 0 正常終了した後の復旧では lingering master が残らず初回接続で即 master 取得できた (cosmic-aho の「BMC reset 直後 slave 着地リトライ要」と対照的)。無人運用で session を畳む時は強制 kill より quit を優先。

検証に使ったツールは scripts/ に正式昇格済 (2026-06-01 issue #73、下記「昇格済みツール (scripts/) と使い方」節)。詳細な per-key ログ + 確立レシピは tmp/503d9361/CYCLE_LOG.md (コピー元として温存)。

昇格済みツール (scripts/) と使い方

3 サイクル検証で機能した KVM 駆動・復旧フローを scripts/ に昇格した (旧 tmp/503d9361/ 使い捨て版から: 認証情報を引数化、session dir をパラメータ化、復旧フローを 1 スクリプトに集約)。

スクリプト役割
scripts/irmc-kvm/server.py永続 KVM セッションサーバ (FW 9.69F)。master 制御を 1 セッションで保持し、コマンドファイル駆動で per-key 操作
scripts/irmc-kvm/kvmlib.pyFW 9.69F cookie ログイン open_viewer (sid cookie 方式)。_util.py のナビ/検出ヘルパーを再エクスポート
scripts/irmc-kvm/_util.py + fingerprints.jsonナビ/検出エンジン (shot/press/nav_cursor_to_y/detect_*) + AVAGO 画面 size 指紋。tmp/iter/ から昇格
scripts/irmc-bmc-reset-retry.shManager.Reset を "Blocked" の間リトライ (host Off で通る)
scripts/irmc-kvm-recover.shBIOS Setup + KVM 取得可状態への復旧フロー (config 駆動、上記ハードニング 6)

昇格しなかったもの: cycle_runner.py (caret 盲信欠陥で NIC 画面誤入する自律ループ — 非推奨)、pw.sh/snap.sh (既存 bmc-power.sh/irmc-oem-screenshot.sh の薄ラッパー)。

永続 KVM サーバの起動 (run_in_background で起動し === KVM server READY === を待つ):

BMC_IP=$(./bin/yq '.bmc_ip' config/training_tx1320.yml)
BMC_USER=$(./bin/yq '.bmc_user' config/training_tx1320.yml)
BMC_PASS=$(./bin/yq '.bmc_pass' config/training_tx1320.yml)
.venv/bin/python scripts/irmc-kvm/server.py \
    --bmc-ip "$BMC_IP" --bmc-user "$BMC_USER" --bmc-pass "$BMC_PASS" \
    --srv-dir tmp/<session-id>/srv

コマンドファイル駆動: <srv-dir>/in/NNN.cmd (連番、1 行 1 コマンド) を投入 → NNN.done への rename を待つ → <srv-dir>/shots/<name> をサブエージェントで判読 (上記標準手順)。コマンド:

コマンド意味
press <key> [ms]キー押下 (既定 700ms 待ち)。stale フレーム回避に press 後 sleep 2.5 推奨
keyrepeat <key> <n> [ms]n 回押下
shot <name>shots/<name> に screenshot + caret_y/hl_y をログ
navy <y> [caret|highlight] [maxpress] [settle_ms]カーソルを Y 座標まで移動
sleep <s> / note <text> / quit待機 / メモ / 終了

復旧 (master 喪失・idle timeout 時): ./scripts/irmc-kvm-recover.sh config/training_tx1320.yml → server.py 再起動。

⚠️ AVAGO HII の重大落とし穴 (2026-05-17 新発見)

#28. RAID 10 は最低 2 span 必須

LSI MegaRAID の RAID 10 では Span 0 = N drives + Span 1 = N drives (各 span 同数) が必須。 4-drive RAID 10 を作る場合は Span 0=2 + Span 1=2 構成。 単一 Span に 4 drives を入れると Save Configuration で:

"To create Virtual Drives for the selected RAID level, more than one span and an equal number of Drives in each span is required."

Create VD form では:

  • Span 0 の Select Drives popup で 個別に 2 drives を toggle
  • Apply Changes
  • Add More Spans で Span 1 追加
  • Span 1 の Select Drives popup で 残り 2 drives を toggle (Check All で OK)
  • Apply Changes
  • Save Configuration

#29. AVAGO controller NVRAM の Pending state 永続

Create VD form の Pending state (RAID Level、 Span 構成、 drive 選択など) は AVAGO controller NVRAM に永続化される。 Host reboot しても消えない。 S1+S2 (Manager.Reset + boot-override + cycle) してもリセットされない。

リセット手段は Configuration Management → Clear Configuration のみ:

  1. Configuration Mgmt submenu に navigate (M1+M2+M3)
  2. ArrowDown 2 → Clear Configuration
  3. Enter → Clear Config dialog
  4. Confirm field を [Enabled] に toggle (+ キー)
  5. ArrowDown → Yes
  6. Enter → クリア確定

#30. AVAGO HII drives popup の個別 toggle 信頼性問題

drives popup 内で ArrowDown 4 + Enter で個別 drive を toggle する経路は、 WAIT_MS=1500ms でも 30-50% の確率でキーが silent drop。 Playwright keyboard.press が CDP で送られても BMC frame buffer pipeline で drop されるケースあり。

回避策:

  • screenshot で位置 verify + 想定外位置ならリトライ (アダプティブ navigation)
  • Check All / Uncheck All ボタンで bulk toggle (single key で済むため信頼性高い)
  • 個別 drive toggle が必須なら、 各 ArrowDown 後に screenshot 取得 + size 比較で cursor 位置確認

詳細→ report/2026-05-17_054151_tx1320_raid10_playwright_partial.md + reference.md

🚨 Manager.Reset 多用注意 (2026-05-16 #69、 #25 と関連)

BMC OEM Screenshot pipeline 詰まりの回復に Manager.Reset が必要になるが、 多用すると 1 回 200s のコスト + (前述の通り KVM 自体は壊さないと判明したものの) 各種 BMC 内部状態への影響が読みにくい。 OEM Screenshot は milestone ごと 1 回限定 に絞り、 Make POST → 5-15s 待 → Preview の単一サイクルで完結させる運用に統一する。

制限事項:

  • 連続して OEM Screenshot Make を投げると BMC 全体 (Web UI/Redfish) が 60-90s 程度無応答になる。 撮影回数を限定し、 各 oem-shot 失敗時は早期 fail (poll_timeout=5s, max_attempts=3) で BMC を休ませる
  • 新規 viewer session の最初の sendkeys が swallowed されることあり (canvas focus 確立に時間)。 wait:5; oem-shot:initial.jpg; を冒頭に置いて canvas refresh + focus を establish してから sendkeys する
  • KVM canvas screenshot は黒のまま使えない (oem-shot を使う)

現状の workaround:

  1. BMC Manager Reset → VGA pipeline 再初期化 — 改善せず (#69 検証済み)
  2. OS Live ISO + storcli で RAID 作成 (broadcom 提供 CLI) — 推奨次手 (reference.md の代替案参照)
  3. AVAGO HII を粘り強く操作: 1 viewer session 内で all-in-one、 OEM Screenshot は要所のみ (Main 進入、 AVAGO Main、 Create VD form、 Save 完了)
  4. Aptio BIOS の "BIOS Frame Buffer Mode" 設定変更 (HII でしか変更不可で chicken-and-egg)

raid status 手順

  1. iRMC Web UI (https://10.254.254.9/) にブラウザで接続
  2. claude / Claude123 でログイン
  3. 左メニュー → System Information → Storage タブ
  4. RAID コントローラ Model、VD、物理ディスク (Slot, Size, Status) を確認

raid create-r10 手順 (BIOS RAID Configuration Utility 経由)

  1. bios enter で BIOS Setup に入る (上述)
  2. iRMC Web UI → Console Redirection → KVM (HTML5) 起動
  3. BIOS Setup → Advanced → RAID Configuration Utility (LSI MegaRAID 系なら "MegaRAID Configuration Utility")
  4. Configure Virtual Drives → Create New VD
    • RAID Level: RAID 10
    • 物理ディスク 4 本選択
    • Stripe Size: 64 KB (デフォルト)
    • Initialization: Fast
  5. Save → Exit → 再起動
  6. 起動後に raid status で VD0 (≒ 1.8 TB) が Optimal で表示されることを確認

物理ディスクのセクタサイズ (520B / 528B) で BIOS RAID Util から認識されない場合は、OpenWrt rescue image (reference: training_tx1320 memory) で sg_format --size=512 --pinfo=0 を実施してから再試行。

raid delete 手順

同様に BIOS RAID Configuration Utility → Virtual Drives → Delete。データ消失するためユーザ確認必須。

SOL (Serial Over LAN)

本 skill では電源・BIOS が中心だが、SOL も使える (次セッションの OS install 監視用)。

# 一度だけ payload 有効化 (claude = user 4, channel 2)
ipmitool -I lanplus -H 10.254.254.9 -U claude -P Claude123 sol payload enable 2 4
# Activate
ipmitool -I lanplus -H 10.254.254.9 -U claude -P Claude123 sol activate
# Deactivate
ipmitool -I lanplus -H 10.254.254.9 -U claude -P Claude123 sol deactivate

注意事項

  • oplog.sh で電源・boot-override 系は記録すること (./oplog.sh ./scripts/bmc-power.sh ...)
  • pve-lock.sh は不要 (training-tx1320 は PVE クラスタ非メンバー)
  • BIOS Setup へ入った後、boot-override は自動で消費される (Once)。明示的に boot-override-reset する必要はない
  • Web UI ログインは Basic Auth で通らない。form login が必要 (Console Redirection 等の機能ページに到達するには)

RAID10 storcli + preseed 経路 (2026-05-17 #5 d-eager-island で確立)

⚠️ 2026-06-02 (d0a59391, issue #69) 更新: かつて KVM HII 経路は 2026-05-17 #4 で「dead end 確定」とされたが、これは 偽陰性であり覆った。FW 9.69F + ハードニング済みツールで Select RAID Level に到達でき、RAID10 を含む全レベルが HII KVM で作成可能(上記「🎉🎯🎯🎯 2026-06-02 ... RAID10 dead end は覆った」節)。以下の旧「dead end」記述は 歴史的経緯として残す。storcli + preseed 経路は HII KVM 経路とは独立した有効な代替であり、OS install 中に RAID10 を作る用途では引き続き第一候補。

旧判定 (2026-05-17 #4、現在は覆った):

  • Aptio HII Create VD form の "Select RAID Level" (y=128) に ArrowDown/Up/Tab/Click/Home/End/PageUp/PageDown の全 9 経路で navigation 不能(と当時は判断 → 旧 FW/旧ツール/カーソル誤検出の複合アーティファクトだった)
  • Profile-Based VD は Generic RAID 0/1/5/6 のみで RAID 10 不在(→ Profile 経路に依らず通常の Create Virtual Drive で RAID10 を直接選択可能と判明)
  • 詳細: report/2026-05-17_101536_tx1320_raid10_dead_end.md

storcli 経路の方針: Debian preseed partman/early_command で storcli64 を実行して RAID10 を作成 → そのまま OS install へ続行。 KVM 操作を一切使わずに RAID10 + Debian + 必要パッケージまで 1 ISO・1 boot で完結する。

Web 版 Claude の知見:

  • MegaRAID は RAID 10 を「RAID 1 + Span 2」として実装 (基本 level: 0/1/5/6 + spans: 10/50/60)
  • HII Profile-Based に RAID 10 が無いのは仕様 (シンプルウィザード保護)
  • storcli /c0 add vd type=raid10 size=all drives=<EID>:0-3 pdperarray=2 が業界標準の一発作成

使い方 (一発実行)

./scripts/tx1320-raid10-orchestrate.sh apply config/training_tx1320.yml

これで以下が順番に実行される:

  1. scripts/fetch-storcli-deb.sh で Broadcom 公式 zip から storcli_007.2705.0000.0000_all.deb を抽出 → /var/samba/public/storcli64.deb (既存ならスキップ)
  2. scripts/generate-preseed.sh --with-raid10-storcli で partman/early_command directive 入り preseed.cfg 生成
  3. scripts/remaster-debian-iso.sh --include=... で debian-13.3.0-amd64-netinst.iso を base に preseed + storcli64.deb + setup-raid10-storcli.sh を ISO ルート同梱 → debian-training-tx1320-raid10.iso
  4. scripts/irmc-virtualmedia.sh config で SMB (10.1.6.1/public) CDImage に新 ISO を mount
  5. scripts/bmc-power.sh boot-override Cd UEFI + forceoff + on で CD boot

その後 SOL 監視:

./scripts/tx1320-raid10-orchestrate.sh monitor config/training_tx1320.yml --timeout 1800

preseed 経由で実行される RAID10 作成 (scripts/setup-raid10-storcli.sh)

ISO 内 /cdrom/setup-raid10-storcli.sh が installer 環境で実行される。 内部処理:

  1. dpkg -i /cdrom/storcli64.deb (失敗時は in-target 経由 + dpkg-deb -x fallback)
  2. storcli64 /c0 show で controller 認識確認
  3. storcli64 /c0/vall delete force で既存 VD クリア (失敗は無視)
  4. storcli64 /c0/eall/sall show で物理ドライブ列挙 → awk で先頭 4 本の EID:Slot を抽出
  5. storcli64 /c0 add vd type=raid10 size=all drives=<EID:Slot,...> pdperarray=2 wb ra direct strip=256
  6. storcli64 /c0/vall show | grep RAID-?10 で assert

ログは /var/log/raid10-setup.log に蓄積 (install 完了後 SSH で cat /var/log/raid10-setup.log 確認可)。

終了コード意味:

  • 0 = OK
  • 4 = /cdrom/storcli64.deb 不在 (ISO remaster 失敗 / mount 失敗)
  • 5 = storcli64 install 失敗 / 認識不可 (controller 型が想定外)
  • 6 = 物理ドライブ数 < 4 (drive 故障 / slot 構成変更)
  • 7 = add vd type=raid10 が成功しなかった (controller がコマンド拒否)

検証

OS install 完了後、 DHCP で取得した IP に SSH:

ssh -F ssh/config <dhcp_ip> 'lsblk; storcli64 /c0/vall show all'
# 期待: /dev/sda 単一 ~1.6 TiB block device、 VD0 = RAID-10 / Optl / 1.636 TB

失敗時のフォールバック

トリガ対応
Broadcom URL が deadfetch-storcli-deb.sh の STORCLI_URL env で旧バージョン指定。https://downloadmirror.intel.com/685225/StorCLI_007.1704.0000.0000.zip が Intel mirror として使える
dpkg -i /cdrom/storcli64.deb が installer 環境で失敗setup-raid10-storcli.sh が in-target 経由再試行 + dpkg-deb -x で /usr/local/bin/storcli64 直接配置にフォールバック
add vd type=raid10 失敗controller が SAS3108 ではない可能性。`storcli64 /c0 show all
iRMC SMB Virtual Media attach 失敗 → 解決済 (2026-05-17 #6 p-effervescent-kahn)真因: スクリプトが irmc-virtualmedia.sh config に smb_user/smb_pass を渡さず 空文字列で PATCH していた → iRMC が guest 認証として処理せず silent reject。 Members@odata.count=0 のまま、 Samba log にも接続痕跡なし、 ARP L2 reachable でも attach trigger されない症状を呈していた。 解決策: config/training_tx1320.yml に smb_user: guest / smb_pass: guest を追加 + tx1320-raid10-orchestrate.sh の deploy で yq 読み込み + irmc-virtualmedia.sh config に引数 7-8 として明示渡し。 加えて、 OEM Action POST /redfish/v1/Systems/0/Actions/Oem/FTSComputerSystem.VirtualMedia {"VirtualMediaAction":"DisconnectCD"} → ConnectCD で USB redirector を fresh attach できる (BIOS POST 中 USB enumeration の遅延を吸収して boot-override Cd UEFI が機能する)。 注意: VirtualMediaAction@Redfish.AllowableValues は接続状態に応じて Connected→["DisconnectCD"] / Disconnected→["ConnectCD"] で動的、 BIOS Setup 中は [] で発行不可。
boot 進まない / GRUB 出ないSecure Boot 状態を BIOS Setup で確認、ISO の hybrid UEFI 構成 (-update efi.img) が成功しているか remaster ログで確認
installer cdrom-detect が iRMC Virtual CD を見つけない → kernel cmdline 注入は無効 (2026-05-18 #7 s-peaceful-hinton)症状: CD boot + kernel boot は成功するが、 d-i [!!] Detect and mount installation media — No device for installation media was detected で停止し、 Load drivers from removable media? <Yes><No> dialog で input 待ち。 #7 で kernel cmdline (GRUB legacy / ISOLINUX / EFI 全 3 経路) と preseed.cfg.template の両方に cdrom-detect/try-usb=true cdrom-detect/scan=true hw-detect/load_media=false を仕込んで再試行 → 効かず。 真因仮説: iRMC OEM CDImage は GRUB レベル (BIOS USB CD-ROM emulation) では読めるが、 Linux 起動後の installer cdrom-detect は udev/sysfs に依存し、 iRMC の USB CD emulation が installer の udev rule にマッチしない。 preseed.cfg は /cdrom/preseed.cfg から load される設計上 cdrom-detect 失敗の時点で適用されない (chicken-and-egg)。 次に試す候補 (優先順、 未実施): (1) initrd preseed 注入 + preseed/early_command で自前 mount /dev/sr0 /cdrom (cdrom-detect/cdrom_device=/dev/sr0 等 combined cmdline も試す)、 (2) iRMC HDImage (USB Mass Storage) 経由配信 — CDImage の代わりに HDImage で ISO を送れば /dev/sdX として block device 認識される可能性、 (3) hd-media モード (vmlinuz-hd-media + initrd-hd-media.gz) + ISO ファイル mount、 (4) PXE / netboot 経路 — 完全に iRMC Virtual Media 廃止、 (5) Live ISO + 手動 storcli RAID 作成 + 別経路で OS install pivot
全自動化失敗last resort: iRMC KVM Web UI をブラウザで開いて Aptio HII で Select RAID Level に直接 mouse click → 手動で RAID 10 作成

🎯 NFS Virtual Media 経路 (2026-05-21 s-snuggly-goblet → s-linear-gizmo で確立)

背景: SMB 死亡 → NFS bypass

iRMC S4 FW 9.08F の SMB worker は 2026-05-20 以降死亡継続中 (silly-token で Manager.Reset / VirtualMediaServiceRestart / RemoteMountEnabled toggle / OEM ConnectCD / 物理電源切離 の 5 経路すべて試行で復活せず確認)。 代替として s-snuggly-goblet が NFS worker は別 process で生存していることを実機実証 (report/2026-05-21_081642_tx1320_raid10_nfs_attempt.md)。

s-linear-gizmo (Phase 2) で本コードに統合済。 training_tx1320 のデフォルト経路は NFS。

SMB vs NFS スキーマ比較

項目SMBNFS
CDImage.ShareType"SMB""NFS"
CDImage.UserName / Password必須 (guest/guest)空文字列 (iRMC が null 化)
CDImage.ShareName"public" (バックスラッシュ無し)"/var/samba/public" (POSIX export path)
AutoAttach (RemoteMountEnabled=true で attach 成立)✅ する (worker 生存時)❌ しない — ConnectCD POST 必須
Actions...VirtualMediaAction@Redfish.AllowableValues動的: ["ConnectCD"] ↔ ["DisconnectCD"]同左
認証Samba ACLIP based (/etc/exports の subnet 指定)
交渉 protocolSMB1/2/3 (worker bug で 4.19.5 死亡)NFSv4 (v4root pseudo-fs 自動 export)

使い方 (NFS)

config/training_tx1320.yml に NFS keys が設定済:

virtual_media_type: nfs
nfs_host: 10.1.6.6
nfs_export_path: /var/samba/public

orchestrator は yq でこれを読み、 Phase 5a で以下を自動実行:

./scripts/irmc-virtualmedia.sh --share-type=NFS config \
    10.254.254.9 claude Claude123 \
    10.1.6.6 /var/samba/public debian-training-tx1320-raid10.iso
./scripts/irmc-virtualmedia.sh connect-cd 10.254.254.9 claude Claude123
./scripts/irmc-virtualmedia.sh --share-type=NFS mount 10.254.254.9 claude Claude123

mount は /redfish/v1/Systems/0 の Actions.Oem.#FTSComputerSystem.VirtualMedia.VirtualMediaAction@Redfish.AllowableValues を 12 回 × 5 秒で polling し、 ["DisconnectCD"] 出現で attach 成立と判定。

NFS server (10.1.6.6) セットアップ

s-snuggly-goblet で構築済 (nfs-kernel-server + rpcbind):

# /etc/exports.d/tx1320.exports
/var/samba/public 10.0.0.0/8(ro,no_subtree_check,all_squash,insecure,anonuid=65534,anongid=65534)

sudo exportfs -ra で reload。 ISO は /var/samba/public/debian-training-tx1320-raid10.iso に配置 (orchestrator が build したものを rsync で push)。

落とし穴

症状対処
PATCH HTTP 412ETag が古い。 irmc_get_etag で再取得 (既存 quirk)
ConnectCD HTTP 204 だが AllowableValues 未遷移/redfish/v1/Systems/0 を見ているか確認 (OEM VM endpoint には AllowableValues は無い)。 NFS server 側で sudo tcpdump -i ens19 -nn 'host 10.254.254.9 and port 2049' で packet 到達確認。 0 packet なら L2/route、 packet あって stuck なら export 権限
ConnectCD だけで Web UI 上は接続表示なし正常。 host が PowerState=Off の間は DMTF /Managers/iRMC/VirtualMedia の Members.count は 0 のまま。 host boot 時に USB redirector が device を expose する
NFS export 範囲外 (10.0.0.0/8 以外から)training-tx1320 (10.254.254.9) は 10.0.0.0/8 内。 別 server を使う場合は export 範囲を調整
✅ GRUB→kernel jump 後 SOL/VGA 完全沈黙 (2026-05-22 Phase 13 silly-rocket で真因確定・解消、 詳細は本 skill 末尾の Phase 13-19 セクション)NFS attach + GRUB boot は正常で Booting Automated Install まで届く。 ところが直後の kernel printk が 0 行、 KVM VGA も完全黒で host 凍結。 Phase 3 で quiet 除去でも earlyprintk=ttyS0,115200n8,keep 追加でも効かず、 さらに NFS pcap で host からの READ packet が一切無いことを確認 (kernel が CD-ROM device を access していない = USB CD-ROM enumeration 以前で hang/panic)。 真因は kernel cmdline option では治らない。 次セッションは BIOS XML backup (bios backup) で Console Redirection / Secure Boot / Boot Mode を 2026-05-18 SMB session #6 当時と比較 + git log --since=2026-05-15 -- scripts/remaster-debian-iso.sh で cmdline diff 確認、 USB stick 等で NFS Virtual Media を bypass した切り分けが必要。 詳細 → report/2026-05-22_004000_tx1320_raid10_kernel_silent_persist.md + memory training_tx1320_kernel_silent_post_grub.md

SMB フォールバック (緊急時のみ)

万一 NFS worker も死亡した場合:

./scripts/irmc-virtualmedia.sh disconnect-cd 10.254.254.9 claude Claude123
./scripts/irmc-virtualmedia.sh --share-type=SMB config 10.254.254.9 claude Claude123 \
    10.1.6.1 public debian-training-tx1320-raid10.iso guest guest
# + config/training_tx1320.yml の virtual_media_type を smb に戻す

ただし FW 9.08F の SMB worker 死亡は wontfix 確定なので、 NFS が動かない場合は別 NFS server (proxy-ARP 配下) を立てる方が現実的。

RAID10 storcli + preseed 経路 — 2026-05-17 #5 d-eager-island の実機検証結果

  • ✅ scripts/fetch-storcli-deb.sh で Broadcom 公式 zip → storcli64.deb (2 MB) 取得成功 (URL: https://docs.broadcom.com/docs-and-downloads/007.2705.0000.0000_storcli_rel.zip)
  • ✅ scripts/generate-preseed.sh --with-raid10-storcli で preseed に partman/early_command directive 挿入確認
  • ✅ scripts/remaster-debian-iso.sh --include=... で 764 MB の Debian + storcli64.deb + setup-raid10-storcli.sh 同梱 ISO 生成成功
  • ✅ irmc-virtualmedia.sh config で OEM Redfish に CDImage 設定書込成功 (HTTP 200、 ETag 通る)
  • ❌ iRMC が SMB 経由で CDImage を実際に attach しない — /Managers/iRMC/VirtualMedia/Members 0 のまま、 Samba 側にも接続痕跡なし、 ConnectCD OEM action 発行も無効
  • ❌ BIOS は boot-override Cd UEFI を消費したが、 attach されていない CD は boot 不可 → BIOS Setup に fallback
  • 次セッションへ: 上記フォールバック表の (b)〜(d) のいずれかで配信経路を解決すれば、 残りのワークフローは即実行可能

Phase 13-19 で確定・解消した課題 + PXE 経路への pivot

🎯 Phase 13 (2026-05-22 silly-rocket): kernel silent hang の真因 = console=tty0

D3373 では cmdline に console=tty0 が含まれると kernel が VGA console init で hang する (SOL printk ゼロ、 VGA も凍結)。 これが Phase 2-12 で「kernel hang」 「triple-fault」 と切り分けに苦労した silent 沈黙の真因。

  • 対策済: scripts/remaster-debian-iso.sh L124/L134/L197、 scripts/generate-preseed.sh (CONSOLE_ORDER) から console=tty0 削除済 (commit 履歴参照)
  • 検証手順: cmdline 変更後 ISO/preseed 再生成 → deploy → SOL に Linux version printk が出れば成功
  • 詳細: report/2026-05-22_*_tx1320_raid10_phase13*.md、 memory training_tx1320_kernel_silent_post_grub.md

✅ Phase 15 (2026-05-23 bubbly-ripple): cdrom-detect sr0→sr1 patch

cdrom-detect が物理空 DVD (/dev/sr0) を先に試して諦め、 iRMC 仮想 CD (/dev/sr1) をスキャンしない問題。 remaster-debian-iso.sh に PVESE_PATCH_CDROM_DETECT=1 環境変数 + awk in-place patch を実装、 /dev/sr1 優先 block 挿入で fall-through 化。 Phase 16 で実機検証済。

⚠️ Phase 16-18 (2026-05-23): iRMC USB redirector 累積劣化は FW 9.69F でも解消しない

  • Phase 16-17: NFS Virtual Media + PSU cold reset で apt/partman 段階まで到達。 ただし install 中も USB redirector が累積劣化 → 3 deploy で BIOS POST 99 stuck
  • Phase 18: iRMC FW 9.08F → 9.21F → 9.69F 段階 update を scripts/irmc-fw-update.sh (multipart field 名 = "file" empirical 検証、 /irmcprogress Value=0/8/9 解読、 flashSelect=255 で両 image 書込) で完遂。 ブリックなし、 auth/network/BIOS drift なし。 だが BIOS POST 99 stuck は FW level では解消しない (config/training_tx1320.yml に FW 9.69F 適用済)
  • FW 9.69F の OEM Redfish API 破壊的変更: VirtualMediaAction → FTSVirtualMediaAction、 ResetType (OEM Reset) → FTSResetType、 ScreenshotType → FTSScreenshotType。 FW 9.08F は両形式受容、 9.69F は schema-qualified のみ。 scripts/irmc-virtualmedia.sh 修正済 (commit 86f9f7e)
  • 教訓: iRMC USB redirector は長時間運用で累積劣化し、 FW update では回復しない HW level の現象。 install 経路は USB redirector を bypass する PXE pivot が決定打

🎉 Phase 19 (2026-05-30 phase19a): PXE pivot で完遂 → pxe-deploy skill

iRMC USB redirector を完全 bypass する PXE/netboot 経路を確立、 Debian 13 + HW RAID10 install + claude 自力 SSH 到達まで物理操作なしで達成。 詳細手順 + 9 つの壁 + 落とし穴は pxe-deploy skill に分離記録 (skill サイズ + 経路独立性のため)。

PXE pivot に向けた iRMC BIOS の事前準備 (本 skill の bios apply-config で実施)

UEFI PXE boot option が生成されるよう、 config/<host>.yml の bios_settings.supported に追加:

bios_settings:
  supported:
    # 既存 (UEFI 化)
    BootOptionFilter: "UEFI only"
    LaunchPxeOpRomPolicy: "UEFI only"
    # …
    # Phase 19 で必須 (PXE boot option 生成の前提)
    NetworkStack: "Enabled"        # UEFI Network Stack を有効化
    IPv4PxeSupport: "Enabled"      # IPv4 PXE boot option を生成 (NetworkStack 依存)

→ bios apply-config で BSPBR backup → 編集 → restore → cycle (boot phase で適用)。 これが Disabled だと boot-override Pxe が BIOS Setup に落ちる (Phase 19 壁 #1 で実証)。

関連知見 (本 skill にも記録すべきもの)

  • SOL は read-only (D3373 は Console Redirection 機能なし、 SOL stdin は host UART RX に届かない)。 console login 不可。 状態判断は scripts/irmc-oem-screenshot.sh (真の VGA capture) が一次情報、 KVM canvas は黒画 artifact なので使用禁止 (本 skill の Playwright KVM セクションでも既述)
  • install 進捗の真の指標: nginx access.log (preseed/storcli/phonehome fetch)。 sol-monitor の stage 検出は SOL ring buffer replay で誤検出する (前回 boot 内容を新しい install の進捗と誤認)
  • 闇ネット (10.0.0.0/8) 経由 SSH: PXE install 後の installed host は eno1 (拠点 LAN、 NAT 背後で claude 不達) + eno2 (闇ネット、 gateway なし、 claude 到達可) の 2 NIC DHCP。 IP 特定は ip neigh | grep <eno2-MAC> (phone-home が cross-site 不達でも代替可能)

詳細は pxe-deploy skill + report/2026-05-30_050830_tx1320_raid10_phase19_pxe_autonomous_ssh.md + 総括 report/2026-05-30_053607_tx1320_raid10_overview_phase1-19_summary.md。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Supermicro X11DPU/X10DRT-P BIOS Setup 操作。KVM スクリーンショット + キーストロークで BIOS メニューを操作する。BIOS 設定変更、確認、保存を行う。4-6号機 + 10号機対応。

The English summary is being prepared. Showing the original description.

miminashi/pvese19Updated Jul 6, 2026

Dell ファームウェアダウンロード。Playwright で dl.dell.com から BIN を取得し firmimg.d7 を抽出する。

The English summary is being prepared. Showing the original description.

miminashi/pvese19Updated Jul 6, 2026

Mellanox SX6036 InfiniBand スイッチのシリアルコンソール操作。ステータス確認、show コマンド、IB 設定、FW 管理を行う。

The English summary is being prepared. Showing the original description.

miminashi/pvese19Updated Jul 6, 2026

idrac7

Free

iDRAC7 基本操作。SSH 経由で racadm コマンドを実行し、サーバ管理を行う。

The English summary is being prepared. Showing the original description.

miminashi/pvese19Updated Jul 6, 2026

iDRAC7 ファームウェアアップデート。段階的アップグレードパスに従い TFTP 経由で適用する。

The English summary is being prepared. Showing the original description.

miminashi/pvese19Updated Jul 6, 2026

LINSTOR/DRBD ストレージベンチマーク。VM上でfioを実行し、thin/thick-stripe構成の性能を計測する。

The English summary is being prepared. Showing the original description.

miminashi/pvese19Updated Jul 6, 2026

See all skills by miminashi

Report a problem with this skill