#はじめに
SSD換装したWindows8.1のPCを使用していて、或る日突然Windowsが起動しなくなった。結果的にSSD換装前の状態に戻してしまったが、事前に分かっていればほとんど被害がなかったはずなので簡単なメモを残す。
#環境
・ASUS X200M
・Windows 8.1
・Transcend SSD370 (換装したSSD)
#何が起きたか
Windows Updateを実行したタイミングでPCが不安定になり、OSシャットダウンも完全に終わらない状態になった。強制終了後に起動したところ(例によって)CHKDSKが走り、その後にブルースクリーンとなった。(エラーコードは0xc0000225で、途中でBCDを修正して0xc0000001に変わった。)
#問題発生の原因
・3か月前にPCの内臓ディスクをHDDからSSDに換装した。
・データの移行はEaseUS Todo Backup 7.5(無償版)を使用して、ディスクを丸ごと(USB接続したSSDに)コピーしてSSD換装したところ無事OSが起動したので問題がないと思っていた。
・この時点で実はBCDの情報がきちんと移行されておらず、最低限起動可能な環境にはなっていたものの、Recovery用のパーティションが設定できていなかったと考えられる。
⇒このために復元ポイントの自動作成がされない状態になっており、Windows Update等で何か問題が起きても戻せない状態となっていた。
※結果的にSSD自体には何も問題がなかった。
#今回の対応策
・SSDを一旦換装前のHDDに戻してOSを起動し、SSDをUSBで接続したところ問題なく読めることを確認した。ついでに\Windows\System32\Srt\SrtTrail.txtの内容を確認したところWindowUpdate後にOSが起動できない状態になっていた。
・正常に起動している状態でBCDの状態をファイルに保存(bcdedit /enum all)。これをSSD上に格納した。
・回復ドライブを作っていなかったので、ここで作成した。
・起動できなくなったSSDに一旦戻して、起動エラーが出る状態に戻す。そして、回復ドライブから起動してコマンドプロンプトを起動する。(やり方は色々なページに書かれているので別途参照のこと。)
・この状態でbcdedit /enum allの出力をして、上記正常起動の結果と見比べて、unknownとなっている部分をすべて修正した。(bcdedit /set 何とか)
※ひょっとすると正常起動した環境からエキスポート(bcdedit /export)した情報をそのままインポート(bcdedit /import)できるかもしれない。
・ここまできて、結局Windows Updateの失敗を元に戻せないことがわかったので、CドライブをEaseUS Todo Backupで再コピーした。
#問題点
1.BCD設定が移行されていなかった。(復旧パーティションが見えない状態など。)
2.このためWindowsの復旧ポイントも作られていなかった。
#本来の姿
今回は後の祭りだが、本来は以下のようにするべきだった。
・SSD換装時にデータの移行が終わり、OS起動が起動で来たらbcdedit /enum allの結果を見て、移行前と差異がないか確認をする。もしも差異があれば(換装前の環境でbcdedit /exportしたものを)インポートしておく。
・Windows Update時に復元ポイントが自動的に取られるようにするために、Cドライブのシステムの保護(コントロール パネル→システムとセキュリティ→システム→システムの保護)が有効か確認する。無効であれば「構成」から有効にしておく。