wired raven

文字通りの日記。主に思ったことやガジェットについて

UNEXPECTED_STORE_EXCEPTION が出てNVMe SSDを見失うことがある(B650 + P44 Pro)

要約

  • Windows起動後、しばらくしてから保存/読み込みが止まりフリーズ、クラッシュする
  • 自動再起動後、UEFI画面が表示され、ストレージ/ブート一覧にSSDがない
  • 暫定対処: Windowsの高速スタートアップをオフ、PCIe省電力設定見直し / UEFIの設定初期化、メモリをJEDEC定格運用に切り替え

症状

  1. Windows起動後しばらくして、ファイル保存/読み込みが止まる
  2. マウスカーソルは動くが、クリックやスタートメニューが反応しない
  3. クラッシュ後に自動再起動すると、ブートデバイスが見つからずUEFI設定画面が表示される。SSDUEFIのストレージ/ブート一覧に存在しない
  4. 電源ボタンを押してシャットダウン、数秒あけてから電源を入れるとSSDが認識され、正常に起動する

発生頻度は数カ月に1度ぐらい。

環境

  • CPU: AMD Ryzen 7 9700X
  • マザーボード: B650 GAMING PLUS WIFI(MS-7E26)
  • BIOSバージョン: 1.L0 2025/06/19 公開
    • MSI Center のこのバージョンは参考にならさそう
  • SSD: Solidigm P44 Pro
  • メモリ: CORSAIR VENGEANCE DDR5 16GB
    • XMPプロファイル運用(EXPO非対応)
    • 現在:Load Optimized Defaultsにより JEDEC定格に戻して検証中

イベントログ

  • 記録されていたもの
    • Kernel-Power 41 / volmgr 161 / EventLog 6008
  • 記録されていないもの
    • storport 129 / disk 153 / stornvme
    • メモ: 書き込めずにクラッシュしている可能性大

原因

切り分け中

Solidigm P44 Pro の問題?

SolidigmコミュニティでP44 Proの「突然の切断→BIOS非認識→コールドブート後に復帰」という同一症状の書き込みあり。

Solved: P44 Pro nvme controller is down will reset - Solidigm - 24097

仮対応

Windows

  • 高速スタートアップをオフにする
  • リンク状態の電源管理をオフにする

UEFI

  • 設定初期化: Load Optimized Defaults
  • PBO Thermalプロファイルの再設定: Set Thermal Point 75℃

設定初期化してメモリは定格運用に戻った。

これでも再発するなら?

UEFI

  1. Fast Boot をオフにする
  2. Memory Context Restore をオフにする
  3. ASPM をオフにする
  4. NVMeリンクをGen3固定にする

SSD

  1. 物理的に抜き差し。ねじ止めしなおし
  2. SSDファームウェアを更新する(あれば)
  3. M.2スロットをCPU直結からチップセット接続に変更
  4. 別のものに交換

ノート

MSI CenterからさくっとUEFIファームウェアの更新できるのに、更新後は設定初期化(Load Optimized Defaults)したほうが無難なのは罠だと思う。できれば「初期化推奨」の注意書きも一緒に出してほしい。電源ボタンを押したら電源が入る、くらいの常識扱いだったりする?

オーバークロックは簡単にできるようになったけど、定格で回すのが無難なのかもしれない。省電力設定も含めて、安定して動作するゾーンがあるのでそれを探すのがよいのだろう。

Windowsの省電力関係の設定は速度が落ちたり、挙動が不安定になったりした記憶しかない。マシン関係なく起きているのが辛い。

高速スタートアップはまずオフでよさそう。

モダンなゴースト開発環境の作り方(YAYA編)

伺か・伺的 [第2会場] Advent Calendar 2025 - Adventar の18日の記事です。前後はブランクなのであとはよろしくお願いします。

要約

  • YAYAを使ったゴースト向けの話
  • Git + GitHub でバージョン管理するように
  • システム辞書は git submodule でさくっと更新できるように
  • Visual Studio Code に YAYA 用のシンタックスハイライトアドオン追加して開発しやすく

ゴーストの構成

今までどうしていたのか

Dropboxを使っていろんなPCにファイルを同期させていた。

ファイルをうっかり消したり、余計なファイルを編集したとしても、履歴機能である程度は遡れる。

開発ツールは任意のテキストエディタとデバッガーの

ネットワーク更新やNarファイルの作成はゴースト配布系自動化システム

そのやり方のしんどいポイント

  • どのファイルに何の変更を加えたのかわかりにくい
  • 複数のファイルを変更したときに戻しにくい
  • システム辞書の更新が手動

解消していきましょう

  • 対象: ファイルの管理、エディタの変更
  • 対象外: ネットワーク更新やNarファイルの作成

用意するもの

GitHub にリモートリポジトリを用意する

アカウント作って、リモートリポジトリ(保存場所)を作成する。

リモートリポジトリは Public と Private が選べるから用途に応じて使い分けよう。

ゴーストマスカレードやプライベート用のゴーストは後者の Private がおすすめ。

Git でバージョン管理

初期設定

各ゴーストにつき1回やるイメージ。

リモートリポジトリをクローンする

  1. 自分のPC(= ローカル)の適当な場所に作業フォルダを作成する
  2. C:\workspace
  3. ターミナルで git clone リモートリポジトリのURL
  4. リモートリポジトリの名前でフォルダができているのを確認する

ゴースト関係のファイルを上のフォルダに移す

移した段階でコミットしておく。

  • セーブデータや追加シェルなどは .gitignore に追加すると、バージョン管理の対象外にできる
.gitignore の例

セーブデータやOSが自動生成するものを中心に除外する。

この辺は個人の環境によって変わるので参考程度に。

.DS_Store
/ghost/master/yaya_variable.cfg
/ghost/master/profile/
/shell/master/profile/
/ghost/master/messagetxt/*.bak
updates2.dau
updates.txt

git submodule でシステム辞書を引っ張ってくる(任意)

初回は submodule としてシステム辞書を追加する。

git submodule add https://github.com/YAYA-shiori/yaya-dic.git system        

更新は git submodule update --remote で最新版を取得できる。取得後、変更をコミットしておこう。

あやりりすを使っていない人はゴーストとは別のフォルダに git clone して、必要なファイルだけコピーする方法をとるのもあり。

ブランチの使い分けを考える

git のブランチ戦略で調べるとかなり出てくる。

GitHub Flow を参考に簡略化したもので回している。

  • main ブランチ: ちゃんと動くゴーストの辞書が格納されている
  • feature ブランチ: main ブランチから生やすランダムトークや新イベント追加作業中のブランチ。ネットワーク更新まで終わったら main ブランチにマージする
  • bugfix ブランチ: main ブランチから生やすバグ修正用ブランチ。ネットワーク更新まで終わったら main ブランチにマージする

こんな感じで。

  • main ブランチは動作が保証できるもの
  • 作業するときは main ブランチから派生して何かブランチを作る

ぐらいでいいと思う。

こうすることで何か作業中に誤字報告を受けても、作業中の内容は保持したまま、誤字脱字だけ修正した更新ができる。

開発環境と実行環境を繋ぐ

SSPのフォルダわけ機能を使う

workspace にゴーストしか入ってない場合はこれで登録するのが確実。

シンボリック機能を使う

workspace にゴースト以外も入っている場合などはこちら。

実行には管理者権限が必要、パスは適宜読み替えて。

mklink /d "C:\ssp\ghost\my_ghost" "C:\workspace\my_ghost"
  • my_ghost : ゴーストのフォルダ名
  • C:\ssp\ghost\ : ゴーストのインストールされるフォルダ。初期設定だとSSP直下の ghost フォルダ
  • C:\workspace\ : workspace のパス。この記事通りに作るとCドライブ直下

作業する

日頃のゴースト更新作業 + git のブランチ操作 になる。

main と feature ブランチの差分が見やすいので、変更点がすぐにわかるのが嬉しいところ。

ネットワーク更新まで終わったら、 git commitgit pushGitHub上で Pull Request を作成して、 Merge する。

すぐに終わるものなら main ブランチに直接、 git push しても問題ないと思うけど、何か起きたときに困るのでブランチをわけるようにしよう。

作業のフローを整理

  1. main からブランチを作成する
  2. 作業する
  3. 一区切りついたところで git commit
  4. 意図したファイルが対象になっていることを確認する
  5. 作業した内容がわかりやすくなるようコメントをつける
    • feat: ランダムトーク追加
    • fix: トークの誤字脱字修正
  6. 今日はここまで、あるいは作業完了のタイミングで git push
  7. GitHub上で Pull Request を作成する
    • 最終確認
  8. 問題がなければ Merge する

GitHub Issues の利用

いわゆる課題管理機能。

バグや追加したい機能はもちろん、思いついたネタのメモに使える。

スマートフォンアプリからも操作できるので、出先でネタをメモするといったこともできる。

VSCodeおすすめアドオン

FAQ

git コマンド覚えるの大変そう

Visual Studio Code ならボタン操作できる。

GitHub Desktop などもあるので、コマンド苦手でもなんとかなる。

複数のマシンで作業したいときはどうするの?

  • 初回: リモートリポジトリから git clone する
  • それ以降: ブランチ切り替えて作業前は git pull する。作業後は git commitgit push する

conflict した

複数のマシンで作業していて、片方が git push する前にもう片方で作業したりすると発生しやすい。

Visual Studio Code のマージエディタを使って何が正しいか整理しながら、一つずつ解消する。

予防法としては、

  • 作業開始前には git pull をする
  • ブランチはこまめに main へマージする

の2点があげられる。

雑感

Gitでバージョン管理するようになって、不具合修正やトークの追加といった小さな作業と辞書の大規模変更のような大きな作業が並行してできるようになった。

作業が終わったらブランチを切り替えれば済む。

ブランチ操作やコミット単位を整理しようとすると、自然に今はランダムトークを追加する、今は不具合修正をする、と思考が切り替わるのも利点だと思う。

この記事を読んで試したいと思った人は、その日はGitHubのアカウントを作る、次の日はリモートリポジトリを作ってみる、と1ステップごと進めてみるとよいのではないかな、と。

Claudeとゴーストの更新

伺か・伺的 [第1会場] Advent Calendar 2025 - Adventarの12日の記事です。

AnthropicのClaude.aiをゴーストの更新に活かしてみよう。

ゴーストの更新作業には何がある?

準備

  1. Claude を契約する
  2. Claude Code を使えるようにする

有料課金はちょっと、という方は無料プランでWeb上でお試ししてみるのもよいかと。

ちなみに私は即日、年間プランを契約しました。

ランダムトークやマウス反応の追加

Claudeに設定をまとめたテキストや既存のランダムトークを読み込んでもらう。

このゴーストがいいそうなセリフ何か、興味を持ちそうな話題は何か、と質問して返ってきた内容を参考にしてランダムトークやマウス反応を書く。

いいものあったら採用するのもあり。

質問

ユーザーとの日常会話だとどんな話をしそうだろうか

Claudeの返答

カシスなら、こんな感じの会話をしそうね:

日常的な観察から本質を問う 「また同じことで悩んでいるの? 考えるのと、決めるのは違うわよ」

相手の依存を挑発的に指摘 「私に答えを求めているうちは、何も変わらないわ。あなたが決めなさい」

些細な話題でも軽く哲学的 「今日は何もすることがない? それなら、本当に必要なものが何か考える良い機会じゃない」

矛盾を受け入れる余裕 「完璧な選択なんてないわ。どう転んでも後悔はするもの。ならせめて、自分で選んだことで後悔しなさい」

基本的には、相手が自分で考え、決めるよう促す言葉が多くなるはず。ただし冷たいだけじゃなく、相手の成長を願っての厳しさという感じね。

大変それらしい回答をしてくれた。

マウス反応も同じような方法で候補を出してくれたが、内容によってはセーフティに引っ掛かるかもしれない。

ランダムトークやマウス反応の誤字脱字、スクリプトミスの修正

VSCode の Claude Code に依頼してみる。

プロンプト

さくらスクリプトにミスがないか確認してください

結果

更新履歴から直近の更新されたファイルを対象にスクリプトにミスがないかチェックしてくれた。

ログの抜粋


ファイル: /Users/Eoh/workspace/Roche_Limit/ghost/master/rs_aitalk.dic

検出されたエラー: 7件

  1. 行番号 4314: エラー種別: 閉じ括弧 ] が欠落 問題のコード: \1\s[10… 修正後: \1\s[10]… 説明: \s[10 の後に ] が必要 実際の行: \1\s[10…\w4…\w4いや、\w4そういうのではないと僕は思ってる。\w9\n\n[half]/

(中略)


サマリー

総エラー数: 7件

エラー内訳: - 閉じ括弧 ] の欠落: 5件 (行 4314, 8947, 11680, 13525, 13527) - \w タグの誤記: 1件 (行 9494) - 引用符の誤用: 1件 (行 7813)

rs_bootend.dic: エラーなし

修正しますか?

エラーの内訳は正確だったのでそのまま修正を依頼。

自分では気がつけなかったスクリプトミスの修正がサクッとできた、と思ったら、一か所、末尾の/が抜けていた。

動作確認は必ずしよう。

雑感

さくらスクリプトは知らないだろう、と思ったらさらっとやってくれた。

ご存じの模様

よく使うさくらスクリプトの例を示したり、さくらスクリプトの仕様を読ませると精度はあげられそう。

表情一覧を読み込ませて、セリフと表情があってないものを教えて、と修正を頼むこともできるだろう。やや贅沢な使い方だけど、さくらスクリプトをつけてもらうこともできそう。

人工無能を生成AIと一緒に作る、となかなか面白い時代になってきた。