TL;DR(この記事で解決できること)
-
問題:Windows 7を別PCのSATA SSDから新しいNVMe SSDにクローンしたら、
STOP: 0x0000007B (INACCESSIBLE_BOOT_DEVICE)で起動しない -
根本原因:クローン元にNVMeドライバー(
stornvme.sys)が入っていなかった - 解決:WinPE上でオフラインのDISMとレジストリ編集で、NVMeドライバーを強制組み込み+CriticalDeviceDatabase手動登録
- 所要時間:丸1日(失敗試行含む)
本記事について(生成AIの活用)
本記事は、トラブル解決のプロセスと記事執筆の両方で 生成AI(Anthropic Claude Opus4.7)を活用 しています。
- 問題解決:DISMのエラー診断、レジストリ編集の手順設計、CriticalDeviceDatabaseへの登録パターン提案など、技術的な切り分けと対処方針の立案を生成AIと対話しながら進めました
- 記事執筆:本記事の構成・文章化も、上記やりとりのログをベースに生成AIにまとめてもらった上で、筆者が内容を確認・編集しています
実際にコマンドを実行し、結果を確認・判断したのは筆者ですが、トラブルシューティングのナビゲーション役としてAIが大きな役割を果たしました。同種のトラブルで困っている方への参考情報として、AIとの協働で得られた解決手順を公開します。
対象読者
- 古いSATAベースのWindows 7環境を、NVMe SSDにクローン移行しようとして起動しなくなった人
-
STOP: 0x0000007Bに遭遇してドライバー不一致を疑っている人 - サポート終了済みOSの延命措置をしたい人(自己責任で)
環境
| 項目 | 内容 |
|---|---|
| ノートPC | Sony VAIO VJS151C11N(VAIO S15) |
| CPU | Intel Core i5-6300HQ(Skylake世代) |
| チップセット | Intel HM170 |
| 換装SSD | ORICO O7000(M.2 2280 NVMe、MAP1602コントローラー) |
| 元SSD | SATA M.2 SSD |
| OS | Windows 7 SP1 Pro 日本語版 x64 |
| クローン元 | 別機種のお古VAIO(SATA HDD搭載) |
経緯サマリー
問題①:電源が全く入らない
- 原因:SSDのヒートシンクがPC内部に干渉してショート
- 解決:ヒートシンクを剥がして対応
問題②:SSDを挿すとBIOSにすら入れない
- 原因:上記と同じヒートシンク干渉の余波
- 解決:物理的干渉を完全排除
問題③:BIOSは通るがWindowsが起動しない → STOP: 0x0000007B
- 原因:クローン元PCはSATA接続だったため、WindowsイメージにNVMeドライバーが一切含まれていなかった
- 解決:本記事の主題。以下で詳述
前提知識
なぜ 0x0000007B が出るのか
Windowsの起動プロセスでは、OSが起動する前にブートローダーが最低限のストレージドライバーをロードしてWindowsパーティションを読みに行きます。このとき、対応するストレージコントローラーのドライバーが存在しないとブートできないのです。
SATAからNVMeへの変更は、Windowsから見れば「突然、知らないハードウェアで動き始めた」ことになります。起動中のOSならドライバーをインストールすればいいですが、起動前に必要なので、後からじゃ入れられない。これがクローン移行の壁です。
Windows 7とNVMeの関係
Windows 7はリリース当時(2009年)にNVMeが存在しなかったため、標準ではNVMeドライバー(stornvme.sys)を持ちません。後に以下のホットフィックスで追加されました:
- KB2990941:NVMeドライバー本体を追加
- KB3087873:KB2990941の安定性修正
これらが適用されていないWindows 7イメージは、NVMe SSDでは絶対に起動しません。
解決プロセス
全体の流れ
[1] 現状把握(何が足りないかを特定)
↓
[2] Windows 10インストールUSBでWinPE起動
↓
[3] KB2990941を別PCで入手 → USB経由でVAIOへ
↓
[4] MSUからCABを展開 → さらにドライバーファイルを展開
↓
[5] DISM /add-driver /forceunsigned でドライバー組み込み
↓
[6] レジストリ編集でstornvmeサービスとCriticalDeviceDatabaseを登録
↓
[7] 起動成功
使用ツール・準備物
- Windows 10インストールUSB(WinPE環境として使用)
- 作業用USBメモリ(パッチファイルとバッチファイル運搬用)
- 別PC(パッチのダウンロードとバッチファイル作成用)
詳細手順
STEP 1:WinPEで起動して現状確認
Windows 10 USBから起動 → 言語選択 → 「コンピューターを修復する」 → トラブルシューティング → コマンドプロンプト
diskpart
list disk
select disk 0
detail disk
出力のドライブ名に NVMe が含まれることを確認。
STEP 2:Windowsパーティションにドライブレターを割り当て
diskpart
select disk 0
select partition 3
assign letter=W
exit
(環境によりパーティション番号は異なる。Windowsパーティションは通常一番大きいもの)
STEP 3:NVMeドライバーの不在を確認
dir W:\Windows\System32\drivers\stornvme.sys
「ファイルが見つかりません」となればNVMeドライバー不在確定。
STEP 4:KB2990941をダウンロード(別PC)
Microsoft Update Catalogから入手:
https://www.catalog.update.microsoft.com/Search.aspx?q=KB2990941
Windows 6.1 for x64-based Systems を選択。ファイル名は Windows6.1-KB2990941-v3-x64.msu。
作業用USBメモリのルートに保存。
STEP 5:WinPEでMSUを多段展開
MSUはCABのラッパーなので、中身を取り出して使う。
mkdir W:\Scratch
mkdir W:\Temp
mkdir W:\Temp\KB2990941
expand -F:* D:\Windows6.1-KB2990941-v3-x64.msu W:\Temp\
expand -F:* W:\Temp\Windows6.1-KB2990941-v3-x64.cab W:\Temp\KB2990941\
(D: はUSBのドライブレター、環境により変わる)
STEP 6:DISMでドライバーを強制組み込み
dism /image:W:\ /scratchdir:W:\Scratch /add-driver /driver:W:\Temp\KB2990941\ /recurse /forceunsigned
ポイント:
-
/scratchdir:WinPEはRAM上の狭い作業領域で動くので、広い場所(Wドライブ)を明示指定。これが無いと「正常完了」と表示されつつ実は失敗する -
/forceunsigned:ホットフィックスの署名タイムスタンプが古く、WinPE環境ではエラー50(未署名判定)になるため強制オプションで通す -
/recurse:サブフォルダを再帰的に探索
STEP 7:ドライバーが配置されたか確認
dir W:\Windows\System32\drivers\stornvme.sys
ファイル情報が表示されればOK。
STEP 8:stornvmeサービスの状態確認
reg load HKLM\TEMP W:\Windows\System32\config\system
reg query "HKLM\TEMP\ControlSet001\services\stornvme" /v Start
Start = 0x0(ブート起動)になっていれば理想。DISMがINF通りにサービス登録してくれているはず。もし未登録や値が違う場合は手動で追加:
reg add "HKLM\TEMP\ControlSet001\services\stornvme" /v Start /t REG_DWORD /d 0 /f
reg add "HKLM\TEMP\ControlSet001\services\stornvme" /v Type /t REG_DWORD /d 1 /f
reg add "HKLM\TEMP\ControlSet001\services\stornvme" /v ErrorControl /t REG_DWORD /d 3 /f
reg add "HKLM\TEMP\ControlSet001\services\stornvme" /v ImagePath /t REG_EXPAND_SZ /d "system32\drivers\stornvme.sys" /f
reg add "HKLM\TEMP\ControlSet001\services\stornvme" /v Group /t REG_SZ /d "SCSI miniport" /f
ControlSet002 にも同内容を登録。
STEP 9:NVMeコントローラーのPnP ID取得
reg unload HKLM\TEMP
wmic path win32_pnpentity where "Service='stornvme'" get DeviceID,Name
または:
wmic path win32_pnpentity get DeviceID,Name | find "PCI\VEN"
PCI\VEN_XXXX&DEV_XXXX&SUBSYS_XXXXXXXX&REV_XX 形式の文字列を控える。
(今回のORICO O7000のケース:PCI\VEN_1E4B&DEV_1602&SUBSYS_16021E4B&REV_01 → MAXIO MAP1602コントローラー)
STEP 10:CriticalDeviceDatabaseに登録
ここが最重要ポイント。Windows起動時にPnP IDとサービスを紐付けるマスターテーブル。
バッチファイル nvme_fix.bat を別PCで作成してUSB経由でWinPEに持ち込む:
@echo off
reg load HKLM\TEMP W:\Windows\System32\config\system
rem ControlSet001 - 具体→汎用の順で4パターン登録
reg add "HKLM\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&subsys_16021e4b&rev_01" /v Service /t REG_SZ /d stornvme /f
reg add "HKLM\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&subsys_16021e4b&rev_01" /v ClassGUID /t REG_SZ /d "{4d36e97b-e325-11ce-bfc1-08002be10318}" /f
reg add "HKLM\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&subsys_16021e4b" /v Service /t REG_SZ /d stornvme /f
reg add "HKLM\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&subsys_16021e4b" /v ClassGUID /t REG_SZ /d "{4d36e97b-e325-11ce-bfc1-08002be10318}" /f
reg add "HKLM\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&cc_010802" /v Service /t REG_SZ /d stornvme /f
reg add "HKLM\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&cc_010802" /v ClassGUID /t REG_SZ /d "{4d36e97b-e325-11ce-bfc1-08002be10318}" /f
reg add "HKLM\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#cc_010802" /v Service /t REG_SZ /d stornvme /f
reg add "HKLM\TEMP\ControlSet001\Control\CriticalDeviceDatabase\pci#cc_010802" /v ClassGUID /t REG_SZ /d "{4d36e97b-e325-11ce-bfc1-08002be10318}" /f
rem ControlSet002 にも同じ内容を登録
reg add "HKLM\TEMP\ControlSet002\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&subsys_16021e4b&rev_01" /v Service /t REG_SZ /d stornvme /f
reg add "HKLM\TEMP\ControlSet002\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&subsys_16021e4b&rev_01" /v ClassGUID /t REG_SZ /d "{4d36e97b-e325-11ce-bfc1-08002be10318}" /f
reg add "HKLM\TEMP\ControlSet002\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&subsys_16021e4b" /v Service /t REG_SZ /d stornvme /f
reg add "HKLM\TEMP\ControlSet002\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&subsys_16021e4b" /v ClassGUID /t REG_SZ /d "{4d36e97b-e325-11ce-bfc1-08002be10318}" /f
reg add "HKLM\TEMP\ControlSet002\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&cc_010802" /v Service /t REG_SZ /d stornvme /f
reg add "HKLM\TEMP\ControlSet002\Control\CriticalDeviceDatabase\pci#ven_1e4b&dev_1602&cc_010802" /v ClassGUID /t REG_SZ /d "{4d36e97b-e325-11ce-bfc1-08002be10318}" /f
reg add "HKLM\TEMP\ControlSet002\Control\CriticalDeviceDatabase\pci#cc_010802" /v Service /t REG_SZ /d stornvme /f
reg add "HKLM\TEMP\ControlSet002\Control\CriticalDeviceDatabase\pci#cc_010802" /v ClassGUID /t REG_SZ /d "{4d36e97b-e325-11ce-bfc1-08002be10318}" /f
reg unload HKLM\TEMP
echo.
echo === 完了 ===
pause
注意点:
-
VEN_XXXX&DEV_XXXXの値は自分のNVMe SSDのPnP IDに置き換える - キー名の
&文字があるので、パス全体を必ずダブルクォートで囲む - 具体的なPnP ID → 汎用の
cc_010802(NVMeクラスコード)の順で4パターン登録するのがコツ。優先順位を考慮した冗長化
USBから実行:
D:
nvme_fix.bat
STEP 11:シャットダウンして起動テスト
wpeutil shutdown
USBを抜いて電源ON。
ハマりポイントと教訓
ハマり①:dism /add-package で 0x800f082f エラー
症状:unattend.xml 処理でコケる
原因:Windows 10のDISMでWindows 7のMSUを扱うときの相性問題
対策:/add-package(MSU単位)ではなく /add-driver(INF単位)に切り替える。CABをさらに展開してINFを直接指定。
ハマり②:DISMが「正常完了」と言うのにファイルが配置されない
症状:コマンド成功するが stornvme.sys が存在しない
原因:WinPEのスクラッチディレクトリ(作業領域)不足。警告は出るが処理自体は失敗している
対策:/scratchdir:W:\Scratch を必ず指定
ハマり③:ドライバー署名エラー(エラー50)
症状:/add-driver 実行時、LDRブランチ側のドライバーが「署名されていない」と拒否される
原因:WinPE環境でのタイムスタンプ署名検証の問題。GDRブランチは通るがLDRブランチは通らない
対策:/forceunsigned オプションで強制導入。GDRだけ入れば起動には十分
ハマり④:KB3087873には stornvme.inf が含まれていない
症状:KB2990941と同じ手順でKB3087873を適用しようとすると .inf が見つからない
原因:KB3087873は「ドライバーパッケージ」ではなく「バイナリ更新のみ」の構成
対策:KB3087873はオフライン適用せず、起動後にWindows Update経由で適用するか、手動で .sys ファイルをコピーする
ハマり⑤:WinPEのコマンドプロンプトにクリップボードが無い
症状:長いコマンドを手打ちすると必ずタイポする
対策:別PCでバッチファイルを作ってUSB経由で実行。これが一番楽で確実。
ハマり⑥:コマンドの全角スペース・バックスラッシュ
症状:日本語配列のキーボードで \ が ¥ になったり、スペースが全角になったりして DISM がエラー
対策:バッチファイルにすれば回避可能。手打ちするなら注意深く
教訓:そもそもこうなる前に
今回の教訓を一般化すると:
-
クローン前にNVMeドライバーを入れておく
- クローン元のWindows 7側で、事前にKB2990941を当てておけば回避できた
-
Macrium ReflectなどのUniversal Restore機能付きツールを使う
- 異なるハードウェアへの復元に対応したクローンツールなら、ドライバー修正を自動でやってくれる
-
そもそもWindows 7を延命するか考える
- サポート終了済みOSは、ネット接続すると危険
- Windows 10/11への移行を検討するか、完全オフライン運用に徹する
残課題と運用方針
決定事項
-
長期運用方針:オフライン専用機として運用
- サポート終了済みOSのネット接続リスクを回避するため、本機は完全オフラインで運用する
- 必要なファイル受け渡しはUSBメモリ経由で行う
残課題
- KB3087873の適用(安定性向上のため、いずれオフラインで手動適用予定)
- Convenience Rollup(KB3020369 + KB3125574)の適用検討
セキュリティに関する注意
Windows 7は2020年1月にサポートが終了しています。ネットに接続する場合、パッチ未対応の脆弱性を突かれるリスクが高く、以下の対策が最低限必要です:
- ネット接続を極力避ける(今回の移行もオフラインで完結できる)
- 接続する場合はファイアウォールで制限
- ブラウザやメーラーの使用は避け、必要な通信のみ許可
- 可能ならWindows 10/11への移行を検討
今回の対応では、本機は完全オフライン運用と決定しました。ネット接続によるリスクを回避し、必要なデータの受け渡しはUSBメモリ経由で行います。
生成AIの利用について
本記事の 問題解決プロセスおよび記事執筆の両方で、生成AI(Anthropic Claude)を活用しました。
具体的な使い方
- トラブルシューティング:エラーコードや状況を伝えると、AIが原因の仮説と次の手順を提示。それを実機で試して結果をフィードバックする、という対話形式で進めた
- コマンド生成:DISMコマンド、レジストリ編集コマンド、バッチファイルなど、長く正確性が要求されるコマンドはAIに生成させた
- 記事構成と執筆:このやり取りの記録を元に、AIが本記事の初稿を作成
AIの強みと限界
強みだった点:
- エラーコード(
0x0000007B、0x800f082f、エラー50など)の意味と典型的な原因を即座に提示 - スクラッチ領域不足、
/forceunsignedの必要性、CriticalDeviceDatabase登録の重要性など、複合要因の絡んだ問題を分解して提示してくれた - 失敗するたびに別アプローチをすぐ提案してくれた(DISMの
/add-packageがダメなら/add-driver、それもダメならMSU→CAB→ファイル展開、という階段状の代替案)
限界・注意点:
- AIの提案がすべて正しいわけではなく、実機での試行と結果のフィードバックが不可欠
- 例えば最初は「KB2990941が当たれば動く」と断言気味に出てきたが、実際にはCriticalDeviceDatabaseへの手動登録まで必要だった
- WinPE特有の制約(クリップボードなし、スクラッチ領域狭小など)も、実際にぶつかってからAIに伝えて回避策を引き出した
結論
AIは万能の解決者ではないが、優秀な技術相談相手として機能した。一人で資料を漁って試行錯誤するより、明らかに早く・正確にゴールに到達できた。同様のトラブルシューティングをする方には、AIとの対話形式での問題解決を強くおすすめします。
参考リンク
- Microsoft Update Catalog - KB2990941
- Microsoft Update Catalog - KB3087873
- Windows 7 サポートのお知らせ(Microsoft)
まとめ
| フェーズ | 状態 |
|---|---|
| ヒートシンク干渉 | ✅ 解決 |
| BIOS認識 | ✅ NVMeとして認識 |
| Windows 7起動 | ✅ 成功 |
| KB3087873 | ⏳ 保留中 |
Windows 7 + NVMe SSD の組み合わせは、標準ではブートできませんが、WinPE上でのドライバー手動組み込み+CriticalDeviceDatabase登録によって起動可能になります。クローン移行でコケた人の役に立てば。
同じ状況でハマった方がいたら、コメントください。
Tags: Windows7 NVMe SSD換装 VAIO トラブルシューティング DISM 0x0000007B