レガシーBIOS/MBR形式でインストールしたWindowsが起動しなくなった場合のうち、「ブート領域(BCD領域)に問題が発生しているケース」の復旧方法を紹介したページです。
Windows 10、8.1、7、いずれも以下の手順で復旧できます。
※はじめに
このページはMBR Windows専用です。
UEFIでインストールしている場合は以下ページの手順で復旧します。
UEFI/GPTインストールしたWindowsの「ブート領域」の復旧方法
※ブート領域が完全に破壊されていた場合の復旧は、GPT形式よりもMBR形式の方がはるかに面倒です。
注意事項
- Windowsのインストールメディア(DVDまたはUSB)またはシステム修復ディスクやUSB回復ドライブが必要です。
※以下、便宜上これを「インストールDVD」と表記しています。 - 復旧メディアはレガシーブートさせる必要があります。(UEFIでブートしない)
- Windows 10/8.1の場合、インストールDVDを利用する事をお勧めします。
※システム修復ディスクやUSB回復ドライブでは、MBR形式でブートできない場合があります。 - 紹介している手順は、マルチブート構成のPCを想定していません。
- 難しい手順なので自己責任で。
注意事項ここまで。以下、実際の手順です。
簡単な方法から順に並んでいます。
まずは「スタートアップ修復」や「自動修復」に任せる。
上手く修復できていない、Windowsが起動しない場合は、まずは スタートアップ修復を2~3回ほど繰り返してみる
→ 重要:Windowsが起動しなくなった時の「スタートアップ修復」は2~3回行う
復旧しない場合は以下のような本格的な復旧作業を行う必要があります。
復旧前の準備段階 (ドライブのチェック)
ドライブレターやパーティションナンバーのチェックを行う
インストールDVDのコマンドプロンプトから以下を入力する。
diskpart
list volume
list disk
select disk X
list partition
select partition X
active
※全部終わったら「exit」
Windowsがインストールされたドライブ(通常Cドライブ)に割り当てられたドライブレター、ボリューム、パーティション番号を覚えておく。MBRの場合、アクティブ化を忘れずに。
※参考リンク: ASCII.jp:Windowsを起動したままでOK! HDDからSSDに換装して爆速化 (2/2)|何倍も速度アップ! 最新周辺機器換装特集
チェックポイント
- 上図の場合、WindowsをインストールしたボリュームはDドライブに割り当てられている。
- 「select disk X」はWindowsがインストールされたディスクを選択する。この場合、「select disk 0」
- 「select partition X」もWindowsもインストールされたパーティションを選択する。この場合、「select partition 2」
- ※復旧に必要なボリュームにドライブレターが割り当てられていなかった場合
- 「select disk X」
「assign letter=b:」
といった感じで入力し、ドライブレターを割り振る。
- 「select disk X」
上記は準備段階。終わったら以下に進む。
余談:自分用メモ
- 読み飛ばしてOK
- MBRはシステムがアクティブになっていないと起動できないので、「active」は念のため実行している。はじめは Windowsがどのドライブに割り当てられているかのチェックだけでも良いかも?
- 昔 (XPの頃?)は、アクティブなパーティションには*印が付いていたように記憶しているが、今回は*印が見当たらない。最近のDISKPARTではアクティブなドライブの確認はできないのかな?
- と思ったら、active後もう一度「list partition」したら*印が出てきた。
▲クリックで拡大 - という事は、最初はどのパーティションもアクティブ化されていなかった、という事かな?最近のMBR Windows はシステムをアクティブ化していなくても起動するのかな?
と思ったら、PC再起動したらアクティブマークは消えた。 - どうやら平常時は気にしないでOKらしい?
復旧前の準備段階 (ドライブのチェック) ここまで。
ここから下が実際の復旧手順です。
実際の復旧手順
bootrecコマンドで復旧する
前項DISKPARTでのチェックから引き続き、インストールDVDのコマンドプロンプトで以下を入力する。
bootrec /fixmbr
bootrec /fixboot
bootrec /Rebuildbcd
上から順に試す。
すべて「操作は正常に終了しました」系のメッセージが出ていれば大丈夫。
補足: 実行時のスクリーンショットその1
▲クリックで拡大
「Windows の インストールとして認識された合計数: 1」となればOK。
※補足
Windows 10 バージョン1703 (Creators Update)の場合、「0」になっても無視してOKかも。なぜか「Windows の インストールとして認識された合計数: 0」でも普通に起動できる?
補足: 実行時のスクリーンショットその2
▲クリックで拡大
Windowsのパーティションをアクティブ化したら bootrec /Rebuildbcd コマンドでOSを認識できるようになった。
「Windows の インストールとして認識された合計数: 1」
「インストールをブート一覧に追加しますか?」
と表示されたら、「Y」または「A」を入力する。
大抵は、ここまでの手順でWindowsは起動するようになる。
起動できたらこのページ内の最後の項目を実行する。
まだ起動しない場合は以下。
「bootrec」コマンドが正常に終了した、でもWindowsが起動しない場合
インストールDVDのコマンドプロンプトから以下を入力する
bcdboot X:\Windows /l ja-JP /s X: /f ALL
※赤文字「X:」の部分はWindowsがインストールされたドライブを入力する。
※回復パーティションが英語で起動してしまう場合もこの手順が有効。
Windowsが起動できたらこのページ内の最後の項目を実行する。
ブート領域の破損が軽微な場合はここまでの手順でWindowsは起動できるようになるはず。
まだ起動しない場合は以下。
ドライブのブートコードを書き換える
この辺から冒険です。
インストールDVDのコマンドプロンプトから以下を入力する
「bootsect /nt60 all /force」
※注意:
このコマンドは指定したドライブのブートコードを書き換えます
赤文字「all」は全てのドライブに対してブートコードを更新します。
マルチブート構成にしている場合や、別ドライブに以前インストールしたOSの残骸がある場合、さらにPCの調子が悪くなる恐れがあります。このページの手順を最初からやり直す、または次項「bcdの削除と再作成」まで行う必要が出るケースがあります。
「bootsect /nt60 all /force」実行時のスクリーンショット
▲クリックで拡大
正常起動できるか試してみる。
Windowsが起動できたらこのページ内の最後の項目を実行する。
まだ起動しない場合は以下。
bcdの削除と再作成を行う
以下、bcdの削除と再作成を紹介した項目です。
GPTと比較すると、とんでもなく面倒臭いです。
注意
- 削除するのは Windowsがインストールされたドライブ (通常Cドライブ) に保存されたBCDファイルです。(通常起動時は C:\boot\bcd のファイルです)
- 次項の赤文字「X:」や「Windows 10」の部分はは自身のPC環境に合わせて入力します。
- C:\boot\bcd はシステムファイル&隠しファイルとなっています。ファイルの属性を解除しなければ削除できません。
インストールDVDのコマンドプロンプトから以下を入力する
cd /d X:\boot ・・・・Windows フォルダのあるドライブを指定
attrib -H -S bcd ・・・・隠し&システム属性解除
del X:\boot\bcd ・・・・bcd削除
md X:\boot ・・・・bootフォルダ作成(既にある場合はエラーが出る)
bcdedit /createstore X:\boot\bcd.temp
bcdedit /store X:\boot\bcd.temp /create {bootmgr} /d "Windows Boot Manager"
bcdedit /import X:\boot\bcd.temp
bcdedit /set {bootmgr} device partition=X:
bcdedit /set timeout 10 (デフォルトは30秒。実行できないかも)
del C:\boot\bcd.temp
bcdedit /create /d "Windows 10" /application osloader
※ここでUUIDが表示されるので、コピーする
bcdedit /set {コピーしたUUID} device partition=X:
bcdedit /set {コピーしたUUID} osdevice partition=X:
bcdedit /set {コピーしたUUID} path \Windows\System32\winload.exe
bcdedit /set {コピーしたUUID} systemroot \Windows
bcdedit /displayorder {コピーしたUUID}
※BCD再作成ここまで。
以下コマンドをやりなおす
bootrec /fixmbr
bootrec /fixboot
bootrec /Rebuildbcd
bcdboot X:\Windows /l ja-JP /s X: /f ALL
Windowsが起動できたらbcdファイルの隠しファイル属性&システム属性を復活させる
インストールDVDのコマンドプロンプトで以下を実行
cd /d X:\boot
attrib +H +S bcd
このページ内の最後の項目も忘れず実行する。
以上の手順をすべて行うと、Windowsのブート領域の修復はほぼやり尽くした事になる。
ここまでやってWindowsが回復しない場合、原因は別の所にあると考えたほうが良い。
その他の方法
システム修復ディスクのbootmgr や \boot\bcdを手動でコピーしてもwin7が正常に起動した、という報告もある。
参考リンク
win7 システムの修復/win7でMBRやbootmgr,\boot\bcdを壊すとどのようになるか、システム修復できるか、についてテストしてみた
重要:復旧が終わった後
「スタートアップ修復」と「Windows回復パーティションの再認識」を忘れずに行っておきます。
スタートアップ修復は2回行う
サイト内関連ページ
Windowsが起動しなくなった時の「スタートアップ修復」は2~3回行う
ブート領域に修復をかけた後は、念のためスタートアップ修復を複数回実行しておきます。(MBRの場合は不要かも?)
Windows回復パーティションを再認識させる
ここまでの手順を実行すると、Windows OSから回復パーティションが認識出来なくなっています。(「del bcd」や「bootrec /Rebuildbcd」でBCDを再作成すると発生します。)
以下の手順でWindows回復パーティションを有効にします。
Windows回復パーティションを再認識させる手順
- Windowsを起動し、コマンドプロンプト(管理者)で以下のコマンドを入力します
- 入力するコマンド
reagentc /info
reagentc /enable
reagentc /info - 実際にコマンドを入力した画面
▲クリックで拡大
Windows REの状態が「Enabled」になっていれば、回復パーティションは正常に認識されWindows回復環境が作動するようになっています。
このページは以上です。