先日、メインPCのSSDを新しいSSDに交換するべくボリュームをクローンして元の場所に差し替えたりしたのですが、その時BCD関係で詰まったのでここにその対処法を書きます。
BCDとは?使い方は?調べてみた!!
BCD(Boot Configuration Data、ブート構成データ)は、Windowsオペレーティングシステムのブートプロセスを管理する重要なデータストアのことです。
BCDには、起動するOS、ブートローダーの場所、パーティション情報などが保存されています。
BCDの構成要素
BCDは、Windowsブートマネージャー(bootmgr
)によって読み込まれ、次のような情報をbootmgrに。
- デバイス情報
- システムパーティションやOSがインストールされているパーティションの情報。
- ブートローダー設定
- 使用するブートローダー(通常は
winload.exe
)。
- 使用するブートローダー(通常は
- OSブートエントリー
- 起動可能なOSのエントリー情報。
- オプション
- デバッグモードやセーフモード、メモリ診断などの設定。
Windowsのブートプロセス
Windowsのブートプロセスは、MBRやUEFIによって若干異なりますが、大まかな流れは以下の通りです。
- BIOSがストレージデバイスを初期化し、ブートローダーを読み込む
bootmgr
が起動し、BCDを解析して次に実行するプログラム(通常はwinload.exe
)を決定
BCDの情報をもとにC:\Windowsフォルダを特定するのでこれが破損しているとまずいわけです。
BCDに問題があると何がまずいのか
いかがでしたか?(殴
要するに、BCDが爆散するとWindowsを構成するファイル群、特にwinload.exeの場所がわからなくなって起動できなくなります。
この時、ブルスクと言っていいのか分からないブルスクが出ます。
若干これ感がしますね
全部死の青い画面ですが表示されているものはそれぞれ異なります。
BCDストアが破損した時の修復方法
このようにBCDが破損してしまったら大変なことになります。
では、BCDが破損すると泣きながら再インストールするしかないのか。そういうわけではありません。
bootrec /fixmbr
bootsect /nt60 sys
bootrec /fixboot
bootrec /rebuildbcd
上の4つのコマンドを回復環境で順番に実行していけば、ブートレコード、ブートセクタ、BCDストアに起因するトラブルはほぼ解決します。
解説:
bootrec /fixmbr
- 新しいマスターブートレコードをシステムドライブに書き込み。
- MEMZウイルスはここを破損させる
bootsect /nt60 sys
- システムドライブのMBR領域のブートセクタのブートコードをNT6.0以降用(要するにNTLDRじゃなくてWindows Boot Manager用)の適切なもので上書きする
bootrec /fixboot
- ブートセクタ全体を新しいブートセクタで置換して修復します
- このコマンドは上のコマンドを実行した後じゃないと何故かアクセス拒否になって実行できない
bootrec /rebuildbcd
- BCDエディタを再構築し、システム上のすべてのWindowsインストールを検知してそれを新しいBCDストアに追加する
これが実行できればいいんですが、上手くはいかないときがあります。
bootrec /rebuildbcdがうまくいかないときは
見つかってるじゃん!と思いますが、これは失敗例です。
これはSSDクローン後など様々な場面で見ることができます。
このような時は以下の手順を踏みます。
diskpart
lis vol ←どのドライブにWindowsがインストールされているのか特定 ex)C:
exit
c: ←Windowsがインストールされているドライブに移動
bcdboot c:¥windows /l ja-jp /s c: ←本題
bootrec /rebuildbcd ←再挑戦「操作は正常に終了しました」と出たら勝ち
以上の手続きを踏むことでBCDストアも無事に修復されWindowsが起動できるようになります。
最後に
ブート系の修復はこれができれば多分怖いものはないです。
MEMZなどのMBR破壊系ジョークウイルスの修復にも活かせます。
コメント